学习算法分析与设计需要那些基础(是否需要学习离散数学和线性代数)

来源:百度知道 编辑:UC知道 时间:2024/05/24 01:04:01

算法分析与设计,目前国内本科生和硕士生的教材好像都是从国外翻译过来的。听起来挺复杂的样子,如果简单地掌握和运用还是不难的,大部分内容在数据结构中都涉及过,实际编程中也运用比较多,难的在于算法的理论研究,如21世纪的七大难题之一的NP问题就是算法问题(涉及逻辑可满足性问题)。

简单地讲需要的基础有以下几类:
1、基础类(相对一般本科生而言):(1)把数据结构学好了算法就不难的,而数据结构其实就是图论的运用,如果是非数学专业的学生可以看离散数学中的图论部分。(2)算法分析设计时间和空间复杂度的计算,常用的还是毛泽东的战略思想——以空间换取时间。所以要学会简单的数量级运算,涉及部分代数式和数论的知识。只要简单掌握运算就可以了,不必深究。
2、提高型(研究生水平):图论、组合数学、数理逻辑学要专门学习,可以采用数学系本科生的图论、组合数学、数理逻辑学等专业课的教材。其中组合数学中的组合设计在一定程度上和算法设计有异曲同工之处。
3、研究型(专业研究):这主要看自己的研究方向了,如果研究能力强的话可以在很短时间内可以把需要遇到的数学知识搞懂,没有现成的固定模式。其中如研究NP问题,需要非常精深的逻辑学知识和数论基础。但不管哪个研究方向,数学的缜密思维和推理能力都是必备的,这不是一朝一夕可以练就的,需要长时间的锻炼。

以上仅个人一点点体会,仅供参考。

得看你学什么程度的了。如果仅仅是学习和应用基本的排序、人工搜索等的话,高中数学足够了。但是如果你要深入了解信息处理的原理和算法评估(如快速排序的平均情况)等,不仅需要高等数学的基础(如果学积分算法等的话,高数不仅要有基础,还要有一定水平,甚至要数学分析的水平),根据情况除离散数学和线性代数外,还要学组合数学等。
不过只是要达到普通理科生“算法与数据结构”课程的要求的话,不需要这些。

如果是基础的话,可以不学。因为都是些容易理解得
但是深入得话必学有离散得理论知识