算法之道 第2版 pdf

算法之道 第2版

内容简介

  本书追求的目标是算法背后的逻辑,是一本启示书,而不是一本包罗万象的算法大全。因此,本书甄选了那些能展现算法思想、战略和精华,并能够有效训练算法思维的内容。本书将算法的讨论分为五篇:算法基础篇、算法设计篇、算法分析篇、经典算法篇、难解与无解篇。每篇分别讨论算法的一个方面:基础、设计、分析、经典和难解问题。第2版还对进程调度问题、跳转表问题、概率分析应用、遗传算法等方面进行了论述。
  本书既可以作为大学本科或研究生的算法教材或参考书,也可以作为对算法有兴趣的读者提升认知深度的读物。

作者简介

  邹恒明,美国密歇根大学(University of Michigan-AnnArbor)计算机科学与工程博士、中国科学院计算技术研究所硕士、华中科技大学计算机科学与技术学士。曾先后在美国IBM、美国国家数据公司、美国朗讯和美国EMC公司任职8年多。现为上海交通大学教授。

目录

前言
[0第0]一篇 算[0法0]基础篇
[0第0]1章 从无有到无穷 3
1.1 意念与现实 4
1.2 什么是算[0法0] 5
1.3 算[0法0]的表示 7
1.4 算[0法0]之魂 8
1.5 如何比较速度 9
1.6 算[0法0]与计算 [1机1] 的关系 10
1.7 算[0法0]的范畴 11
1.8 为什么[0学0]习算[0法0] 11
思考题 12
[0第0]2章 计数与渐近 13
2.1 算[0法0]的分析 13
2.1.1 正确性分析 14
2.1.2 时空效率分析 15
2.1.3 时空特性分析 15
2.2 计数:算[0法0]分析的核心 15
2.3 算[0法0]设计 16
2.4 算[0法0]效率表示 17
2.5 渐近分析 18
2.6 表示 19
2.7 好、坏、平均 20
2.8 另一类定义 22
2.9 性质 23
2.10 要更快的计算 [1机1] 还是要更快的算[0法0] 23
思考题 24
[0第0]3章 分治与递归 27
3.1 分而治之为上策 28
3.2 分治策略 30
3.3 递归表达式求解 31
3.3.1 递归树[0法0] 31
3.3.2 替换解[0法0] 32
3.3.3 [0大0]师解[0法0] 34
3.4 分治策略举例1:乘方运算 37
3.5 生命中不能承受之重:矩阵乘[0法0] 37
3.6 魔鬼序列:斐波那契序列 40
3.6.1 由底至上 42
3.6.2 使用通式 42
3.6.3 使用矩阵乘方 42
3.7 VLSI 布线 43
3.8 多项式乘[0法0] 44
3.9 分治就在潜意识 44
思考题 45
[0第0]二篇 算[0法0]设计篇
[0第0]4章 动态规划思想 49
4.1 什么是动态规划 51
4.2 流水线问题 51
4.3 长公共子序列 55
4.3.1 [0第0]一种解[0法0]:蛮力策略 56
4.3.2 [0第0]二种解[0法0]:动态规划 57
4.4 长公共子序列变种 59
4.5 记忆递归[0法0] 59
4.6 空间效率改善 60
4.7 [0优0]二叉搜索树 60
4.7.1 递归解[0法0] 63
4.7.2 计算[0优0]答案 64
4.8 [0优0]子结构与重叠子问题 66
4.8.1 [0优0]子结构 67
4.8.2 重叠子问题 67
4.9 动态规划与静态规划的关系 68
4.10 动态规划与静态规划的相互转换 69
思考题 69
[0第0]5章 贪婪选择思想 71
5.1 仅有动态规划是不够的 71
5.2 什么是贪婪 72
5.3 背包问题 72
5.4 贪婪选择属性 75
5.5 教室规划问题 75
5.6 小生成树 79
5.6.1 Kruskal算[0法0]的正确性 83
5.6.2 Kruskal算[0法0]的时间分析 83
5.7 Prim算[0法0] 84
5.8 霍夫曼树和霍夫曼编码 87
5.8.1 霍夫曼树 89
5.8.2 霍夫曼编码 90
5.8.3 霍夫曼编码的无前缀编码性质 91
5.9 进程调度问题 92
5.10 贪婪选择属性 92
5.11 标准分治、动态规划和贪婪选择的比较 94
思考题 95
[0第0]6章 随 [1机1] 化思想 97
6.1 为什么要随 [1机1] 化 98
6.2 随 [1机1] 的平方 99
6.3 什么是随 [1机1] 化算[0法0] 100
6.4 拉斯维加斯算[0法0] 101
6.5 蒙特卡罗算[0法0] 102
6.6 素性测试 103
6.7 矩阵乘积验证器 105
6.8 随 [1机1] 化小生成树算[0法0] 107
6.8.1 Karger-Klein-Tarjan算[0法0] 108
6.8.2 结点降低算[0法0] 109
6.8.3 线性时间小生成树算[0法0] 109
6.8.4 线性时间小生成树算[0法0]的时间成本分析 109
6.9 随 [1机1] 数的生成 110
6.10 随 [1机1] 化算[0法0]的应用 111
思考题 111
[0第0]三篇 算[0法0]分析篇
[0第0]7章 概率分析 115
7.1 一切都在概率中 116
7.2 什么是概率分析 117
7.3 梦幻情人的代价 117
7.3.1 直接分析 119
7.3.2 坏情况分析 119
7.3.3 好情况分析 120
7.3.4 平均情况分析 120
7.3.5 平均情况下成本的概率分析 120
7.3.6 概率分析结果的有效性 121
7.3.7 正确概率分析的保障 122
7.4 梦幻情人的概率 122
7.5 随 [1机1] 排列问题 124
7.6 跳转表问题 126
7.6.1 跳转表插入操作 128
7.6.2 随 [1机1] 化跳转表构建算[0法0] 128
7.7 南柯一梦:从无穷到无有 130
7.8 概率分析的其他应用 132
思考题 132
[0第0]8章 摊销分析 135
8.1 什么是摊销分析 136
8.2 摊销分析与数据结构 137
8.3 摊销分析的几种方[0法0] 138
8.4 聚类分析 138
8.4.1 栈操作的聚类分析 139
8.4.2 二进制计数器的聚类分析 140
8.5 [0会0]计分析 141
8.6 势能分析 143
8.6.1 栈操作的势能分析 144
8.6.2 二进制计数器的势能分析 144
8.7 摊销分析应用:表格扩展的代价 145
8.7.1 动态表插入操作的聚类分析 147
8.7.2 动态表插入操作的[0会0]计分析 148
8.7.3 动态表插入操作的势能分析 149
8.8 运气不好就摊销 150
思考题 151
[0第0]9章 竞争分析 153
9.1 什么是竞争分析 153
9.2 在线算[0法0]和离线算[0法0] 154
9.3 竞争力 156
9.4 健忘对手和[0优0]良对手 156
9.5 线性表更新问题 157
9.6 前置移动算[0法0]的竞争分析 159
9.7 聚类问题 161
9.7.1 聚类问题的次[0优0]解算[0法0] 162
9.7.2 CLUSTERING-ALGORITHM算[0法0]的竞争分析 162
9.8 竞争分析与普通算[0法0]分析 163
思考题 163
[0第0]四篇 经典算[0法0]篇
[0第0]10章 排序与次序 169
10.1 排序无处不在 169
10.2 插入排序 170
10.2.1 插入排序的效率分析 172
10.2.2 折半插入排序 172
10.3 归并排序 173
10.4 快速排序 175
10.4.1 快速排序的过程 175
10.4.2 快速排序的时间复杂性分析 177
10.4.3 坏情况分析 177
10.4.4 好情况分析 177
10.4.5 平均情况分析 178
10.5 随 [1机1] 化快速排序 179
10.6 排序的下限 181
10.7 线性排序 182
10.8 计数排序 183
10.9 基数排序 186
10.9.1 基数排序的正确性 187
10.9.2 基数排序的时间效率分析 187
10.10 桶排序 189
10.10.1 桶排序的定义 190
10.10.2 桶排序的正确性 190
10.10.3 桶排序的时间复杂性分析 191
10.11 次序选择 192
10.12 快速次序选择算[0法0] 193
10.13 随 [1机1] 快速次序选择算[0法0] 195
10.14 坏情况下的线性选择算[0法0] 197
10.14.1 杠杆点好坏分析 198
10.14.2 算[0法0]时间复杂性分析 198
思考题 199
[0第0]11章 搜索与散列 201
11.1 搜索问题 202
11.2 顺序搜索 203
11.3 折半搜索 204
11.4 常数搜索 205
11.5 散列搜索 206
11.6 散列函数选择 207
11.6.1 直接散列 208
11.6.2 除[0法0](模除[0法0])散列 208
11.6.3 乘[0法0]散列 209
11.6.4 乘[0法0]散列的赌徒原理 210
11.6.5 乘方取中[0法0] 211
11.7 散列算[0法0]的碰撞问题 211
11.7.1 开放寻址散列 212
11.7.2 开放寻址散列的时间成本 212
11.7.3 开放寻址下成功搜索的时间成本 213
11.7.4 封闭寻址散列 214
11.7.5 探寻序列的设计 215
11.7.6 封闭寻址散列的效率分析 217
11.7.7 搜索不成功的时间成本 217
11.7.8 成功搜索的效率分析 219
11.8 散列表元素删除 219
11.9 随 [1机1] 化散列 220
11.10 全域散列 221
11.11 完美散列 224
思考题 227
[0第0]12章 短路径 231
12.1 剑指罗马 231
12.2 短路径问题 233
12.3 单源单点短路径问题 235
12.3.1 深度[0优0]先与广度[0优0]先搜索 235
12.3.2 深度[0优0]先解[0法0] 237
12.4 单源多点短路径问题 238
12.4.1 短路径的性质 239
12.4.2 Dijkstra短路径算[0法0] 240
12.4.3 Dijkstra算[0法0]举例 241
12.4.4 Dijkstra算[0法0]与洪水泛滥 242
12.4.5 Dijkstra算[0法0]的正确性 243
12.4.6 Dijkstra算[0法0]的时间复杂性 245
12.5 Bellman-Ford算[0法0] 246
12.5.1 负[0权0]重的应对方式 247
12.5.2 Bellman-Ford算[0法0]的正确性 250
12.5.3 负循环检查问题 251
12.5.4 Bellman-Ford算[0法0]的时间复杂性 252
12.6 多源多点短路径问题 252
12.6.1 多源多点短路径问题解决思路 252
12.6.2 直接动态规划解[0法0] 253
12.6.3 矩阵乘[0法0]解[0法0] 255
12.6.4 Floyd-Warsh[0all0]算[0法0] 255
12.6.5 Johnson算[0法0] 256
12.6.6 Johnson等效变换 257
12.6.7 差限问题解决 259
12.7 天意难违 260
思考题 261
[0第0]五篇 难解与无解篇
[0第0]13章 易解与难解 265
13.1 我们战无不胜吗 266
13.2 易解与难解 266
13.3 决策问题和[0优0]化问题 267
13.4 决策问题 268
13.5 P类问题 269
13.6 NP类问题 269
13.7 (确定性)图灵 [1机1] 270
13.8 非确定性图灵 [1机1] 271
13.9 非确定性算[0法0] 271
13.10 回到NP类问题 272
13.11 P和NP 273
13.12 搜索问题、决策问题和[0优0]化问题 274
13.13 有没有解和是否可决定 275
思考题 276
[0第0]14章 NP完全问题 277
14.1 玉龙雪山下的审判 277
14.2 NP完全问题的定义 278
14.3 NP完全的重要性 279
14.4 多项式时间规约 280
14.5 如何证明一个问题S是NP完全问题 281
14.6 [0第0]1个NP完全问题的证明 281
14.7 库克定理 281
14.8 3-SAT问题 284
14.9 证明NP难的技巧 285
14.10 整数规划 286
14.11 [0独0]立集问题 287
14.12 汉密尔顿回路问题 289
14.13 讨论:弱NP完全、强NP完全和中NP完全 293
思考题 293
[0第0]15章 无解与近似 295
15.1 难解问题 296
15.2 不可决定问题 296
15.3 程序终结的判断 297
15.4 难解之题的求解 298
15.5 智能穷举、近似算[0法0]和本地搜索 299
15.6 智能穷举之回溯策略 301
15.7 智能穷举之分支限界 302
15.8 贪婪近似策略 302
15.9 启发式搜索策略 303
15.10 模拟退火算[0法0] 305
15.10.1 模拟退火算[0法0]的思想 306
15.10.2 模拟退火算[0法0]的基本循环 306
15.10.3 退火算[0法0]描述 307
15.11 基因/遗传算[0法0] 308
15.11.1 生物进化与遗传 309
15.11.2 遗传算[0法0]的基本要义 309
15.11.3 遗传算[0法0]的实现 310
15.11.4 遗传算[0法0]的基本运算过程 313
15.11.5 遗传算[0法0]的现状 314
15.12 概率尽在一切中 314
思考题 315
结语 算[0法0]之道 317
附录 算[0法0]随想 321
参考文献 324

会员免费下载

链接:https://pan.baidu.com/s/15PF_8On-SepYpQM4ManICQ

提取码: ****** 查看

¥69/年 开通VIP会员

成为本站VIP会员即可无限下载。 请先点击百度网盘,看资源是否还在,不在请点击链接通知站长补资源。

资源标签点击标签可查看对应分类的资源

数据结构与算法

资源推荐

免费 图解数据结构:使用Java

C++ 程序设计语言:第4部分 标准库(原书第4版)

C++编程思想(两卷合订本)

CSS世界

JavaScript DOM编程艺术(第2版)

C++ Primer Plus(第6版) 中文版

Vue.js快速入门

Java编程思想(第4版) [thinking in java]

Copyright © 2021-2022 知识猫. All Rights Reserved.