目录
第1章算法概述
1.1算法的基本概念
1.1.1学习算法的重要性
1.1.2算法的定义及特性
1.1.3算法的描述方式
1.2算法设计的一般过程
1.3算法分析
1.3.1算法分析的概念
1.3.2时间复杂性
1.3.3空间复杂性
1.3.4算法渐进复杂性
1.3.5算法复杂性的权衡考虑
1.4递归
1.4.1认知递归
1.4.2n的阶乘
1.4.3排列问题
1.4.4最大公约数
1.4.5递归算法的复杂性分析
拓展知识: 算法界十大名师简介
本章习题
第2章贪心算法
2.1贪心算法概述
2.1.1贪心算法的基本思想
2.1.2贪心算法的基本要素
2.1.3贪心算法的解题步骤及算法设计模式
2.2会场安排问题
2.3单源最短路径问题
2.4哈夫曼编码
2.5最小生成树
2.5.1Prim算法
2.5.2Kruskal算法
2.5.3两种算法的比较
拓展知识: 遗传算法
本章习题
第3章分治算法
3.1分治算法概述
3.1.1分治算法的基本思想
3.1.2分治算法的解题步骤
3.2二分查找
3.3循环赛日程表
3.4合并排序
3.5快速排序
3.6最接近点对问题
拓展知识: 禁忌搜索算法
本章习题
第4章动态规划算法
4.1动态规划算法概述
4.1.1动态规划算法的基本思想
4.1.2动态规划算法的解题步骤
4.1.3动态规划算法的基本要素
4.2矩阵连乘问题
4.3凸多边形最优三角剖分问题
4.4最长公共子序列问题
4.5加工顺序问题
4.601背包问题
4.7最优二叉查找树
拓展知识: 模拟退火算法
本章习题
第5章回溯算法及分支限界算法
5.1回溯算法
5.1.1回溯算法的算法框架及思想
5.1.2子集树
5.1.3排列树
5.1.4满m叉树
5.2分支限界算法
5.2.1分支限界算法的基本思想
5.2.201背包问题
5.2.3旅行商问题
5.2.4布线问题
5.2.5分支限界算法与回溯算法的比较
拓展知识: 蚁群算法
本章习题
第6章随机化算法
6.1随机化算法概述
6.1.1随机化算法的类型及特点
6.1.2随机数发生器
6.2数值随机化算法
6.2.1计算π值的问题及分析
6.2.2计算定积分
6.3蒙特卡洛算法
6.3.1主元素问题
6.3.2素数测试
6.4拉斯维加斯算法
6.4.1整数因子分解问题
6.4.2n皇后问题
6.5舍伍德算法
6.5.1随机快速排序
6.5.2线性时间选择问题
拓展知识: 粒子群优化算法
本章习题
第7章网络流算法
7.1最大网络流
7.1.1基本概念
7.1.2增广路算法
7.1.3最大网络流的变换与应用
7.2最小费用最大流
7.2.1基本概念
7.2.2消圈算法
7.2.3最小费用最大流的变换与应用
拓展知识: 捕食搜索算法
本章习题
第8章NP完全理论
8.1易解问题和难解问题
8.2P类问题和NP类问题
8.2.1P类问题
8.2.2NP类问题
8.2.3P类问题和NP类问题的关系
8.3NP完全问题
8.3.1多项式变换技术
8.3.2典型的NP完全问题
8.4NP完全问题的近似算法
8.4.1顶点覆盖问题
8.4.2装箱问题
8.4.3旅行商问题
8.4.4集合覆盖问题
拓展知识: DNA计算
本章习题