啊哈!算法神探:一部谷歌首席工程师写的CS小说
  • 推荐0
  • 收藏0
  • 浏览61

啊哈!算法神探:一部谷歌首席工程师写的CS小说

【美】Jeremy Kubica (作者)  纪磊 , 李嘉浩 (译者) 孙学瑛 (责任编辑)

  • 书  号:9787121445873
  • 出版日期:2023-01-01
  • 页  数:256
  • 开  本:32(145*210)
  • 出版状态:上市销售
  • 原书名: The CS Detective
  • 原书号:9781593277499
  • 维护人:符隆美
《啊哈!算法神探:一部谷歌首席工程师写的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 对于本书早期手稿的编辑,以及对本书在行文上的建议和帮助。
最后,我想由衷地感谢我的家人,特别是父母在我孩童时期对于我的计算机兴趣的支持,以及对我写作本书给予的鼓励。

导  读
本书关注的是计算机思维和搜索算法。这些故事介绍并阐释了较高层次的计算机思想,探索了它们背后的动机及其在非计算机领域中的应用。本书并不奢望对算法进行非常详尽而全面的描述,书中的故事也不是为了替代计算机科学中那些坚实而严谨的技术性描述。相反,它们的作用更像是插图:对整体思想进行补充,帮助你更好地理解算法。
本书介绍了一系列的计算方法,它们大致上属于搜索算法的范畴。书中每一章首先通过一个故事来讲解算法的大致思想,随后再用讲义的形式来对算法进行更为技术性的解释。读者可以完全跳过这些技术讲解部分,同时又不会错过任何一个精彩的故事环节。
本书假定你已经对一些基本的计算机科学思想有所了解,但你并不需要掌握任何一门编程语言。本书中的算法适用于各种编程语言和不同领域的问题。

目录

