怎样学习算法?

这个问题很广泛,但学习的唯一方法当然就是背题了(一定要背,别以为你理解了就懂了),得看你的付出了。但不要自大的认为你能悟出别人几年总结的东西!比如我原来完全独立写碰撞检测算法,但后来参考了专业书籍显然我发现自己的东西问题很多,而我所有的思路都是别人以经想到,而因为自己在框架方面的错误,导致了很多致命问题。算法水平和数学能力直接相关,如果想提高数学水平请参考命题人讲座八本书,不过每本三百多页,而且考虑到拖延症普通人可能需要两年才可能有一个基本脉络。而且,想要弄懂《代数不等式》这本书,你必须自己写个配方程序,我用电脑穷举发现前面有一题是错误的,而且后面给出的三角形面积公式是错误的,这本书有很多问题,又比如xy+yz+zx=1这类的化简方法很魔性,有些题可以直接用柯西不等式搞定等,建议不要看。在命题人讲座图论初期部分就会讲到置换群,深探和广探,不过想学群论还是推荐北大物理系的那本书,结合组合数学后期一部分的polya计数法(如果不看完组合数学,群论第一章的推导就无法形象化,你无法理解)。当然我的学习目标是方程化简和简化搜索方面的算法,这方面占大头,如果想学物理模拟,得参考大量几何学的书,而且要完全刷完《挑战程序设计竞赛》这本书,反正除了看书别无他法,没有捷径。一切都只是毅力+天分,而且没有游戏一样的奖励机致,你得自己设计一个目标。当然如果你设计的是一学期从贪食蛇写出愤怒的小鸟,这不是合理的。


    推荐阅读