基本信息
内容简介
目录
1.1 算法与程序
1.2 算法复杂性分析
习题1
第2章 递归与分治策略
2.1 递归的概念
2.2 分治法的基本思想
2.3 二分搜索技术
2.4 大整数的乘法
2.5 Strassen矩阵乘法
2.6 棋盘覆盖
2.7 合并排序
2.8 快速排序
2.9 线性时间选择
2.10 最接近点对问题
2.11 循环赛日程表
习题2
前言
本书第2版修正了第1版中已发现的一些错误,并将第1版的第8章和第9章合并为第9章,增加了第8章线性规划与网络流算法的有关内容。
全书共分9章,第1章介绍算法的基本概念,并对算法的计算复杂性和算法的描述作了简要阐述。然后围绕算法设计常用的基本设计策略组织了第2章至第9章的内容。
第2章介绍递归与分治策略,它是设计有效算法最常用的策略,也是必须掌握的方法。
第3章是动态规划算法,以具体实例详述动态规划算法的设计思想、适用性以及算法的设计要点。
第4章介绍贪心算法,它也是一种重要的算法设计策略,它与动态规划算法的设计思想有一定的联系,但其效率更高。按贪心算法设计出的许多算法能导致最优解。其中有许多典型问题和典型算法可供学习和使用。
第5章和第6章分别介绍回溯法和分支限界法。这两章所介绍的算法适合于处理难解问题。其解题思想各具特色,值得学习和掌握。
第7章介绍概率算法,对许多难解问题提供了高效的解决途径,是有很高实用价值的算法设计策略。
第8章介绍实用性很强的线性规划与网络流算法。许多实际应用问题可以转化为线性规
划和网络流问题,并可用第8章中的算法有效求解。
第9章首先介绍计算模型、确定性和非确定性图灵机,然后进一步深入介绍NP完全性理论和NP难问题的近似算法,这是当前计算机算法领域的热点研究课题,具有很高的实用价值。
在本书各章的论述中,首先介绍一种算法设计策略的基本思想,然后从解决计算机科学和应用中的实际问题人手,由简到繁地描述几个经典的精巧算法。同时对每个算法所需的时间和空间进行分析,使读者既能学到一些常用的精巧算法,又能通过对算法设计策略的反复应用,牢固掌握这些算法设计的基本策略,以期收到融会贯通之效。在为各种算法设计策略选择用于展示其设计思想与技巧的具体应用问题时,本书有意重复选择某些经典问题,使读者能深刻地体会到一个问题可以用多种设计策略求解。同时通过对解同一问题的不同算法的比较,使读者更容易体会到每一种具体算法的设计要点。随着本书内容的逐步展开,读者也将进一步感受到综合应用多种设计策略可以更有效地解决问题。
本书采用面向对象的C++语言作为算法描述手段,在保持C++优点的同时,尽量使算法描述简明、清晰。
为便于学习,我们在章首增加了学习要点提示,在章末配有难易适度的习题。为便于教学,本教材将免费提供电子课件和其他教学参考资料(包括习题解题思路提示和上机实验安排等)。请任课教师登录电子工业出版社华信教育资源网http://www.hxedu.com.cn或直接联系教材服务部010-68152204索取。
在本书编写过程中,得到了全国高等学校计算机专业教学指导委员会的关心和支持。福州大学"211工程"计算机与信息工程重点学科实验室为本书的写作提供了优良的设备和工作环境。电子工业出版社负责本书编辑出版工作的全体同仁为本书的出版付出了大量辛勤的劳动,他们认真细致、一丝不苟的工作精神保证了本书的出版质量。傅清祥教授在百忙之中认真审阅了全书,提出了许多宝贵的改进意见。在此,谨向每一位曾经关心和支持本书编写工作的各方面人士表示衷心的谢意!
由于作者的知识和写作水平有限,书稿虽几经修改,仍难免有缺点和错误。热忱欢迎同行专家和读者批评指正,使本书在使用中不断得到改进,日臻完善。作者E-mail:wangxd@fzu.edu.cn。
作 者