译者序

算法是计算科学的核心,在求解实际问题的过程中发挥着重要作用。程序员、算法设计师、架构师、数据分析师等信息技术相关从业人员都应学习算法设计基础知识,积累基础算法,掌握典型的机器学习算法、自然语言处理算法、推荐算法、大规模数据处理算法、密码算法等,理解这些算法在求解实际问题时的优势和局限性并在实践中合理处理相关约束因素。然而,学习和掌握这些知识是一个循序渐进的漫长过程。对于初学者,重要的是在学习程序设计技术的同时,快速了解算法在计算机科学和实践应用中的整体概貌,奠定系统观基础并增强使用算法来求解实际计算问题的信心。

本书是工业界给出的达成上述目标的一个解决方案,致力于利用算法求解实际问题,帮助初学者理解算法背后的逻辑和数学知识,以便最大限度地利用算法。本书概要地讨论算法基础、设计技术、分析方法、排序算法、查找算法、图算法、线性规划算法、机器学习算法、推荐算法、数据算法、密码算法和大规模算法等内容,在讲述方式上忽略对算法细节的讨论,仅给出每个算法的思想和原理,将重点放在如何用Python进行算法实现和算法性能的比较与分析上。读者通过学习本书,可以迅速了解算法的概念,掌握如何用开源包实现各种算法,并理解它们的性能、应用领域和局限性,进而对算法在计算机科学和各种应用领域中的作用有整体了解。

本书由我独立翻译完成。我在深刻理解全书内容的基础上力求准确,对于发现的原书中的多处笔误和印刷错误进行了更正。在翻译本书的过程中,我得到了哈尔滨工业大学计算学部的骆吉洲副教授的帮助和支持,他提出了很多中肯的意见和建议,使我受益匪浅。在此特别向他表示感谢!

限于水平,疏漏和错误在所难免,敬请读者批评指正。如有任何建议,请发送邮件至zhaohaixia@lj.icbc.com.cn。