新書推薦:
《
加加美高浩的手部绘画技法 II
》
售價:HK$
89.4
《
卡特里娜(“同一颗星球”丛书)
》
售價:HK$
87.4
《
伟大民族:从路易十五到拿破仑的法国史(方尖碑)
》
售價:HK$
188.2
《
古今“书画同源”论辨——中国书法与中国绘画的关系问题兼中国画笔墨研究
》
售價:HK$
132.2
《
《日本文学史序说》讲演录
》
售價:HK$
72.8
《
无尽的海洋:美国海事探险与大众文化(1815—1860)
》
售價:HK$
99.7
《
治盗之道:清代盗律的古今之辨
》
售價:HK$
122.1
《
甲骨文丛书·剑桥世界暴力史(第一卷):史前和古代世界(套装全2册)
》
售價:HK$
210.6
|
編輯推薦: |
本书内容基本上涵盖了目前国内程序设计竞赛所要掌握的主要算法,并在书后精选了部分ACM国际大学生程序设计竞赛的题目,供大家练习。本书将目前计算机科学领域出现的一些经典以及新颖的算法设计和分析技术合理地组织起来,进行了一个全面的介绍。旨在帮助读者掌握基本的算法设计与分析技术,提高解决问题和分析问题的能力,进而对实际问题,设计出简单有效的算法。
|
內容簡介: |
本书主要取材于算法设计与分析领域经典和发展潮流方面的内容,包括非常经典的算法设计技术,例如,递归、分治算法、动态规划、贪心算法、图算法、分支限界、回溯; 也包括一些高级的算法设计,例如,网络流和匹配、线性规划、启发式搜索。在算法分析方面,本书介绍了概率分析、分摊分析和实验分析方法。在算法理论方面,本书介绍了问题的下界、算法的正确性证明,以及NP完全理论等内容。
本书还包括大量的问题实例,给出了相应的设计与分析方法,并精选了一些习题,供读者练习,以巩固所学的算法。在工业应用领域,许多实际问题和疑难问题都需要有效的求解算法,因此,本书提供了设计有效算法的基础,以及大量可供选择的解决途径。
本书可作为计算机科学与技术系、数学系、软件学院等专业和学院的本科生及研究生的教材,也可作为有志参加程序设计竞赛的学生进行学习和训练的参考书。
|
目錄:
|
第1章概念入门
1.1问题模型
1.2算法的概念
1.3算法的正确性
1.4算法的效率
1.5问题的下界
1.6小结
习题
实验题
第2章渐近符号
2.1Θ符号
2.2O符号
2.3Ω符号
2.4渐近符号的性质
2.5常用函数的直观含义
2.6小结
习题
第3章算法分析方法
3.1概率分析
3.2分摊分析
3.2.1合计方法
3.2.2记账方法
3.2.3势能方法
3.3实验分析
3.4小结
习题
第4章递归算法
4.1算法思想
4.1.1递归算法的应用
4.1.2递归与迭代
4.2递归方程的求解
4.2.1替换法
4.2.2递归树法
4.2.3公式法
4.3多项式求值实验
4.4小结
习题
实验题
第5章分治算法
5.1算法思想
5.2合并排序
5.3快速排序
5.4大整数乘法
5.5矩阵乘法
5.6残缺棋盘游戏
5.7快速傅里叶变换
5.8小结
习题
实验题
第6章动态规划算法
6.1算法思想
6.2装配线调度问题
6.3矩阵链乘法问题
6.4最长公共子序列问题
6.50/1背包问题
6.6最优二叉搜索树问题
6.7动态规划的基本性质
6.8小结
习题
实验题
第7章贪心算法
7.1算法思想
7.2任务选择问题
7.3背包问题
7.4哈夫曼编码问题
7.5缓存维护问题
7.6任务选择问题实验
7.7小结
习题
实验题
第8章图算法
8.1图的搜索问题
8.1.1宽度优先搜索
8.1.2深度优先搜索
8.2最小生成树问题
8.2.1Kruskal算法
8.2.2Prim算法
8.3最短路径问题
8.3.1单个源点的最短路径问题
8.3.2所有点对的最短路径问题
8.4小结
习题
实验题
第9章网络流与匹配
9.1最大流问题
9.1.1FordFulkerson算法
9.1.2最短路径增广算法
9.1.3Dinic 算法
9.1.4MPM 算法
9.1.5最大流问题的变形
9.2最小费用流问题
9.2.1消除回路算法
9.2.2最小费用路算法
9.2.3最小费用路算法的改进
9.3匹配问题
9.3.1二分图匹配
9.3.2一般图的匹配
9.4小结
习题
实验题
第10章线性规划
10.1线性规划问题
10.1.1线性规划问题的标准形式
10.1.2线性规划问题的松弛形式
10.2求解算法
10.2.1图解法
10.2.2单纯形算法
10.3对偶
10.4小结
习题
实验题
第11章NP完全理论
11.1判定问题
11.2P和NP
11.3NPC
11.3.1NPC的定义
11.3.2电路可满足性问题
11.4NPC的证明
11.4.1可满足性问题
11.4.23CNF可满足性问题
11.4.3团问题
11.4.4顶点覆盖问题
11.5其他NP完全问题
11.6小结
习题
第12章回溯算法
12.1算法思想
12.2装载问题
12.30/1背包问题
12.4着色问题
12.5n皇后问题
12.6旅行商问题
12.7流水作业调度问题
12.8零件切割问题
12.9小结
习题
实验题
第13章分支限界算法
13.1算法思想
13.2装载问题
13.30/1背包问题
13.4可满足性问题
13.5旅行商问题
13.6流水作业调度问题
13.70/1背包问题实验
13.8小结
习题
实验题
第14章启发式搜索
14.1算法思想
14.2A*搜索算法
14.2.1最短路径问题
14.2.2八数字问题
14.3博弈搜索算法
14.3.1α和β剪支
14.3.2分硬币游戏
14.3.3井字博弈
14.4小结
习题
实验题
参考文献
|
內容試閱:
|
算法是计算机科学的灵魂,图灵奖(A.M Turing Award)的获得者,算法大师高德纳(Donald E.Knuth)说过: “计算机科学的研究就是算法的研究。”的确,计算机科学的每个领域——不管是软件、硬件,还是具体的应用,如集成电路的设计、操作系统的内存调度、计算机网络中的路由问题等——与算法密不可分。某个领域关键算法的改进直接关系到该领域的突破和进展。迄今为止,在72位图灵奖获得者中,因算法方面的贡献而获奖的就有40多位,可见算法的研究对推动计算机科学的发展起着至关重要的作用。
在厦门大学“算法设计与分析”课程的教学过程中,作者曾选用《算法导论》(Introduction to algorithms)和《算法设计技巧与分析》(Algorithms design techniques and analysis)这两本经典且权威的英文教材作为该课程的教材。在此基础上,作者还吸取了其他算法类教材的优点,最终确定本书的内容和风格。本书将目前计算机科学领域出现的一些经典及新颖的算法设计和分析技术合理地组织起来,并进行全面介绍,旨在帮助读者掌握基本的算法理论知识,提高解决和分析问题的能力,进而使读者对实际问题能够设计出简单有效的算法。
本书的主要内容如下。
第1章从问题入手,介绍了算法的基本概念及性质,计算模型的概念,以及算法时间复杂度的分析方法及算法正确性的证明方法。本章还介绍了问题下界的概念,以及如何衡量算法的效率,以便读者能够明白: 算法能否继续改进,何时才能达到最优。
第2章介绍了算法复杂度分析所需要用到的渐近符号及其含义。
第3章介绍了算法分析方法中常用的概率分析、分摊分析和实验分析方法。
第4章介绍了递归算法的设计及其证明方法,以及递归算法时间复杂度的求解方法。
第5章介绍了分治算法及其在排序、大整数乘法、矩阵乘法、残缺棋盘和快速傅里叶变换问题中的应用。
第6章介绍了动态规划算法的基本过程及性质,动态规划算法在装配线调度问题、矩阵链乘法问题、最长公共子序列问题、0/1背包问题、最优二叉搜索树问题中的应用。其中,最优子结构性质是能够用动态规划算法求解问题的必要条件,重叠子问题是提高动态规划算法效率的关键。
第7章通过活动选择问题引入贪心算法,介绍了贪心算法的过程,以及贪心选择性质的分析方法及证明,贪心算法在背包问题、哈夫曼编码问题、缓存维护问题中的应用。
第8章介绍了图算法的基本知识,重点强调了分摊分析在图算法时间复杂度分析中的应用及图算法正确性的证明方法,它们是网络流和匹配算法的基础。本章还进一步介绍了贪心算法和动态规划算法的应用。
第9章是图算法的扩展,介绍了网络流的最大流问题、最小费用流问题及匹配问题的求解算法。
第10章介绍了计算机、经济及管理领域中经常用到的线性规划问题,并介绍了这些问题的单纯型求解算法。
第11章介绍了NP完全理论,具体介绍了P、NP和NPC的定义及其分类,以及NP完全问题的证明方法。
第12章介绍了求解NP困难问题(NPhard problem)的回溯算法。通过回溯算法在装载问题、0/1背包问题、着色问题、n皇后问题、旅行商问题、流水作业调度问题、零件切割问题中的应用,介绍约束函数、限界函数的设计思路和方法,分析了提高回溯算法效率的关键因素。
第13章介绍了基于宽度优先,同时吸取了回溯算法优点的分支限界算法,特别介绍了两种分支限界算法在不同问题求解中的应用及剪支函数的设计。
第14章介绍了启发式搜索算法的设计,特别详细介绍了A*搜索算法和博弈搜索算法。
本书具有如下特色。
(1) 本书基本上涵盖了常用算法设计的主要内容。
(2) 算法的正确性是软件可靠性的保证,本书为不同类型的算法提供了算法正确性的证明思路。目前,已出版的大多数算法书是没有这部分内容的。
(3) 本书精选了大量的习题,使读者可以有选择性地练习。同时,精选了一些实际的工程项目作为实验题。书中的一些算法实现,读者可以访问算法课程实验网站进行练习。
(4) 本书不仅注重算法的应用设计,而且注重算法时间复杂度的分析。书中大部分算法都提供了具体案例,并进行了详尽分析,使读者加深对算法的理解。
(5) 本书还提供英文课件,便于双语教学。
特别感谢厦门大学现代教育技术与实践训练中心的罗淀老师,她对本书的文字和体例进行了校对,并建议不要写得太复杂,这奠定了本书的风格。没有她的帮助,本书不可能顺利出版。本书还作为中国大学MOOC(慕课)“算法设计与分析”课程的配套教材,我的同事林文水和卢杨两位老师也为慕课课程的建设付出了很多努力。
此外,本书的完成还受到“厦门大学第二批双语教学项目”“算法设计与分析课程”“厦门大学优秀教材出版项目”“福建省一流本科建设项目”“中国大学MOOC项目”的支持。
限于我们的水平和经验,书中难免有不妥之处,还望广大读者指正,在此先表感谢!
谨以此书献给所有关心、鼓励和帮助过我们的人们。
编者
厦门大学计算机科学与技术系
2023年12月10日
|
|