前言
David Berlinski在The Advent of the Algorithm中写道: “有两种思想,像珠宝商放在天鹅绒上的宝石一样熠熠生辉,一个是微积分,另一个就是算法。微积分以及在微积分基础上建立起来的数学分析体系铸就了现代科学,而算法则成就了现代世界。”算法是当代信息技术的重要基石,同时也是计算科学的永恒主题。在计算机科学技术领域,算法更是处于核心地位。通过对算法的系统学习和研究,掌握算法设计的主要方法,能够正确分析算法的复杂性,这对每一位从事计算机系统结构、系统软件、应用软件研究和开发的科技人员都是非常重要和必不可少的。本书是编者在结合多年教学经验及实践的基础上编写而成的,详细讲述了多种经典算法设计策略。纵观全书,这里并没有创造出任何新的算法,因为编者仅仅是希望通过对经典算法的讲解,把算法设计与分析中基础且重要的内容用更清晰的思路、更直观的形式展现给读者。
本书主要内容
本书以算法策略为知识单元,共包括9章内容,其中第1章是算法概述,第2~8章是经典的算法设计策略,第9章简单介绍了NP完全理论。
第1章为算法概述。主要介绍什么是算法、为什么学习算法、算法的描述方式、算法设计的一般过程、算法分析、递推方程求解方法等。
第2章为贪心算法——贪心不足。首先介绍贪心算法的本质、贪心算法的基本要素; 然后从问题分析、算法设计、实例构造、算法分析和Python实践5方面讲解经典问题,包括活动安排问题、单源最短路径问题、哈夫曼编码、最小生成树和背包问题等。
第3章为分治算法——分而治之。首先介绍分治算法的本质、分治算法的求解步骤; 然后讲解二分查找、选第二大元素、循环赛日程表、合并排序、快速排序、线性时间选择等经典问题。
第4章为动态规划。首先介绍动态规划的基本思想、求解步骤及基本要素; 然后讲解矩阵连乘问题、凸多边形最优三角剖分、最长公共子序列问题、加工顺序问题、01背包问题及最优二叉查找树等经典问题。
第5章为回溯法——深度优先搜索。首先讲解回溯法的算法框架及思想; 然后介绍典型的解空间结构,讲解用回溯法求解的经典问题,包括01背包问题、最大团问题、批处理作业调度问题、旅行商问题、图的m着色问题及最小质量机器设计问题等。
算法设计与分析(第2版·Python版)
前言
第6章为分支限界法——宽度优先或最小耗费(最大效益)优先搜索。首先讲解分支限界法的基本思想; 然后讲解用分支限界法求解的经典问题,包括01背包问题、旅行商问题、布线问题; 最后对比分析分支限界法和回溯法的异同点。
第7章为线性规划问题与网络流。着重讲述线性规划问题的标准化及单纯形算法、网络流的基本概念及理论、求最大流的增广路算法、最大网络流的变换与应用、求最小费用流的消圈算法、最小费用最大流的变换与应用。
第8章为随机化算法。着重讲解随机数发生器、数值随机化算法、蒙特卡洛算法、拉斯维加斯算法、舍伍德算法,并结合实例讲述每种类型随机化算法的特点。
第9章为NP完全理论。简单介绍NP理论和近似算法,以引发读者进一步学习和研究的兴趣。
本书由王秋芬、胡晨曼负责全书的统稿与审校工作。第4~7章、第9章由南阳理工学院王秋芬编写,第2章由南阳理工学院胡晨曼编写,第1、8章由郑州财经学院彭兆军编写,第3章由郑州财经学院孙育编写。
本书特色
(1) 实例丰富,通俗易懂。针对每种算法设计策略,通过实例图解算法运行过程,形象直观,通俗易懂。
(2) 完整的实践演练,易于上机操作。针对每个经典问题,在算法设计、实例构造的基础上,提供完整Python代码,学习者可以体验从理论到实践的完整过程。
(3) 注重算法实践。针对主要算法概念及算法设计策略,精心设计实践内容,便于学习者巩固算法设计与分析的方法。
(4) 网络资源丰富,便于教学、自学。网络资源包括本书所有Python源代码、习题解析、微课视频、课件、随堂测试等学习资源。
配套资源
为方便教与学,本书配有微课视频、源代码、习题题库、教学课件、教学大纲、教案、期末考试试卷、教学进度表、实验指导书。
(1) 获取微课视频方式: 读者可以先扫描本书封底的文泉云盘防盗码,再扫描书中相应的视频二维码,观看教学视频。
(2) 获取源代码、实验指导书和扩展阅读(数论算法及计算几何算法)方式: 先扫描本书封底的文泉云盘防盗码,再扫描下方二维码,即可获取。
源代码
实验指导书
扩展阅读
(3) 其他配套资源可以扫描本书封底的课件二维码下载。
读者对象
本书面向计算机科学与技术、软件工程、智能科学、数据科学与大数据技术等计算机相关专业的教师、学生及广大科研工作者,计算机类算法相关工作的从业人员。
本书的编写参考了诸多相关资料,得到多方面的支持,在此谨向清华大学出版社负责本书编辑出版工作的全体同仁、资料提供者及每位曾经关心和支持本书编写工作的专家表示衷心感谢。
限于个人水平和时间,书中难免存在疏漏之处,欢迎读者批评指正。
编者
2026年1月
