前言 智能时代的今天,互联网是道开胃菜,人工智能是主菜。但不管是AlphaGo打遍天下无敌手,还是红客与黑客网络大战,程序设计都是必要的元技能。“如果你控制了代码,那就控制了世界。”这是未来学家Marc Goodman的预言,现在正在慢慢成为现实。 “Pascal之父”Nicklaus Wirth提出的公式“算法+数据结构=程序”展示了程序的本质。算法不但是程序,也是计算机科学的核心和灵魂。David Berlinski更是认为算法成就了现代世界。 “科学殿堂里陈列着两颗熠熠生辉的宝石: 一颗是微积分; 另一颗就是算法。微积分成就了现代科学,而算法成就了现代世界。” 面对各个应用领域的大量复杂问题,最重要的是建立数学模型并设计高效的求解算法。在当今复杂、海量信息的大数据处理中,好算法往往是一锤定音的利器。 本书从解决问题和应用实例入手,按照提出问题、分析问题、解决问题、总结问题的步骤,培养学生分析问题和解决问题的能力。以实践和能力为导向,线上开放与线下实践相结合,自动评测和互动交流相结合,专题案例与思考讨论相结合,聚集和重组课程内容,适应探究性和碎片化学习,适应自主性和多样化学习,适应多元化和个性化需求,培养学生主动学习、研究和创新意识。 本书共14章,主要内容包括算法与问题、算法分析、枚举算法、贪心算法、递推算法、分治算法、动态规划算法、回溯算法、分支限界、网络流算法、随机算法、计算复杂性、近似算法和图算法。 本书适合作为高等院校计算机相关专业高年级本科生和研究生的教材,也可作为ACM竞赛培训和成人教育自学教材,还可作为电子工程技术人员的参考用书。 本书由李恒武老师编写。特别感谢耿蕾蕾老师和张琦乾同学的审核和建议,张琦乾同学给出全书算法示例和POJ编程习题的标准模板。在本书的编写过程中,得到了许多老师和学生的支持与帮助,在此表示诚挚的感谢! 本书是中国大学MOOC、智慧树和学银在线精品课程配套教材,也是工科联盟和一流专业课程配套教材,提供完整的视频、电子教案、知识梳理、章节测验、实践作业、思考讨论、在线题库和文档资源,便于教学和学生实践。 最后,衷心祝愿读者能够从此书中获益,从而实现自己的编程梦想。由于本书的内容较多、牵涉的技术较广,书中疏漏之处在所难免,欢迎读者在使用过程中提出宝贵意见。 李恒武 2021年4月