前言
“数据结构”被公认为计算机专业的“顶天立地”课程之一。学好这门课程将为后续课程的学习奠定坚实的基础,并对未来从事计算机行业工作时高效利用计算资源大有裨益。“数据结构”作为计算机相关专业的核心基础课程之一,伴随着计算机编程技术的发展而快速发展,其知识体系已相对完备。
然而,在当前大数据驱动的人工智能(AI)时代,尤其是通用人工智能时代,低年级本科生中经常出现“消化不了”和“吃不饱”两极分化的现象,并有持续加剧之势。基于此,本书的初衷是既覆盖知识基础(面向“消化不了”的学生群体),又链接最新的人工智能技术(面向“吃不饱”的学生群体)。同时考虑到不能僭越后续如“数据挖掘”“机器学习”“深度学习”等人工智能相关课程的内容,本书力图浅尝辄止,为低年级的本科生种下一颗人工智能的种子。实际上,在许多后期的研究和工作中,经常会发现某些先进的人工智能算法思想仍然与数据结构的基本思想一致,甚至直接借鉴而完成这些人工智能算法的设计。因此,为了加强数据结构和人工智能的联系,本书初步探索如何链接二者。
实现二者的链接,存在两种基本思路: 一是每种数据结构的实现都使用相关的人工智能算法举例,但是,这样的内容会相对晦涩难懂,这是因为初学者的前期基础薄弱和教材篇幅有限;二是每种数据结构仅以某些人工智能相关算法为例,不过多纠结实现细节,算法的思想与数据结构相关即可。本书基本采用后者视角,目的是使学生了解某些经典数据结构是大有用处的,在最先进的人工智能技术中有其身影,也为后续的人工智能相关课程奠定基础。
本书是在笔者经过三年的谨慎思考后,与合作者、学生(包括高年级本科生、硕士生和博士生)和其他高校相关任课教师一起讨论后着手组稿、成书的。实际上,一些经典的数据结构讲解及相关习题在互联网上都有更详细的解答,作为计算机相关专业的学生,自行学习并非难事,但是,教材的系统性和连贯性有助于读者理解其进化与应用思想。因此,本书的编写仍然遵循经典的数据结构知识脉络。全书共10章,第1章为绪论,介绍数据结构和算法的相关基础概念,普及数据结构和人工智能的发展史;第2~5章为线性结构,包括线性表、栈与队列、串、数组与广义表的相关概念和实现过程,以及它们在智能算法中的应用举例;第6、7章为代表性的非线性结构,即树和图,重点阐述其相关概念和各种算法的实现,并穿插智能算法的应用举例;第8、9章为查找和排序,介绍各种查找和排序算法的实现过程,并分别关联智能算法的应用;第10章为文件与外部排序,介绍文件和外部排序的概念及其算法实现。本书理论与实践并重,各章之后附有习题和相关的前沿技术科普,并简述部分科学家的生平事迹,旨在培养学生的科学家精神。
本书由张海军、马江虹和张正共同编写,由张海军统编全稿。其中,张海军作为本书发起人,负责全书大纲和基本内容的设计,并负责第1~5章的编写;马江虹负责第6、7章的编写;张正负责第8~10章的编写。同时,有多名学生参与协助本书的整理,诚挚感谢黄哲、于新蕊、孙慧玥、蔡恭灿、王润哲、张纯鑫、焦小倩、周海洋、林照楠、杨德照、李春阳、周奇凤、刘康喆、黄雨锐、温骏伟、樊红雨、魏佳明、何汶珏、林翰、陈松岭、吴清鹏等同学;感谢周栋梁和施鉴洋在本书编写前期提出的宝贵建议。这里,还要特别感谢黄虎杰教授、郑宏珍教授和叶允明教授,他们的指导和提供的课件资源为本书的编写提供了必要基础。清华大学出版社编辑为本书的出版提供了诸多帮助和条件,在此一并表示衷心的感谢。本书的出版得到了广东省高等教育教学研究和改革项目(编号: 粤教高函(2024)9号)、广东省普通高校创新团队项目(自然)(编号: 2022KCXTD038)、广东省自然科学基金杰出青年项目(编号: 2021B1515020088)、深圳市教育科学“十四五”规划2023年度课题人工智能专项项目(编号: rgzn23001)、哈尔滨工业大学研究生教育教学改革研究项目(编号: 23HX019)等的资助,在此表示衷心的感谢。
由于能力有限,加之本书是初步探索数据结构与智能算法链接之作,书中逻辑、技术整理、撰写难免有所疏漏,可能存在错误和不足之处,敬请广大读者批评斧正。衷心希望读者与作者共同探讨数据结构与人工智能的协同发展,共同促进“数据结构”课程教学的与时俱进及融合创新。
最后,本书秉承“尊重经典,夯实基础;数智步进,链接前沿;自主强化,广达融通”之宗旨,希望读者在学习计算机基础之初就种下一颗人工智能的种子,快速适应人工智能时代。
张海军
于哈尔滨工业大学(深圳)校园
2025年3月