学过数据结构的对这个应该都不会感到陌生,但是乍一看原来是数学,然而事实就是如此。二分法的数学源头就是这个。
还有前缀和的
我们这里所说的前缀和其实就是我们在高中学的数列中的Sn(前n项和)
,只是我们这里需要将S1 , S2 , S3 , S4 …… Sn当作一个新的数组。
还有这个当年十分惊艳的算法
其实就是牛顿迭代法。
比大小就更加是了。冒泡排序 —— 两两比较。如果你比过大小你应该会想到的。就是找最大的数字,以一个为最大的,然后和别的数字比,有大的出现就换,没有继续下去。
动态规划则是最优化方面的问题。
计算机本来就是一种工具,你还原回它的本质它也没有什么如同神明一般的存在。毕竟现阶段距离AGI还十分遥远,AI的自我意识是哲学问题了。况且就连AI的算法都是基于数学原理的。
数学作为一种对自然事物或者事物之间关系的一种抽象,它已经成为我们描述自然的最佳语言。它代表的是一种逻辑必然。无论你怎么思考,只要你思考了事物之间的关系和数字那你就算不学数学,自己闭门造车发明新的符号,最终也会和数学不期而遇。就如同哲学一般,数学已经是人类自身对几乎所有的可能性的思考。是人类逻辑思考的必然。
计算机发明的初衷就是为了减少人类计算的工作量。它是人类思维的结晶。它无论怎么被人类推经都永远离不开数学。对算法的更新也离不开数学和数学产生的一大堆优化学科。你可说计算机就是大杂烩,是的我们把所有问题收集起来(数学四色问题、公式检验)用计算机来完成。
所以要学好算法绝对不是让你去设计算法。算法牵扯到了数学、优化理论、博弈论、概率学...但是如果你要设计算法找到更好的解法,你就不得不博览群书。就如同Dijkstra、图灵、赫伯特西蒙、高德纳...等计算机先贤一样,了解数学和数学所衍生的一系列与数学决策有关的学科。