中科院计算机与信息学院算法课讲义
计算机算法设计与分析
讲 义
2009 年 8 月 15 日
北 京
目 录
第一章 复杂性分析初步 ┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄ 1
第一节 空间复杂性 ┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄ 1
第二节 时间复杂性 ┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄ 5
第三节 渐进符号 ┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄ 11
习题 一 ┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄ ┄┄┄┄ 15
第二章 图与遍历算法 ┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄ 18
第一节 图的基本概念和术语 ┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄ 18
第二节 图的遍历算法 ┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄ 25
第三节 双连通与网络可靠性 ┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄ 32
第四节 对策树 ┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄ 37
习题 二 ┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄ 42
附页 ┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄ ┄ 43
第三章 分治算法 ┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄ 45
第一节 算法的基本思想 ┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄ 45
第二节 排序算法 ┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄ 50
第三节 选择问题 ┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄ 58
第四节 关于矩阵乘法 ┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄ 61
第五节 最接近点对问题 ┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄ 63
习题 三 ┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄ 66
附页 ┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄ ┄ 72
第四章 贪心算法 ┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄ 78
第一节 算法的基本思想 ┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄ 78
第二节 作业排序问题 ┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄ 82
第三节 最优生成树问题 ┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄ 87
第四节 单点源最短路径问题 ┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄ 90
第五节 Huffman 编码 ┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄ 93
习题 四 ┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄ 96
附页 ┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄ ┄ 98
第五章 动态规划算法 ┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄ 100
第一节 算法的基本思想 ┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄ 100
第二节 多段图问题 ┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄ 107
第三节 0/1 背包问题 ┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄ 109
第四节 流水作业调度问题 ┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄ 116
第五节 最有二叉搜索树 ┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄ 120
习题 五 ┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄ 124
第六章 回溯算法 ┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄ 126
第一节 算法的基本思想 ┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄ 126
第二节 定和子集问题与 0/1 背包问题 ┄┄┄┄┄┄┄┄┄┄┄┄ 129
第三节 n-皇后问题与旅行商问题 ┄┄┄┄┄┄┄┄┄┄┄┄┄┄ 135
第四节 图的着色问题 ┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄ 138
第五节 回溯法的效率分析 ┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄ 140
附页 ┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄ 147
第七章 分枝限界算法 ┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄ 154
第一节 算法的基本思想 ┄┄┄┄┄┄┄┄┄┄┄