数学与算法- 摘自水木

算法研究的本质特点之一是面向具体问题,有问题才有了对应的算法。 

而数学的特点之一是系统性和完整性,不是为了某个具体的问题才去研究什么,反而经常是早已把某个问题研究透彻了才发现它的应用。 


知识学习有3个阶段,第一阶段只是知道字面的意思, 
第二阶段是理解,第三阶段是领悟。 
前两个阶段只是被动学习别人创造的东西,第三个阶段是你可以创造类似的东西。 
  
举点例子吧。比如排序方法有很多,冒泡插入快排等等。理解了本质之后就会发现这些排 
序都是基于两两比较的排序,早期的排序方法其实就来源于生活中的现象,所以取得名字 
都很生活化,例如“冒泡”和“插入”。而到了后期,比如快排,堆排序,这些方法很明显源 
于理论的指导。比如基于两两比较的排序复杂度是不可能小于nlogn的这个证明。而桶排 
序什么的就是基于非两两比较方法的排序。 
  
比如图的邻接矩阵表示法,这个表示法十分的简单显然。但基于这个表示法就引伸出十字 
链表这样的新的方法。 
  
比如各种搜索,广度优先、深度优先就是最简单最显然的搜索方法(俗称穷举)。启发搜 
索,A*,A+,贪心,这些都是基于最简单方法的剪支。动态规划则是在某些情况下,运 
用cache去避免重复的计算,从而达到剪支的速度,但又没有剪支之后减少搜索空间导致 
不一定能得到最优节的缺点。 
  
所以,如果你能达到领悟的高度,就会发现算法本身也是逐层演进的,虽然这个过程并不 
是包含严谨的数学推倒,所以并不是这么的显然。 
  

先去读一下可计算型和计算复杂性,那里面的东西比较精炼,有算法的数学本质。 
快排是技巧级别的东西。。。堆排序和快排之间的关系是应用级别的东西。 


我也有这种困惑。 
比如排序,可以证明复杂度最好是多少? 
但是一个算法的提出,却不是推倒出来的。 
比如快排,还有一些图算法,感觉这些东西想出来完全靠一些天才的灵光一闪。
算法就不是严密推演出来的,个人感觉只是牛人的天才想法总结在一起而已 


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值