王春平 & 李曲 & 程振波
Language: Chinese
Douban ISBN new_douban
2018 TP301.6 北京 思维 教材 电子计算机 程序设计 算法 算法分析 算法设计 编程 高等学校
Publisher: 清华大学出版社
Published: Feb 14, 2018
算法设计与分析是计算机专业⾮常重要的⼀门基础课程,它不仅是诸多计
算机专业课程的基础,也是许多信息科技类公司在招聘程序员时,笔试与⾯试
重点考核的内容。算法设计与分析已经有了诸多经典的著作,⽐如美国⿇省理
⼯(MIT)⼏位教授合著的《算法导论》1等。然⽽,这些经典著作当作教材使
⽤时,都会存在对内容进⾏适当裁剪,以便它更适合48 或者32 个学时教学的
问题。我们写本书的⽬的就是对初等算法内容进⾏合理的编排,让初学者能很
快地掌握解决计算问题的常⽤算法,以及分析算法效率的⽅法。
本书算法均采⽤Python 语⾔进⾏描述,Python 是⼀类解释性语⾔,其语法
简单直观,有⼀定程序设计基础的学⽣可以很快⼊门。Python 语法简单并不意
味着功能弱,它在科学计算、Web 应⽤等诸多领域都有着⼴泛的应⽤。国外知
名的⾼校,如⿇省理⼯,也在算法设计课中采⽤Python 语⾔描述。与采⽤伪代
码描述算法的书⽐较⽽⾔,采⽤Python 描述算法能有直接可运⾏的代码,从⽽
可以帮助读者更易于去揣摩算法实现的技巧。
计算机算法不仅涉及诸多理论,还有各种技术细节。⽐如介绍随机算法时,
有些执⾏时间的分析就需要较多的概率论知识;⽽算法实现技术细节则不仅关
注如何存储数据,甚⾄对执⾏算法的硬件环境也会考虑在内。本书的内容安排
则希望在算法的数学分析和实现之间取得⼀个合理的平衡。⾸先,在分析算法
效率时尽量避免过深的数学证明,但关键步骤依然会给出直观的解释。其次,在
实现算法时本书尽量利⽤Python 内已有的数据结构和库函数,从⽽简化算法实现的技术难度。
如果将要处理的数据、问题看作是⾷材,那么算法就是将⾷材“转化”成各种
令⼈垂诞美⾷的过程。中国菜肴到处都是充满想象⼒的转化,将原本普通的⾷
材(⼤⾖和糯⽶等)转化为营养和美味的⾷物(⾖腐、酒酿和酱料等等)。本书的
主线就是转化,它不仅有问题的转化,也有⽅法的转化(如图1所⽰)。通过问题
的转化将问题“化繁为简”,通过⽅法的转化以便融会贯通各种算法设计的技巧。
由于计算机已经成为现代科技、⽣活不可缺少的⼯具。因此,解决计算问
题的算法涉及的内容可以说包罗万象,从简单的排序和查找到复杂的语⾳识别、
⽂字翻译,甚⾄游戏等等都离不开算法。本书内容涵盖了⼤部分的经典算法,主
要内容包括递归算法、分治算法、排序算法、动态规划算法、图遍历算法、最⼤
流算法、随机算法和计算问题分类。
Description:
算法设计与分析是计算机专业⾮常重要的⼀门基础课程,它不仅是诸多计
算机专业课程的基础,也是许多信息科技类公司在招聘程序员时,笔试与⾯试
重点考核的内容。算法设计与分析已经有了诸多经典的著作,⽐如美国⿇省理
⼯(MIT)⼏位教授合著的《算法导论》1等。然⽽,这些经典著作当作教材使
⽤时,都会存在对内容进⾏适当裁剪,以便它更适合48 或者32 个学时教学的
问题。我们写本书的⽬的就是对初等算法内容进⾏合理的编排,让初学者能很
快地掌握解决计算问题的常⽤算法,以及分析算法效率的⽅法。
本书算法均采⽤Python 语⾔进⾏描述,Python 是⼀类解释性语⾔,其语法
简单直观,有⼀定程序设计基础的学⽣可以很快⼊门。Python 语法简单并不意
味着功能弱,它在科学计算、Web 应⽤等诸多领域都有着⼴泛的应⽤。国外知
名的⾼校,如⿇省理⼯,也在算法设计课中采⽤Python 语⾔描述。与采⽤伪代
码描述算法的书⽐较⽽⾔,采⽤Python 描述算法能有直接可运⾏的代码,从⽽
可以帮助读者更易于去揣摩算法实现的技巧。
计算机算法不仅涉及诸多理论,还有各种技术细节。⽐如介绍随机算法时,
有些执⾏时间的分析就需要较多的概率论知识;⽽算法实现技术细节则不仅关
注如何存储数据,甚⾄对执⾏算法的硬件环境也会考虑在内。本书的内容安排
则希望在算法的数学分析和实现之间取得⼀个合理的平衡。⾸先,在分析算法
效率时尽量避免过深的数学证明,但关键步骤依然会给出直观的解释。其次,在
实现算法时本书尽量利⽤Python 内已有的数据结构和库函数,从⽽简化算法实现的技术难度。
如果将要处理的数据、问题看作是⾷材,那么算法就是将⾷材“转化”成各种
令⼈垂诞美⾷的过程。中国菜肴到处都是充满想象⼒的转化,将原本普通的⾷
材(⼤⾖和糯⽶等)转化为营养和美味的⾷物(⾖腐、酒酿和酱料等等)。本书的
主线就是转化,它不仅有问题的转化,也有⽅法的转化(如图1所⽰)。通过问题
的转化将问题“化繁为简”,通过⽅法的转化以便融会贯通各种算法设计的技巧。
由于计算机已经成为现代科技、⽣活不可缺少的⼯具。因此,解决计算问
题的算法涉及的内容可以说包罗万象,从简单的排序和查找到复杂的语⾳识别、
⽂字翻译,甚⾄游戏等等都离不开算法。本书内容涵盖了⼤部分的经典算法,主
要内容包括递归算法、分治算法、排序算法、动态规划算法、图遍历算法、最⼤
流算法、随机算法和计算问题分类。