《算法设计与分析》PDF下载

  • 购买积分:10 如何计算积分?
  • 作  者:骆吉洲编著
  • 出 版 社:北京:机械工业出版社
  • 出版年份:2014
  • ISBN:9787111483168
  • 页数:250 页
图书介绍:本书以算法设计与分析的理论、方法和技术为主线,系统地介绍分治算法、动态规划算法、贪心算法、最小值最大值方法、搜索策略、随机算法、近似算法和在线算法等算法设计技术,以及循环不变量方法、反例方法、平摊分析方法、概率分析方法、近似度分析方法和竞争度分析方法等算法分析技术。在介绍这些理论、方法和技术的同时,还介绍计算几何、图论、元素选取、最大流、顶点覆盖和匹配等领域的一些基本算法。全书强调问题特征分析、基本算法和算法设计技术的有机结合构成典型的算法设计过程。书中配置了大量习题,以期读者能够在实践过程中加深对算法设计与分析方法的理解并提高算法设计与分析的速度。

第1章 绪论 1

1.1 算法在计算机科学体系中的地位 1

1.1.1 计算机理论模型和计算问题的分类 1

1.1.2 利用计算机求解问题 2

1.1.3 计算机科学的知识体系 3

1.1.4 算法是计算机科学的重要主题 4

1.1.5 算法设计与分析的意义 5

1.2 算法的概念 5

1.3 算法分析 7

1.3.1 算法正确性分析 7

1.3.2 算法复杂度分析 8

1.4 算法设计方法 10

习题 10

第2章 数学基础 12

2.1 复杂度函数的阶 12

2.1.1 函数阶的定义 12

2.1.2 函数阶的性质 15

2.2 标准符号和通用函数 15

2.2.1 flour函数和ceiling函数 15

2.2.2 求和 16

2.3 递归方程 19

2.3.1 常系数线性递归方程 19

2.3.2 非常系数线性递归方程 21

2.3.3 生成函数 22

2.3.4 分治算法递归方程 23

习题 27

第3章 分治算法 29

3.1 分治算法原理 29

3.2 大整数乘法 31

3.3 Strassen矩阵乘法 32

3.4 快速傅里叶变换 33

3.5 最邻近点问题 35

3.6 平面点集的凸包 38

3.6.1 求解凸包问题的蛮力算法 38

3.6.2 GrahamScan算法 41

3.6.3 凸包问题的分治算法 43

3.7 基于剪枝搜索方法的分治算法 44

3.7.1 剪枝搜索方法 44

3.7.2 线性时间选择算法 45

3.7.3 二元线性规划的线性时间算法 46

3.7.4 1-圆心问题的线性时间算法 51

习题 55

第4章 动态规划算法 57

4.1 动态规划原理 57

4.2 最长公共子序列 59

4.3 矩阵链乘法 63

4.4 0-1背包问题 66

4.5 最优二叉搜索树 69

4.6 评注 74

习题 75

第5章 贪心算法 77

5.1 贪心算法的基本原理 77

5.2 活动选择问题 79

5.3 哈夫曼编码问题 81

5.4 最小生成树问题 85

5.4.1 Kruskal算法 85

5.4.2 Prim算法 87

5.5 贪心算法的理论基础 90

5.5.1 拟阵 90

5.5.2 加权拟阵上的贪心算法 91

5.6 单位时间任务调度问题 93

习题 94

第6章 平摊分析 96

6.1 平摊分析方法 96

6.1.1 聚集方法 96

6.1.2 会计方法 98

6.1.3 势能方法 99

6.2 动态表性能的平摊分析 101

6.2.1 动态表及其操作 101

6.2.2 动态表的扩张 102

6.2.3 动态表扩张和收缩 104

6.3 斐波那契堆及其操作代价的平摊分析 106

6.3.1 斐波那契堆 106

6.3.2 斐波那契堆操作算法及其平摊代价 108

6.3.3 斐波那契堆最大度的上界 112

