本书是“十二五”普通高等教育本科国家级规划教材和国家精品课程教材。全书以算法设计策略为知识单元,系统介绍计算机算法的设计方法与分析技巧,主要内容包括:算法概述、递归与分治策略、动态规划、贪心算法、回溯法、分支限界法、随机化算法、线性规划与网络流、串与序列的算法和数论算法等。书中既涉及经典与实用算法及实例分析,又包括算法热点领域追踪。为突出教材的可读性和可用性,章首增加了学习要点提示;章末配有难易适度的算法分析题和算法实现题;配套出版了《计算机算法设计与分析习题解答(第6版)》;并免费提供电子课件和教学网站服务。本书适合作为大学计算机科学与技术、软件工程、信息安全、信息与计算科学等专业本科生和研究生教材,可作为ACM程序设计大赛培训教材,也适合广大工程技术人员学习参考。
王晓东,福建省教学名师。获得国家科技进步2等奖1项,省科技进步2等奖3项。主持国家精品课程算法与数据结构和算法设计与分析的课程建设。获福建省教学成果一等奖。在国内外重要学术刊物上发表有创见性学术论文50余篇。
目 录
第1章 算法概述 001
1.1 算法与程序 001
1.2 算法复杂性分析 001
1.3 NP完全性理论 004
算法分析题1 006
算法实现题1 007
第2章 递归与分治策略 010
2.1 递归的概念 010
2.2 分治法的基本思想 014
2.3 二分搜索技术 015
2.4 大整数的乘法 016
2.5 斯特拉森矩阵乘法 017
2.6 棋盘覆盖 018
2.7 合并排序 020
2.8 快速排序 022
2.9 线性时间选择 024
2.10 最接近点对问题 026
2.11 循环赛日程表 032
算法分析题2 033
算法实现题2 037
第3章 动态规划 042
3.1 矩阵连乘问题 042
3.2 动态规划算法的基本要素 046
3.3 最长公共子序列 049
3.4 最大子段和 052
3.5 凸多边形最优三角剖分 057
3.6 多边形游戏 059
3.7 图像压缩 062
3.8 电路布线 064
3.9 流水作业调度 065
3.10 0-1背包问题 068
3.11 最优二叉搜索树 072
算法分析题3 074
算法实现题3 074
第4章 贪心算法 086
4.1 活动安排问题 086
4.2 贪心算法的基本要素 088
4.3 最优装载 091
4.4 哈夫曼编码 092
4.5 单源最短路径 095
4.6 最小生成树 097
4.7 多机调度问题 100
算法分析题4 102
算法实现题4 102
第5章 回溯法 108
5.1 回溯法的算法框架 108
5.2 装载问题 112
5.3 批处理作业调度 118
5.4 符号三角形问题 120
5.5 n后问题 122
5.6 0-1背包问题 124
5.7 最大团问题 127
5.8 图的m着色问题 128
5.9 旅行售货员问题 131
5.10 圆排列问题 132
5.11 电路板排列问题 134
5.12 连续邮资问题 137
5.13 回溯法的效率分析 139
算法分析题5 141
算法实现题5 141
第6章 分支限界法 151
6.1 分支限界法的基本思想 151
6.2 单源最短路径问题 153
6.3 装载问题 155
6.4 布线问题 161
6.5 0-1背包问题 163
6.6 最大团问题 167
6.7 旅行售货员问题 169
6.8 电路板排列问题 171
6.9 批处理作业调度 174
算法分析题6 177
算法实现题6 178
第7章 随机化算法 187
7.1 随机数 187
7.2 数值随机化算法 189
7.3 舍伍德算法 191
7.4 拉斯维加斯算法 196
7.5 蒙特卡罗算法 202
算法分析题7 204
算法实现题7 207
第8章 线性规划与网络流 210
8.1 线性规划问题和单纯形算法 210
8.2 最大网络流问题 222
8.3 最小费用流问题 239
算法分析题8 256
算法实现题8 257
第9章 串与序列的算法 268
9.1 子串搜索算法 268
9.2 后缀数组与最长公共字串 279
9.3 序列比较算法 288
算法分析题9 294
算法实现题9 296
第10章 数论算法 300
10.1 数论基本概念 300
10.2 最大公约数算法 303
10.3 不定方程算法 312
10.4 同余与模运算 316
10.5 模线性方程 319
10.6 素数算法 325
10.7 原根与离散对数 337
算法分析题10 344
算法实现题10 345
参考文献 350