目录 第1章算法与问题 1.1稳定匹配问题 1.1.1问题分析 1.1.2稳定匹配算法 1.1.3正确性证明 1.1.4算法实现 1.1.5算法总结 本节思考题 1.2算法概述 1.2.1算法的概念 1.2.2算法的性质 1.2.3算法与程序 1.2.4算法与问题 1.2.5问题求解 本节思考题 1.3问题变换 1.3.1大学入学申请 1.3.2问题变换 本节思考题 本章习题 第2章算法分析 2.1算法分析概述 2.1.1算法选择 2.1.2分析方法 2.1.3有效算法 2.1.4事后统计 2.1.5算法分析总结 2.2渐近复杂度 2.2.1上界 2.2.2下界 2.2.3紧界 2.2.4高阶和低阶 2.2.5性质 2.3复杂度比较 2.3.1阶的高低 2.3.2比较方法 2.4实例分析 2.4.1非递归算法分析 2.4.2分析实例 本节思考题 2.5时空均衡 2.5.1空间复杂度 2.5.2预处理 2.5.3预构造 2.5.4图的遍历 本节思考题 本章习题 第3章枚举算法 3.1枚举与优化 3.1.1蛮力算法 3.1.2枚举算法概述 3.1.3枚举优化 本节思考题 3.2组合与排列 3.2.1排列 3.2.2子集 本节思考题 本章习题 第4章贪心算法 4.1概述 4.1.1部分背包问题 4.1.2贪心算法概述 本节思考题 4.2基本要素 4.2.1性质 4.2.2最优解证明 4.2.3预处理技巧 本节思考题 4.3区间问题 4.3.1区间调度问题 4.3.2区间划分问题 4.3.3区间选点问题 4.3.4区间覆盖问题 4.4MST问题 4.4.1MST特性 4.4.2Prim算法 4.4.3Kruskal算法 4.4.4逆删除算法 4.4.5MST唯一性 本节思考题 4.5哈夫曼编码 4.5.1哈夫曼算法 4.5.2木板问题 本节思考题 本章习题 第5章递推算法 5.1递推算法概述 5.1.1递推 5.1.2递推与递归 5.1.3递推与循环 5.1.4递归与非递归 5.1.5切分问题 5.1.6狱吏问题 本节思考题 5.2倒推算法 5.2.1倒推与应用 5.2.2约瑟夫问题 本节思考题 5.3递推求解 5.3.1快速排序 5.3.2递推方程求解 本节思考题 本章习题 第6章分治算法 6.1分治算法概述 6.1.1设计思想 6.1.2合并排序 6.1.3基本特点 本节思考题 6.2分治类型 6.2.1不相似分治 6.2.2不独立分治 6.2.3三分法 6.2.4减治法 6.2.5排序算法 本节思考题 6.3减少子问题个数 6.3.1二分搜索 6.3.2大整数乘法 6.3.3Strassen矩阵乘法 6.4改进分治均衡度 6.4.1随机快速排序 6.4.2线性时间选择 本节思考题 6.5减少分解合并时间 6.5.1最接近点对问题 6.5.2计数逆序问题 本节思考题 本章习题 第7章动态规划算法 7.1动态规划 7.1.1兔子序列 7.1.2赋权区间调度问题 7.1.3基本性质 7.1.4求解步骤 本节思考题 7.2决策与递推关系 7.2.1数字三角形 7.2.2多阶段决策与递推关系 本节思考题 7.3背包问题 7.3.101背包问题 7.3.2恰好装满背包 7.3.3完全背包 7.3.4多重背包 7.3.5混合背包 本节思考题 7.4区间动态规划 7.4.1矩阵相乘 7.4.2矩阵连乘 7.5DAG动态规划 7.5.1拓扑排序 7.5.2嵌套矩形 7.5.3最长不降子序列 7.5.4硬币问题 7.6树图动态规划 7.6.1最短路径问题 7.6.2FloydWarshall算法 7.6.3树状动态规划 本节思考题 7.7序列相似度 7.7.1LCS问题 7.7.2序列比对 7.7.3动态规划复杂度 本节思考题 本章习题 第8章回溯算法 8.1装载问题 8.1.1装载问题分析 8.1.2装载问题的回溯算法 8.2旅行商问题 8.2.1旅行商问题分析 8.2.2旅行商问题的回溯算法 本节思考题 8.3基本特征 8.3.1解题步骤 8.3.2回溯方式 8.3.3解空间结构 8.3.4算法效率 8.401背包问题 8.4.101背包问题的回溯算法 8.4.2改进上界函数 8.5n皇后问题 8.5.1n皇后问题分析 8.5.2n皇后问题的回溯算法 8.6效率改进与估计 8.6.1效率估计 8.6.2效率改进 8.6.3适用条件 本章习题 第9章分支限界 9.101背包问题 9.1.101背包问题的队列式分支限界 9.1.201背包问题的优先队列式分支限界 9.1.301背包问题的优先级改进 9.2旅行商问题 9.2.1旅行商问题的优先队列式分支限界 9.2.2旅行商问题的优先级改进 本节思考题 9.3分支限界 9.3.1分支限界方式 9.3.2分支限界与回溯算法 9.3.3剪枝函数 9.3.4双向广度搜索 9.4算法总结 本章习题 第10章网络流算法 10.1最大流和最小割 10.1.1最大流 10.1.2最小割 10.1.3最大流算法 10.2最大流算法改进 10.2.1容量缩放算法 10.2.2最短增广路算法 本节思考题 10.3预流推进算法 10.4最大流算法推广 10.4.1多源点多汇点问题 10.4.2无向图的最大流问题 10.4.3顶点容量限制问题 10.4.4带需求的流通问题 10.4.5带需求和下界的流通 10.4.6调查设计 10.5最小费用流 10.5.1最小费用路算法 10.5.2最小逃逸问题 10.6二分测试与二分匹配 10.6.1二分测试 10.6.2二分匹配 10.6.3网络流算法 10.6.4匈牙利算法 10.7应用实例 10.7.1二分匹配公式 10.7.2二分匹配应用 本节思考题 10.8二分图最佳匹配 本章习题 第11章随机算法 11.1随机算法概述 11.1.1确定性算法和随机算法 11.1.2随机算法分类 11.1.3伪随机数 11.1.4模运算 11.2数值随机算法 11.2.1计算π值 11.2.2计算定积分 11.3舍伍德算法 11.3.1随机快速排序算法 11.3.2随机选择算法 11.3.3随机洗牌算法 11.3.4搜索有序表 11.4拉斯维加斯算法 11.5蒙特卡罗算法 11.5.1主元素问题 11.5.2素数检测 本节思考题 本章习题 第12章计算复杂性 12.1P与NP 12.1.1易解与难解问题 12.1.2判定与优化问题 12.1.3计算模型 12.1.4P类 12.1.5NP类 12.1.6COOK归约与KARP归约 12.1.7多项式时间变换 本节思考题 12.2NP完全问题 12.2.1NP完全 12.2.2COOK定理 12.3NP完全问题证明 12.3.1局部替换 12.3.2分支设计技术 12.3.3限制技术 本节思考题 12.4NP完全问题求解 12.4.1求解策略 12.4.2子问题求解 12.4.3参数化算法 12.4.4图着色问题 12.5coNP和PSPACE 12.5.1coNP 12.5.2PSPACE 本章习题 第13章近似算法 13.1绝对近似算法 13.2相对近似算法 13.2.1相对近似算法概述 13.2.2贪心近似 13.2.3组合技术 13.2.4定价法 13.2.5线性规划与舍入 本节思考题 13.3多项式时间近似方案 13.3.101背包问题的近似算法 13.3.201背包问题的多项式时间近似方案 13.3.301背包问题的完全多项式时间近似方案 本节思考题 本章习题 第14章图算法 14.1基本概念 14.1.1无向图与有向图 14.1.2握手定理 14.1.3图的表示 14.1.4路径 14.1.5赋权图 14.2可图性 14.2.1可图性概述 14.2.2图的同构 14.3图的遍历 14.3.1深度优先搜索 14.3.2广度优先搜索 14.4无向连通图 14.4.1无向连通图概述 14.4.2生成树 14.4.3图的连通度 14.4.4割点与桥 14.4.5双连通分量 14.4.6点连通度 14.4.7边连通度 14.5有向连通图 14.5.1有向连通图概述 14.5.2强连通分量 14.5.3拓扑排序 14.5.4传递闭包 14.6可行遍性 14.6.1无向欧拉图 14.6.2有向欧拉图 14.6.3欧拉图判定 14.6.4欧拉回路 14.6.5哈密顿图 本节思考题 14.7平面图 14.7.1平面图概述 14.7.2图着色问题 14.7.3图着色算法 14.7.4图的转化 本节思考题 本章习题 参考文献