算法的乐趣
(副标题):无 ;
(作者): 王晓华 ;
内容简介:
前言
程序员与算法,这是一个永恒的话题,无论在哪个论坛,只要出现此类主题的帖子,一定会看到两种针锋相对的观点的“激烈碰撞”。其实泡过论坛的人都知道,两种观点“激烈辩论”的惨烈程度往往可以上升到互相问候先人的高度,即使是技术论坛也不例外。在准备此书之前,我在博客的“算法系列”专栏已经陆陆续续地写了有一年多的时间,在此期间,不断有读者问我:“程序员必须会算法吗?”我实在不想让我的博客成为喷满各种口水的是非之地,所以一般不正面回答,只是笼统地说些“各行各业情况都不尽相同”之类的话,避免站队。
程序员对算法通常怀有复杂的感情,算法很重要是大家的共识,但是是否每个程序员都必须学算法是主要的分歧点。本书是想重新定义程序员对算法的理解,并不想通过说教的方式给出到底是学还是不学的结论。很多人可能觉得像人工智能、视频与音频处理以及数据搜索与挖掘这样高大上的内容才能称为算法,往往觉得算法深不可测。但是这些其实都不是具体的算法,而是一系列算法的集合,这里面既有各种大名鼎鼎的算法,比如神经网络、遗传算法、离散傅里叶变换算法以及各种插值算法,也有不起眼的排序和概率计算的算法。你必须深入地了解它们,才会领略到算法的实质——解决问题。忽视这一点,片面地或抽象地理解算法,就会使对算法的理解变得形而上学。在我的博客里就有人留言质疑:“穷举也算是算法?”且不说搜索和枚举是算法的基础设计模式之一,单就那么多的NPC问题(比如著名的汉密尔顿回路问题,至今还没有找到多项式时间的算法),实际上,从只有穷举算法和其他随机搜索算法才能求解这一点看,任何人都不能小看它。
狭隘的算法定义会将自己局限在一个小角落里,从而错过了整个色彩缤纷的算法世界。本书将带你开启一段算法之旅,在这里,你将会看到各种构造算法的基础方法,比如贪婪法、分治法、动态规划法,等等,也可以通过一个个示例看到如何应用这些算法来解决实际问题。通过对“爱因斯
目录预览:
算法的乐趣 (图灵原创)
序一
序二
序三
致谢
前言
第 1 章 程序员与算法
1.1 什么是算法
1.2 程序员必须要会算法吗
1.2.1 一个队列引发的惨案
1.2.2 我的第一个算法
1.3 算法的乐趣在哪里
1.4 算法与代码
1.5 总结
1.6 参考资料
第 2 章 算法设计的基础
2.1 程序的基本结构
2.1.1 顺序执行
2.1.2 循环结构
2.1.3 分支和跳转结构
........