1 搜索问题.................................................................. 1
警局档案室里的几百份卷宗莫名失踪,警长求助Frank,一位几年前被自己亲自辞退的前警官。
警用算法导论:搜索问题..................................................................................... 6
2 穷举搜索寻线人......................................................... 7
搜索第一站:Frank寻找“玻璃箱”Billy。作为一个靠分享信息过活的人,Billy这次竟然不愿透露信息。
警用算法导论:穷举搜索................................................................................... 13
3 罪犯农场里的数组和索引.............................................15
搜索第二站:Frank在Crannock农场偶遇Notation警官。虽然饱受Crannock夫妇的呵斥,Frank还是幸运地在数组车上找到一根珍贵的线头。
警用算法导论:数组........................................................................................... 22
4 字符串及隐藏的信息................................................. 23
Frank的回忆:初入警局时学习辨识Crannock农场的指示牌信息,这个指示牌被用来传播各种加了密的非法活动消息。
警用算法导论:字符串....................................................................................... 26
5 对一艘走私船的二分搜索............................................ 27
搜索第三站:Frank和Notation来到Usb港,根据船只的到港时间快速锁定走私船Retry Loop号。
警用算法导论:二分搜索Ⅰ............................................................................... 33
6 二分搜索寻线索....................................................... 37
Frank和Notation假装食品监察员闯入Retry Loop号,快速翻看造假日志寻找蛛丝马迹。
警用算法导论:二分搜索Ⅱ............................................................................... 43
7 调整算法,大胆逃离.................................................. 45
他们被船上恶棍们拖上甲板,恶棍们的资历是如此浅,以至于什么信息都套不出来。
警用算法导论:改编你的二分搜索法............................................................... 54
8 Socks:一个突如其来的插曲..................................... 55
峰回路转,素不相识的小巫师Socks来营救,营救武器竟然是一桶桶的腌鳗鱼。
9 倒退一步,继续搜索................................................. 63
搜索第四站:Mudwall港口,与村民们再三确认,最近没有船到港,一
无所获地离开。
警用算法导论:倒退一步................................................................................... 67
10 用广度优先搜索去开锁............................................. 69
搜索第五站:Frayed Cable岛,这里有一座废弃的监狱,Socks用咒语打开了监狱大门的锁。
警用算法导论:广度优先搜索........................................................................... 76
11 废弃监狱中的深度优先搜索........................................81
这座废弃的监狱像迷宫一样,不过在Frank的带领下,他们真的在这里找到了那些失踪的卷宗!然而……
警用算法导论:深度优先搜索........................................................................... 89
12 餐厅中的栈和队列....................................................91
Frank的回忆:在警察学院的最初两个月,Frank在餐厅打工,在一次偶然聊天中他意识到了数据结构的重要性。
警用算法导论:栈和队列Ⅰ............................................................................... 97
13 用栈和队列搜索....................................................101
废弃监狱里房间的门突然关闭,卷宗被燃烧,重要线索被毁,他们落荒而逃。
警用算法导论:栈和队列Ⅱ............................................................................. 106
14 分头行动——并行搜索............................................109
返回Usb港的途中,Frank决定上岸后将Notation和Socks支开,因为他感觉自己无法相信任何人。
警用算法导论:并行算法..................................................................................115
15 迭代加深可以救你的命............................................117
Mavis的回忆:在自己还是学徒的一次出海中,虽然地图丢失了,他们仍然用一种看似笨拙的方法在茫茫大海中找到了补给站。
警用算法导论:迭代加深................................................................................. 125
16 逆向索引:缩小搜索范围.........................................127
搜索第六站:上岸后Frank拿着在Crannock农场找到的线头去请教披风专家Cloaksworth 先生,确认这是一件被施了咒语的警察披风上的线头。
警用算法导论:逆向索引................................................................................. 132
17 二叉搜索树陷阱....................................................135
谢过Cloaksworth先生后Frank走在街上,发现自己被探子跟踪了。他转而去追探子,被引入了下水道内建造的高高的二叉搜索梯。
警用算法导论:二叉搜索树Ⅰ......................................................................... 142
18 建造二叉搜索梯....................................................145
Frank一层层爬下梯子,然而爬到最后一层时他受伤了。探子放铁蛇来围攻,Frank艰难爬回地面。
警用算法导论:二叉搜索树Ⅱ......................................................................... 150
19 疑犯的二叉搜索树 .................................................151
搜索第七站:调查调职记录,Frank让Socks生成巨大的闪闪发光的魔法树,但是没能找到任何可疑之处。
警用算法导论:二叉搜索树Ⅲ......................................................................... 160
20 将疑犯加到搜索树中...............................................163
Frank决定带着魔法树去见警长,不过途中他们停在了警局记录处,他们需要向魔法树中增加一些节点。
警用算法导论:二叉搜索树Ⅳ......................................................................... 169
21 二叉搜索树的属性..................................................171
在增加节点的过程中,Socks犯了“小”错误,这引起了Frank的抱怨、咒骂和怀疑。
警用算法导论:二叉搜索树Ⅴ......................................................................... 173
22 公文字典树..........................................................175
途中他们又来到警局档案室,Frank得以在事故现场侦察,在这里他找到了新的线索。
警用算法导论:trie树 ....................................................................................... 179
23 最佳优先搜索:侦探最值得信赖的工具........................183
Frank与警长交谈,发现事态比想象中的更紧迫而严重:攻击城堡的计划、强大的魔法面具、危险的邪恶巫师联盟……
警用算法导论:最佳优先搜索......................................................................... 190
24 用优先队列进行调查...............................................193
Notation受到警长严厉批评,被停职,因为她一直在擅自调查不属于自己的案件。
警用算法导论:优先队列................................................................................. 199
25 用优先队列来解锁.................................................201
Frank想回到自己的办公室,却发现再次被跟踪了,他甩掉探子,巧妙地解开安全屋的密码,躲进了安全屋。
警用算法导论:数据结构和搜索..................................................................... 205
26 启发式搜索..........................................................207
搜索第八站:安全屋里的静心反思。Frank反复研究着找到的所有线索,忽然他开始怀疑之前的所有推断。可靠的线索用尽了,模糊的线索也没有了……
警用算法导论:启发式搜索............................................................................. 210
27 警察学院中的“堆”...............................................213
Loop教授的回忆:警察学院基于教龄分配办公室,95岁的Loop教授有长达70年的教龄,终于争夺到了本应属于自己的办公室。
警用算法导论:堆............................................................................................. 219
28 搜索难题.............................................................223
搜索第九站:Frank向Loop教授请教咒语知识。巫术犯罪学是一个危险的领域,而Loop教授却一直能够幸存下来。在这里Frank终于厘清了线索。
警用算法导论:期末考试复习课..................................................................... 229
29 搜索终点站..........................................................231
Frank与Notation来到警局的监狱,一举抓获戴着魔法面具、试图解救自己首领的小巫师,没错,他就是一路同行的Socks。
结语...................................................................239

读者评论