《啊哈!算法神探:一部谷歌首席工程师写的CS小说》围绕程序设计典型算法,精心编织了一个场景,让读者通过本书学会优先搜索、深度优先搜索、迭代加深、并行算法、二分搜索等算法背后的原理,字符串、数组、栈和队列等基本计算机科学概念,学习如何修改搜索算法以适应不同的数据结构、如何在特定情况下选择的算法,以及何时应该使用基于常识的启
发式算法,以加深对程序世界的理解。
本书的每一章都会伴随情节引入一个新的算法概念,并在结尾处回顾总结本章内出现的专业知识。
目标读者:
少儿计算机科学启蒙读物,也适应对计算机算法感兴趣的学习者和相关从业人员,侦探小说爱好者等。
全国青少年信息学奥林匹克金牌教练和全国青少年信息学奥林匹克金牌选手联合翻译,让读者在愉悦的沉浸式体验中学习算法,收获无敌逻辑力和思维力!
译者简介:
啊哈磊(纪磊)
啊哈编程创始人,曾经的编程算法竞赛保送生,毕业于武汉大学。曾在微软亚洲研究院从事机器学习相关研发工作,也做过老师,是全国青少年信息学奥林匹克竞赛金牌教练。著有畅销编程科普书《啊哈C语言!逻辑的挑战》《啊哈!算法》等,总计销量超过二十万册。
李嘉浩
作者简介:
Jeremy Kubica 在 Google 任职首席工程师,致力于机器学习和算法方向。他拥有康奈尔大学的计算机科学本科学位和卡耐基梅隆大学的机器人专业博士学位。在研究生期间,他设计了一个算法,可以探测对地球有威胁的小行星(当然,还尚未能阻止那些小行星)。Kubica 同时也是著名博客Computational Fairy Tales的作者。
技术审校者:
Heidi Newton 拥有新西兰坎特伯雷大学计算机科学专业的学士学位,以及新西兰惠灵顿维多利亚大学计算机科学专业的硕士学位。她目前就职于坎特伯雷大学计算机专业的代码复仇者研究小组,并在业余时间进行相关辅导和咨询工作。她目前致力于改善关于计算机科学和编程的教学资源。
曾获全国青少年信息学奥林匹克竞赛金牌,国家集训队最小选手。拥有美国麻省理工学院计算机科学及音乐双学位。喜欢行走在科学与艺术的交接点。
前言
致 谢
我要对所有支持本书和为本书做出了贡献的人们深表感谢。
首先,我想向 No Starch 出版社团队的所有人致谢。特别是 Liz Chadwick 和Riley Hoffman 在本书的编辑过程中给予我的帮助、指导和建议。Liz 高质量的建议使得本书的故事内容保持了流畅清晰。同时,我也很感谢她提出的将本书涉及的专业内容以讲义形式呈现的建议。感谢 Bill Pollock 和 Tyler Ortman 的支持,特别感谢 Bill 为本书书名提供的建议。也感谢 Carlos Bueno 向我介绍了 No Starch 出版社。
感谢Miran Lipovacˇa为本书提供了精美的插图。这些插图很好地刻画了本书的人物特色和故事情节。
感谢 Heidi Newton从专业角度进行的细致深度的审校。她的审阅很大程度上确保了本书所涵盖的内容和概念能够以准确易懂的方式呈现出来。非常感谢她针对书中的晦涩难懂处给予的提醒。
同时也感谢所有阅读过本书早期手稿并提供了宝贵建议的人:John Bull、Mike Hochberg、Edith Kubica、Regan Lee和 Kristen “Kit” Subbs 博士。感谢 Ilana Schwarcz 对于本书早期手稿的编辑,以及对本书在行文上的建议和帮助。
最后,我想由衷地感谢我的家人,特别是父母在我孩童时期对于我的计算机兴趣的支持,以及对我写作本书给予的鼓励。
导 读
本书关注的是计算机思维和搜索算法。这些故事介绍并阐释了较高层次的计算机思想,探索了它们背后的动机及其在非计算机领域中的应用。本书并不奢望对算法进行非常详尽而全面的描述,书中的故事也不是为了替代计算机科学中那些坚实而严谨的技术性描述。相反,它们的作用更像是插图:对整体思想进行补充,帮助你更好地理解算法。
本书介绍了一系列的计算方法,它们大致上属于搜索算法的范畴。书中每一章首先通过一个故事来讲解算法的大致思想,随后再用讲义的形式来对算法进行更为技术性的解释。读者可以完全跳过这些技术讲解部分,同时又不会错过任何一个精彩的故事环节。
本书假定你已经对一些基本的计算机科学思想有所了解,但你并不需要掌握任何一门编程语言。本书中的算法适用于各种编程语言和不同领域的问题。