第1章 引言:某些典型的问题 1
1.1 第一个问题:稳定匹配 1
1.2 五个典型问题 9
带解答的练习 14
练习 16
注释和进一步的阅读 20
第2章 算法分析基础 21
2.1 计算可解性 21
2.2 增长的渐近阶 25
2.3 用表和数组实现稳定匹配算法 31
2.4 一般运行时间的概述 34
2.5 更复杂的数据结构:优先队列 41
带解答的练习 48
练习 49
注释和进一步的阅读 51
第3章 图 53
3.1 基本定义与应用 53
3.2 图的连通性与图的遍历 56
3.3 用优先队列与栈实现图的遍历 62
3.4 二分性测试:宽度优先搜索的一个应用 68
3.5 有向图中的连通性 70
3.6 有向无圈图与拓扑排序 72
带解答的练习 76
练习 78
注释和进一步的阅读 81
第4章 贪心算法 82
4.1 区间调度:贪心算法领先 83
4.2 最小延迟调度:一个交换论证 89
4.3 最优高速缓存:一个更复杂的交换论证 94
4.4 一个图的最短路径 98
4.5 最小生成树问题 101
4.6 实现Kruskal算法:Union—Find数据结构 108
4.7 聚类 113
4.8 Huffman码与数据压缩 115
4.9 最小费用有向树:一个多阶段贪心算法 126
带解答的练习 131
练习 134
注释和进一步的阅读 145
第5章 分治策略 147
5.1 第一个递推式:归并排序算法 147
5.2 更多的递推关系 151
5.3 计数逆序 155
5.4 找最接邻近的点对 158
5.5 整数乘法 163
5.6 卷积与快速傅里叶变换 165
带解答的练习 171
练习 173
注释和进一步的阅读 175
第6章 动态规划 177
6.1 带权的区间调度:一个递归过程 177
6.2 动态规划原理:备忘录或者子问题迭代 182
6.3 分段的最小二乘:多重选择 184
6.4 子集和与背包:加一个变量 188
6.5 RNA二级结构:在区间上的动态规划 192
6.6 序列比对 196
6.7 通过分治策略在线性空间的序列比对 201
6.8 图中的最短路径 206
6.9 最短路径和距离向量协议 211
6.10 图中的负圈 214
带解答的练习 218
练习 222
注释和进一步的阅读 237
第7章 网络流 239
7.1 最大流问题与Ford-Fulkerson算法 240
7.2 网络中的最大流与最小割 246
7.3 选择好的增广路径 250
7.4 前向流推动最大流算法 254
7.5 第一个应用:二分匹配问题 262
7.6 在有向与无向图中的不交路径 266
7.7 对最大流问题的推广 270
7.8 调查设计 274
7.9 航线调度 276
7.10 图像分割 280
7.11 项目选择 283
7.12 棒球排除 286
7.13 进一步的方向:对匹配问题增加费用 289
带解答的练习 294
练习 297
注释和进一步的阅读 318
第8章 Nop与计算的难解性 320
8.1 多项式时间归约 321
8.2 使用“零件”的归约:可满足性问题 325
8.3 有效证书和Nop的定义 328
8.4 NP完全问题 330
8.5 排序问题 335
8.6 划分问题 340
8.7 图着色 343
8.8 数值问题 347
8.9 co-Nop及Nop的不对称性 350
8.10 难问题的部分分类 352
带解答的练习 354
练习 357
注释和进一步的阅读 372
第9章 ?:一个超出Nop的问题类 373
9.1 ? 373
9.2 ?中的难问题 374
9.3 在多项式空间中解量化问题和博弈问题 376
9.4 在多项式空间内求解规划问题 378
9.5 证明问题是PSPACE完全的 382
带解答的练习 384
练习 386
注释和进一步的阅读 387
第10章 扩展易解性的界限 388
10.1 找小的顶点覆盖 389
10.2 在树上解NP难问题 391
10.3 圆弧集着色 395
10.4 图的树分解 401
10.5 构造树分解 409
带解答的练习 413
练习 415
注释和进一步的阅读 418
第11章 近似算法 419
11.1 贪心算法与最优值的界限:负载均衡问题 419
11.2 中心选址问题 423
11.3 集合覆盖:一般的贪心启发式方法 428
11.4 定价法:顶点覆盖 432
11.5 用定价法最大化:不交路径问题 436
11.6 线性规划与舍入:对顶点覆盖的应用 441
11.7 再论负载均衡:一个更高级的LP应用 445
11.8 任意好的近似:背包问题 450
带解答的练习 454
练习 455
注释和进一步的阅读 461
第12章 局部搜索 462
12.1 最优化问题的地形图 462
12.2 Metropolis算法与模拟退火算法 466
12.3 局部搜索对Hopfield神经网络的应用 469
12.4 局部搜索对最大割近似的应用 472
12.5 选择邻居关系 475
12.6 用局部搜索分类 476
12.7 最佳响应动态过程与Nash平衡点 482
带解答的练习 489
练习 491
注释和进一步的阅读 493
第13章 随机算法 494
13.1 第一个应用:消除争用 495
13.2 求完全最小割 498
13.3 随机变量及其期望 502
13.4 关于MAX 3-SAT的随机近似算法 506
13.5 随机分治策略:求中位数与快速排序 509
13.6 散列法:字典的随机实现 514
13.7 求最邻近点对:一个随机方法 519
13.8 随机超高速缓存 525
13.9 Chernoff界 531
13.10 负载均衡 532
13.11 包路由选择 534
13.12 背景:某些基本概率定义 539
带解答的练习 544
练习 547
注释和进一步的阅读 554
后记:永不停止运行的算法 556
索引 563