推荐序

理论之美与前沿技术激动人心的融合,其核心就是算法与数据结构。可以说,如果把硬件作为计算进步的“主体”(躯干),那么对算法和数据结构的研究就是其“大脑”。正是因为可以有效利用计算资源来解决问题,最近的许多技术进步才得以实现,而这往往都归功于对算法的有效开发和实现,以及对数据结构的巧妙使用。

计算机科学家、软件开发人员、数据科学家或任何依赖计算能力工作的人,都应精通算法和数据结构。正因如此,IT公司在面试中最常提问的问题大多与算法和数据结构相关。

即使对于专家来说,要掌握并记住现有算法的所有细节也是相当困难的。不过,真正重要的是对这些算法保持良好的直觉。只有这样,我们才可以像搭积木一样,运用这些算法完成大型项目或者解决各种问题。要有这种直觉,就必须有严谨的理论和数学基础、扎实的编程知识储备,以及对核心概念的深刻理解。

希望本书能帮助你建立起这种直觉。在本书中,Marcello将严谨的理论与广泛的实际应用相结合,以叙事笔触描述了有趣的故事和现实生活中的例子。

Marcello曾在多家知名技术公司担任过开发人员和机器学习科学家,他利用自己丰富的工作经验,以一种清晰、简洁而又不失全面的方式向读者介绍算法与数据结构。这些算法和数据结构已广泛应用于各个行业和研究领域。

凭借广泛适用的方法、友好的语言和有趣的类比,Marcello像展示基础知识中的树和堆那样,为我们揭开了多个复杂主题的神秘面纱,如MapReduce模型、遗传算法以及模拟退火算法。如果读者想要深入了解计算机科学中的构建原理,那么建议你阅读本书。读完本书后,我脑子里唯一的想法是,“我在硅谷准备第一次面试时,要是有这本书就好了!”

——Luis Serrano博士

量子人工智能研究科学家

Zapata Computing公司