商品详情
内容简介
本书是为以算法设计、问题求解为阅读目的的读者编写的教材,注重培养读者的算法设计与分析、问题求解的能力。本书读者需要掌握程序设计、数据结构等基础知识,并具备一定的编程能力。
本书以算法设计与分析为主线,通过问题和案例引入内容,重点讲解利用算法求解问题的思路、算法执行过程及能力拓展。本书主要内容为算法基础、蛮力法、递归法、分治法、贪心法、回溯法、分支限界法、动态规划法、图算法、随机算法等,讲解了背包问题、任务分配问题、批处理作业调度问题、最优装载问题、旅行商问题、计算几何等经典问题,并提供了能力拓展环节,引导读者开展算法应用实践。算法使用C语言程序、伪代码等形式加以描述,并用图解的形式详细描述算法的执行过程,使读者能够深入了解算法的运行过程和结果。
本书可作为本科院校算法设计与分析的教学用书,也可作为从事算法设计的科技人员、算法竞赛选手的参考书及培训教材。
编辑推荐
国家级一流本科课程配套教材
全国高等学校计算机教育研究会“十四五”规划教材
本书有教学课件、教学大纲、教学计划、教学视频、源代码
目录
第1章算法基础1
1.1算法概念1
1.2算法描述1
1.3算法主要类别及典型问题2
1.3.1递归法2
1.3.2递推法2
1.3.3穷举法3
1.3.4贪心算法3
1.3.5分治法4
1.3.6动态规划法4
1.3.7分支限界法5
1.3.8回溯法6
1.4算法复杂度6
1.4.1算法输入规模度量6
1.4.2算法运行时间的度量7
1.4.3渐进符号7
1.4.4算法复杂度分析8
1.5标准模板库13
1.5.1动态数组vector的使用13
1.5.2集合set的使用15
1.5.3映射map的使用17
1.5.4栈stack的使用19
1.5.5队列与优先队列的使用20
1.5.6排序sort的使用23
习题25
第2章递归算法设计26
2.1概述26
2.2递归算法设计思想27
2.2.1递归定义27
2.2.2递归应用28
2.3递归算法示例与过程分析30
2.3.1汉诺塔问题30
2.3.2逆波兰表达式33
2.4递归转化为非递归34
2.4.1递归转尾递归34
2.4.2递归转非递归36
2.5能力拓展38
2.5.1K数列38
2.5.2猴子爬树40
2.5.3分黑球41
习题43
第3章蛮力法46
3.1概述46
3.2蛮力法的主要设计思想46
3.2.1使用蛮力法的几种情况46
3.2.2蛮力法的求解步骤46
3.3蛮力法示例与分析47
3.3.1选择排序47
3.3.2旅行商问题48
3.3.3字符串匹配蛮力解决50
3.3.401背包问题52
3.4能力拓展53
3.4.1连续数和53
3.4.2矩形个数54
习题56
第4章分治法59
4.1概述59
4.2分治法设计思路59
4.3分治法应用与过程分析62
4.3.1最大子段和62
4.3.2归并排序63
4.3.3棋盘覆盖问题66
4.3.4最近点对问题68
4.4能力拓展72
4.4.1第k位数72
4.4.2二进制的完全表示74
4.4.3最小违和度75
习题78
第5章回溯法81
5.1概述81
5.2回溯法设计思路81
5.3回溯法示例与过程分析81
5.3.1n皇后问题81
5.3.201背包问题83
5.3.3图的m着色问题85
5.3.4批处理作业调度问题86
5.4能力拓展88
5.4.1全排列问题88
5.4.2存在障碍物的迷宫问题89
5.4.3图的m着色问题变种90
5.5习题91
第6章贪心法96
6.1概述96
6.2贪心法设计思路96
6.3贪心法示例与过程分析96
6.3.1部分背包问题96
6.3.2最优装载问题98
6.3.3乘船问题99
6.3.4旅行商问题100
6.4能力拓展101
6.4.1田忌赛马问题101
6.4.2过河问题102
习题103
第7章分支限界法108
7.1概述108
7.2分支限界法设计思路108
7.3分支限界法示例与过程分析110
7.3.101背包问题110
7.3.2多段图最短路径问题112
7.3.3旅行商问题115
7.3.4作业调度问题119
7.4能力拓展124
7.4.1大富翁游戏124
7.4.2最优装载问题126
习题128
第8章动态规划131
8.1概述131
8.2动态规划算法设计规则131
8.3动态规划算法问题求解132
8.3.101背包问题132
8.3.2最长公共子序列137
8.3.3最长上升子序列141
8.3.4字符串相似度/编辑距离146
8.3.5最大子段和149
8.4能力拓展152
8.4.1带通配符的字符串匹配152
8.4.2爬楼梯156
习题158
第9章图算法设计164
9.1概述164
9.1.1图的定义164
9.1.2图的相关概念164
9.2图算法示例与分析165
9.2.1最短路问题165
9.2.2网络最大流问题169
9.2.3二分图染色问题173
9.3能力拓展176
9.3.1上学问题176
9.3.2圣诞老人的烦恼179
9.3.3烤箱问题182
习题185
第10章计算几何192
10.1概述192
10.2相关几何知识193
10.2.1向量193
10.2.2点积和叉积195
10.2.3基本应用196
10.2.4点是否在面内197
10.2.5方向198
10.2.6面积和角度198
10.2.7凸性199
10.3计算几何示例与分析199
10.3.1点到直线的距离、判断线段是否相交199
10.3.2凸包问题(极角排序)204
10.3.3利用叉积计算多边形面积 206
10.4能力拓展208
10.4.1不同直线计数208
10.4.2面积最大的三角形209
10.4.3面积最大的多边形212
习题215
第11章计算复杂度理论221
11.1计算模型221
11.2P类和NP类问题225
11.3NPC问题227
习题229
第12章概率算法和近似算法230
12.1概率算法230
12.1.1概率算法的基本概念230
12.1.2概率算法的分类231
12.1.3数值概率算法232
12.1.4舍伍德算法232
12.1.5拉斯维加斯算法235
12.1.6蒙特卡罗算法237
12.2近似算法240
12.2.1介绍240
12.2.2顶点覆盖问题242
12.2.3旅行商问题243
习题244
- 清华大学出版社旗舰店 (微信公众号认证)
- 扫描二维码,访问我们的微信店铺
- 随时随地的购物、客服咨询、查询订单和物流...