6.4 并查集及其操作代价的平摊分析 113

6.4.1 并查集及其基本性质 113

6.4.2 阿克曼函数及其逆函数 115

6.4.3 并查集上操作序列代价的平摊分析 116

习题 118

第7章 最大值最小值方法 120

7.1 网络流 120

7.1.1 最大流问题和最小割问题 120

7.1.2 Ford-Fulkerson算法 124

7.1.3 Edmonds-Karp算法 126

7.1.4 推送复标算法 128

7.1.5 复标前置算法 133

7.2 匹配算法 138

7.2.1 匹配与覆盖 138

7.2.2 最大二分匹配 140

7.2.3 一般图上的最大匹配 144

7.2.4 最大权值二分匹配 147

7.2.5 稳定二分匹配 150

习题 152

第8章 树的搜索策略 154

8.1 问题解空间的树表示 154

8.2 典型搜索策略 157

8.2.1 广度优先搜索 157

8.2.2 深度优先搜索 158

8.2.3 爬山法 159

8.2.4 最佳优先搜索 160

8.2.5 分支限界法 161

8.3 分支限界法的应用 163

8.3.1 用分支限界法求解人员分配问题 163

8.3.2 用分支限界法求解旅行商问题 166

8.3.3 用分支限界法求解0-1背包问题 169

8.4 A*算法及其应用 171

8.5 博弈树和α-β剪枝 174

8.5.1 博弈树及其评估 174

8.5.2 α-β剪枝 176

习题 178

第9章 随机算法 179

9.1 随机算法概述 179

9.2 数值随机算法 180

9.2.1 随机投点法 180

9.2. 2平均值方法 181

9.3 随机选择和拉斯维加斯算法 182

9.3.1 随机选择算法 182

9.3.2 拉斯维加斯算法 184

9.4 快速排序和舍伍德算法 185

9.4.1 快速排序算法描述 185

9.4.2 快速排序算法的性能分析 186

9.4.3 随机快速排序算法 187

9.4.4 舍伍德算法 188

9.5 素数测试和蒙特卡罗算法 189

9.5.1 素数测试随机算法 189

9.5.2 蒙特卡罗算法 190

9.6 最小割随机算法 190

习题 192

第10章 近似算法 194

10.1 近似算法的性能分析 194

10.2 基于组合优化的近似算法 195

10.2.1 顶点覆盖问题的近似算法 195

10.2.2 装箱问题的近似算法 196

10.2.3 最短并行调度问题的近似算法 197

10.2.4 旅行商问题的近似算法 198

10.2.5 子集和问题的完全多项式近似模式 199

10.3 基于贪心思想的近似算法 202

10.3.1 集合覆盖问题的近似算法 202

10.3.2 不相交路径问题的近似算法 204

10.4 基于局部搜索的近似算法 205

10.4.1 最大割问题的近似算法 205

10.4.2 设施定位问题的近似算法 207

10.5 基于动态规划的近似算法 210

10.5.1 0-1背包问题的完全多项式近似模式 210

10.5.2 装箱问题的多项式近似模式 212

10.6 基于线性规划的近似算法 215

10.6.1 线性规划及对偶定理 215

10.6.2 加权集合覆盖问题的线性规划表示 216

10.6.3 舍入法及随机舍入法 217

10.6.4 对偶拟合方法 219

10.6.5 原偶模式 220

10.7 不可近似性 222

10.7.1 鸿沟归约与不可近似性 222

10.7.2 PCP定理 224

10.7.3 MAX-3SAT问题的不可近似性 225

10.7.4 α,β-鸿沟归约与不可近似性 227

习题 228

第11章 在线算法 230

11.1 在线算法与竞争度分析 230

11.2 欧几里得最小生成树问题的在线算法 231

11.2.1 在线贪心算法 231

11.2.2 在线随机算法 232

11.3 凸包在线算法 235

11.4 线性链表在线更新算法 238

11.5 最短并行调度在线算法 240

习题 246

参考文献 248