图书前言

前言

本书从解决问题的角度出发,系统地介绍了算法分析与算法设计的概念、方法和应用,涵盖的内容包括数据结构、串与序列、动态规划、贪心算法、图算法、概率算法、查找与排序算法等内容。在介绍算法的基础上,本书还分析了算法的基本理论、经典的算法问题和算法实践。本书采用Python作为算法分析与设计的描述与实现语言,共10章。第1章介绍了算法的基本概念以及怎样设计、描述和评价一个算法等相关内容。第2章介绍了数据结构的基础知识,包括线性表、队列、栈、树和二叉树及图等数据结构的基本原理、基本操作及其应用举例,为算法设计奠定基础。第3~8章分别从解决问题的角度出发,对算法的设计与分析内容进行了围绕问题的分类介绍: 第3章排序问题,着重讲述各类排序算法并进行了比较分析; 第4章查找问题,重点介绍了线性表、树、散列表的查找问题; 第5章图的问题,重点讲解了如何采用图结构进行相关问题的求解,并给出最小生成树、关键路径和最短路径等问题的应用举例; 第6章串与序列问题,主要介绍了子串搜索问题和最长公共子串搜索问题的相关算法并给出应用举例; 第7章组合问题,重点讲解动态规划算法、贪心算法、最优装载问题和多机调度问题的求解及其应用举例; 第8章概率问题,主要讲解了数值概率问题、舍伍德算法、拉斯维加斯算法和蒙特卡罗算法内容及应用举例。第9章和第10章主要从经典问题解决和游戏中的算法实现两方面进行内容介绍,重点在于算法的应用与代码实践: 第9章给出了鸡兔同笼问题、汉诺塔问题、三色球问题和野人与传教士问题等经典问题的原理和算法实现; 第10章游戏与算法实践,给出了酷跑游戏、连连看游戏、五子棋游戏和俄罗斯方块游戏的描述和算法实现。  

本书具有如下特点:

(1) 问题导向。区别于传统的算法分析与设计教材“以算法为核心”,本书从解决问题的角度出发,有机结合基本概念给出解决同一类问题的不同算法。

(2) 突出应用性。针对问题结合算法给出应用案例,有助于学生对知识的理解、掌握及其应用能力的提升。

(3) 代码详解。书中每章都提供了比较详细的Python代码实现。

本书可作为新工科技术类计算机相关专业的应用型本科、高职本科或专科教材,也可作为信息类相关专业的选修教材。讲授的学时可为48~64学时,教师可依据专业、学生和学时的实际情况,选讲第1~8章内容,第9章和第10章可作为学生的扩展学习或上机实践内容。本书文字简洁,通俗易懂,提供的代码较为详细,便于自学,可供从事计算机应用等相关工作的科技人员参考。

本书在编写过程中参阅了大量国内外专家、学者发表的著作、论文,在此向这些同行们表示衷心的感谢!

书稿虽经数次修改,但因编者水平有限,难免有不妥之处,诚盼专家和广大读者不吝指正。

编者2023年10月