1.
作者的话
(
选自序言
)
大多数我打过交道的专业程序员都不能胜任算法设计的任务,实在让人
遗憾,因为算法设计的技巧毕竟是计算机科学的核心技术之一。为一个现实的问题设计正确,高效,和可以实现的算法不是件容易事,因为一个成功的算法设计人员
需要掌握如下两种不同类别的知识:
技巧 -- 一个好的算法设计人员理解一些基本的算法设计技巧,包括数据结构,动态规划,深度优先搜索,回溯,以及启发式设计。不过也许最重要的技术还是建模 -- 把纷繁复杂的现实应用抽象为适合用算法解决的 简洁问题的艺术。
资源 -- 好的算法设计者站在巨人的肩上。他们不会花费精力为每一个问题从 头设计算法,而是设法找出哪些已知的东西可用以解决待解的问题;他们也 不会从头实现常见的算法,而是找出现成的代码作为出发点。
技巧 -- 一个好的算法设计人员理解一些基本的算法设计技巧,包括数据结构,动态规划,深度优先搜索,回溯,以及启发式设计。不过也许最重要的技术还是建模 -- 把纷繁复杂的现实应用抽象为适合用算法解决的 简洁问题的艺术。
资源 -- 好的算法设计者站在巨人的肩上。他们不会花费精力为每一个问题从 头设计算法,而是设法找出哪些已知的东西可用以解决待解的问题;他们也 不会从头实现常见的算法,而是找出现成的代码作为出发点。