内容简介
1引言:一些典型问题
1.1第一个问题:稳定匹配
1.2五个典型问题
带解答的练习
练习
注释和进一步阅读
2算法分析基础
2.1计算可解性
2.2增长的渐近阶
2.3用列表和数组实现稳定匹配算法
2.4常见运行时间综述
2.5更复杂的数据结构:优先队列
带解答的练习
练习
注释和进一步阅读
3图
3.1基本定义与应用
3.2图连通性与图遍历
3.3用优先队列与栈实现图遍历
3.4二分性测试:广度优先搜索的应用
3.5有向图中的连通性
3.6有向无环图和拓扑排序
带解答的练习
练习
注释和进一步阅读
4贪心算法
4.1区间调度:贪心算法保持领先
4.2最小延迟的调度:交换论证
4.3最优缓存:更复杂的交换论证
4.4图的最短路径
4.5最小生成树问题
4.6实现Kruskal算法:Union-Find数据结构
4.7聚类
4.8哈夫曼码和数据压缩
4.9最小费用有向树:多阶段贪心算法
带解答的练习
练习
注释和进一步阅读
5分治
5.1第一个递推式:归并排序算法
5.2进一步的递推关系
5.3计数逆序
5.4寻找最近点对
5.5整数乘法
5.6卷积和快速傅里叶变换
带解答的练习
练习
注释和进一步阅读
6动态规划
6.1加权区间调度:递归过程
6.2动态规划原理:备忘录或子问题迭代
6.3分段最小二乘:多重选择
6.4子集和与背包:加一个变量
6.5RNA二级结构:区间上的动态规划
6.6序列比对
6.7通过分治在线性空间中的序列比对
6.8图中的最短路径
6.9最短路径和距离向量协议
6.10图中的负环
带解答的练习
练习
注释和进一步阅读
7网络流
7.1最大流问题和Ford-Fulkerson算法
7.2网络中的最大流和最小割
7.3选择好的增广路径
7.4预流推动最大流算法
7.5第一个应用:二分匹配问题
7.6有向图和无向图中的不相交路径
7.7最大流问题的推广
7.8调查设计
7.9航线调度
7.10图像分割
7.11项目选择
7.12棒球排除
7.13进一步的方向:对匹配问题增加费用
带解答的练习
练习
注释和进一步阅读
8 NP和计算难解性
8.1多项式时间归约
8.2通过“小配件”归约:可满足性问题
8.3有效证书和NP的定义
8.4 NP完全问题
8.5排序问题
8.6划分问题
8.7图着色
8.8数值问题
8.9 Co-NP和NP的不对称性
8.10困难问题的部分分类
带解答的练习
练习
注释和进一步阅读
9 PSPACE: NP之外的一类问题
9.1 PSPACE
9.2 PSPACE中的一些难题
9.3在多项式空间中求解量化问题和博弈
9.4在多项式空间中求解规划问题
9.5证明问题是PSPACE完全的
带解答的练习
练习
注释和进一步阅读
10扩展易解性的界限
10.1寻找小的顶点覆盖
10.2求解树上的NP难问题
10.3圆弧集着色
10.4图的树分解
10.5构造树分解
带解答的练习
练习
注释和进一步阅读
11近似算法
11.1贪心算法和最优值的界限:负载均衡问题
11.2中心选址问题
11.3集合覆盖:一般贪心启发式
11.4定价方法:顶点覆盖
11.5用定价方法最大化:不相交路径问题
11.6线性规划和舍入:顶点覆盖的应用
11.7再论负载均衡:更高级的LP应用
11.8任意好的近似:背包问题
带解答的练习
练习
注释和进一步阅读
12局部搜索
12.1优化问题的地形
12.2算法和模拟退火算法
12.3局部搜索在Hopfield神经网络中的应用
12.4通过局部搜索进行最大割近似
12.5选择邻居关系
12.6用局部搜索分类
12.7最佳响应动态和纳什均衡
带解答的练习
练习
注释和进一步阅读
13随机算法
13.1第一个应用:消除争用
13.2寻找全局最小割
13.3随机变量及其期望
13.4 MAX 3-SAT的随机近似算法
13.5随机分治:找中位数和快速排序
13.6散列:字典的随机实现
13.7寻找最近点对:随机方法
13.8随机缓存
13.9切尔诺夫界
13.10负载均衡
13.11分组路由
13.12背景知识:一些基本概率定义
带解答的练习
练习
注释和进一步阅读
后记:永远运行的算法
参考文献