计算机算法(高等学校计算机科学与技术教材)
分類: 图书,计算机/网络,计算机理论,
作者: 胡金初主编
出 版 社: 清华大学出版社
出版时间: 2009-3-1字数:版次: 1页数: 197印刷时间:开本: 16开印次: 1纸张:I S B N : 9787811235609包装: 平装内容简介
本书主要讲述、分析了各种算法的基本原理和解题技巧,以五种通用的算法设计技术为主线论述了分治策略、贪心策略、动态规划策略、分支限界法、回溯法等问题,对算法的时间和空间复杂性进行了分析。在内容的选材上注重基本理论和具体实例的结合,以便于读者理解。本书还对概率算法、近似算法、密码算法和NP问题进行了简单的介绍。
本书可作为计算机系本科学生及研究生的教材,也可作为计算机科学研究和软件开发技术人员的参考用书。
目录
第1章绪论
1.1算法的时间复杂性
1.2算法的空间复杂性
1.3两个算法的分析实例
1.4算法设计技术
1.4.1分治方法
1.4.2回溯法
1.4.3贪心法
1.4.4动态规划法
1.4.5分支限界法
1.4.6递归方程解的展开式
习题
第2章排序算法
2.1插入算法
2.1.1直接插入排序
2.1.2折半插入排序
2.1.3希尔排序
2.2选择排序
2.2.1直接选择排序
2.2.2堆排序
2.3交换排序
2.3.1冒泡排序
2.3.2快速排序
2.4归并排序
2.5基数排序
2.6外部排序
2.6.1归并排序
2.6.2多步归并算法
2.7各种内部排序方法的比较讨论
习题
第3章查找树
3.1二分查找树
3.22—3—4树
3.3红黑树
3.48树
习题
第4章图的算法
4.1基本概念
4.2图的表示方法
4.3图的遍历
4.4所有点对之间的最短路径
4.5最小生成树
习题
第5章串匹配
5.1简单的字符串匹配算法
5.2Knuth—Morris—Pratt(KMP)字符串匹配
5.3BM算法
5.4RK算法
习题
第6章分治算法
6.1二分搜索
6.2求最大元和最小元
6.3大整数乘法
6.4矩阵乘法算法
6.5矩阵乘积的Winograd算法
习题
第7章贪心算法
7.1背包问题
7.2带时限的作业排序
7.3单源最短路径问题
7.4最小生成树问题
7.5Dijkstra各点之间最短路径的优化算法
习题
第8章回溯法
8.1n皇后问题
8.2图的着色问题
8.30—1背包问题
8.4哈密顿回路
8.5子集和数
习题
第9章动态规划法
9.1最长公共子序列问题
9.2矩阵连乘问题
9.3多阶段决策过程最优化问题
9.40—1背包问题
9.5流水线调度问题
习题
第10章分支限界法
第11章概率算法
第12章几何问题算法
第13章NP完全问题
第14章密码学算法
第15章近似算法
第16章并行算法
参考文献
书摘插图
第1章绪论
1.4算法设计技术
算法设计的基本要求是:首先是正确性(Correctness),程序中不含语法错误,程序对一切合理的输入数据都能产生满足要求的结果,程序也能对不合理的输入数据产生符合规格要求的结果。其次,算法要具有可读性(Readability),因为研究算法的目的是为了阅读和交流,可读性有助于对算法的理解,可读性有助于对算法的调试和修改。算法应具有高效率与低存储量,处理速度要快,存储容量要小,有时候处理时间和存储空间是矛盾的,实际中,往往是求得时间和空间的折中。
多年来,人们提出了一些通用的算法设计技术如分治方法、贪心法、回溯法、动态规划法、分支限界法等,我们用它们解决了许多类的问题,产生有效的算法,其中贪心法、动态规划法和分支限界法大多用来解决最优化的问题。本小节简单地来介绍一下这五种设计方法,具体算法将会在第6、7、8、9、10章分别介绍。
1.4.1分治方法
分治法的设计思想是将一个难以直接解决的大问题分割成一些规模较小但类型相同的问题,以便各个击破,分而治之。
……