信息学竞赛宝典:动态规划
上QQ阅读APP看书,第一时间看更新

为什么要学习算法?

经常有人说:“我不学算法也照样可以通过编程开发软件。”那么,为什么还要学习算法呢?

首先,算法(algorithm)一词源于算术(algorism),具体地说,算法是一个由已知推求未知的运算过程。后来,人们把它推广到一般过程,即把进行某一工作的方法和步骤称为算法。一个程序要完成一个任务,其背后大多会涉及算法的实现,算法的优劣直接决定了程序的优劣。因此,算法是程序的“灵魂”。学好了算法,就能够设计出更加优异的软件,并以非常有效的方式实现复杂的功能。例如,要设计一个具有较强人工智能的人机对弈棋类游戏,程序员没有深厚的算法功底是根本不可能实现的。

其次,算法是对事物本质的数学抽象,是初等数学、高等数学、线性代数、计算几何、离散数学、概率论、数理统计和计算方法等知识的具体运用。真正懂计算机的人(不是“编程匠”)在数学上有相当高的造诣,他们既能用科学家的严谨思维来求证问题,也能用工程师的务实手段来解决问题——这种思维和手段的最佳演绎之一就是“算法”。学习算法能锻炼我们的思维,使思维变得更清晰、更有逻辑、更有深度和广度。学习算法更是培养逻辑推理能力的非常好的方法之一。因此,学习算法,其意义不仅在于算法本身,还会对我们日后的学习、生活和思维方式产生深远的影响。

最后,学习算法本身很有趣味。所谓“技术做到极致就是艺术”,当一个人真正沉浸到算法研究中时,他会感受到精妙绝伦的算法的艺术之美,也会被它巧夺天工的构思深深震撼,并从中体会到一种不可言喻的美感和愉悦感。当然,算法的“优雅”与“精巧”虽然吸引人,却也令很多人望而生畏。事实证明,对很多人来说,学习算法是一件非常有难度的事情。