图书前言

前言

根据教育部高等学校计算机科学与技术教学指导委员会对高等学校计算机科学与技术专业人才专业能力构成与培养的主题的阐述,计算机专业人才的专业基本能力包括计算思维能力、算法设计与分析能力、程序设计与实现能力、系统能力。算法是系统工作的基础,作为一名优秀的计算机专业人才,关键是建立算法的概念,具备算法设计与分析的能力。

本教材按照“算法基本知识—经典算法思想—算法应用实践”的顺序进行了内容的组织及编写。读者通过阅读算法基础部分,可了解算法的由来及其发展过程,理解算法的含义及问题分类,掌握算法的分析表示方法及算法效率的评价手段。面对日益复杂的问题,可将算法分为蛮力法、分治法及其变体算法、动态规划、时空权衡、贪心算法、回溯和分支限界法等几种。在经典算法思想部分,基本按照“算法思想—算法特点—算法实例—效率分析”的体例分别描述了各种算法,目的是使读者能够深入浅出地理解并掌握算法,能够分析并比较相同问题采用不同算法时的效率。为了提高读者的算法应用能力,本书结合ACM竞赛,从中选取了12个竞赛题目,例如果园篱笆问题、旅游预算问题等,并对各类问题进行了分析和讨论,加强了读者理论和实践相结合的意识。

全书共分为11章。

第1章介绍算法的概念、由来与发展,对基本问题类型、数据结构简要阐述。然后介绍算法求解的框架和步骤。

第2章介绍算法效率分析基础。介绍算法分析的框架、三种渐进符号和基本效率类型。然后介绍针对非递归算法和递归算法的数学分析方法。

第3章介绍蛮力法。它是解决问题的最直接的方法,基于问题的描述和所涉及的概念、定义直接求解。

第4章介绍分治法。分治法是问题求解采用的最常用的算法策略之一,非常重要。

第5章介绍分治策略的变体。介绍了分治法的两种变形: 减治和变治策略,并通过实例介绍这两种策略在实际中的应用。

第6章介绍动态规划算法。以实例详述动态规划的算法思想、特点和求解问题的方法步骤。

第7章介绍时空权衡技术。介绍牺牲时间效率换取空间效率和牺牲空间效率换取时间效率的算法设计方法。

第8章介绍贪心算法。它也是非常重要的算法策略,且效率较高。介绍了几种典型的采用贪心算法求解最优问题的方法。

第9章介绍搜索算法。介绍回溯法和分支限界法,这两种算法适宜解决数据量较大且难解的问题。

第10章介绍NP完全性理论。简单介绍了NP完全性理论,以引起读者进一步学习和研究的兴趣。

第11章精心挑选了12道ACM竞赛题目,对各问题进行了分析和讲解,并在电子资源中提供了程序清单,以供读者学习和参考。

本教材可以作为计算机科学与技术、软件工程、网络工程等专业本科生及研究生的教材使用,同时也可作为有关专业软件开发人员的参考书。

本教材由师智斌等编著,其中师智斌编写了第1章,

井超编写了第2、5、6章,王东编写了第3章,靳雁霞编写了第4章,梁志剑编写了第7章,雷海卫编写了第8~10章,秦品乐编写了第11章。本教材还参阅了大量国内外专家、学者发表的著作、论文,在此向这些同行们表示衷心的感谢!

由于编者水平有限,书稿虽数次修改,仍会有不妥甚至错误之处,诚盼专家和广大读者不吝指正。联系方法: 电子邮件1637350520@qq.com。

编者

2014年6月