前言 算法设计与分析是高等学校计算机专业的核心课程。该课程是学习其他专业课的基础,也有利于培养学生的计算思维和求解问题的能力。面对各个应用领域的大量实际问题,最重要的是分析问题的性质并选择正确的求解思路,即找到一个好的算法。特别是在当今复杂、海量信息的大数据处理中,一个好的算法往往起到决定性的作用。 本书针对实际问题需求,分析问题并选择高效求解算法,进行问题的计算复杂性分析,为提高学生的素质和创新能力打下坚实的基础。本书主要介绍算法的基础知识、经典的算法设计技术与分析方法。算法的基础知识部分主要介绍算法相关的基本概念,如什么是算法、算法的表示、算法最坏情况下和平均情况下的时间复杂度、算法时间复杂度函数的主要性质、算法复杂度表示等。经典的算法设计技术与分析方法部分主要介绍递归与分治策略、动态规划法、贪心算法、回溯法、分支限界法、概率算法等算法设计技术,重点介绍这些设计技术的使用条件、分析方法、改进途径,并给出一些重要的应用。在算法分析方面,介绍了二分搜索技术、大整数的乘法、Strassen矩阵乘法、棋盘覆盖、合并排序、快速排序、循环赛日程表、矩阵连乘问题、最长公共子序列、凸多边形最优三角剖分、多边形游戏、图像压缩、活动安排问题、最优装载、哈夫曼编码、最小生成树问题、套利问题、n皇后问题、图的m着色问题、15谜问题、单源最短路径问题、旅行商问题等,并对有的问题进行算法优化设计。 本书是面向高等院校计算机及相关专业的一本算法入门基础教材,主要涉及算法的设计、分析与优化途径。本书中的算法采用C语言或C++语言描述和实现。全书针对算法初学者的特点,在内容安排上力求通俗易懂、循序渐近,通过多个经典的算法设计与分析示例,设计正确的求解算法,进行算法的效率估计,优化算法的途径,分析问题的计算复杂度等,有助于培养学生的算法思维和求解问题的能力。本书各章均精选了一些基础的算法习题,针对各章节不同的算法设计技术设计了多个上机实验,并提供多套自测试卷,有助于学生了解自己对学习内容的掌握程度,自测学习效果。 本书编者有丰富的教学和实践经验,全书主要由李少芳编写,卓明秀参与第4章、第5章的编写工作。 本书可作为大学计算机科学与技术、软件工程等专业本科生的教学用书,也可作为从事实际问题求解的算法设计与分析工作人员的参考书,还适合编程开发人员或爱好者自学使用。 由于本书编写时间仓促,编者自身水平有限,书中难免有不妥之处,诚恳希望广大读者提出宝贵的意见和建议。 编者 2023年1月于莆田学院