书名:《算法神探:一部谷歌首席工程师写的CS小说》
作者:(美)杰瑞米 . 库比卡
出版日期:2018
ISBN:
《算法神探:一部谷歌首席工程师写的CS小说》
本书围绕程序设计典型算法,精心编织了一个扣人心弦又趣味横生的侦探缉凶故事。小说主人公运用高超的搜索技巧和精深的算法知识,最终识破阴谋、缉拿元凶。其间,用二分搜索搜查走私船、用搜索树跟踪间谍、用深度优先搜索逃离监狱、用优先队列开锁及用最佳优先搜索追寻线索等跌宕起伏又富含算法精要的情节,让读者在愉悦的沉浸式体验中快速提升境界,加深对程序世界的理解。本书适合开发人员、编程爱好者和相关专业学生阅读,也是少儿计算机科学启蒙的绝佳读物。

第一章 搜索问题 1

警局档案室里的几百份卷宗莫名失踪,警长求助Frank,一位几年前被自己亲自辞退的前警官。

警用算法导论:搜索问题 6


第二章 穷举搜索寻线人 7

搜索第一站:Frank寻找“玻璃箱”Billy。作为一个靠分享信息过活的人,Billy这次竟然不愿透露信息。

警用算法导论:穷举搜索 13


第三章 罪犯农场里的数组和索引 15

搜索第二站:Frank在Crannock农场偶遇Notation警官。虽然饱受Crannock夫妇的呵斥,Frank还是幸运地在数组车上找到一根珍贵的线头。

警用算法导论:数组 22


第四章 字符串及隐藏的信息 23

Frank的回忆:初入警局时学习辨识Crannock农场的指示牌信息,这个指示牌被用来传播各种加了密的非法活动消息。

警用算法导论:字符串 26


第五章 对一艘走私船的二分搜索 27

搜索第三站:Frank和Notation来到Usb港,根据船只的到港时间快速锁定走私船Retry Loop号。

警用算法导论:二分搜索Ⅰ 33


第六章 二分搜索寻线索 37

Frank和Notation假装食品监察员闯入Retry Loop号,快速翻看造假日志寻找蛛丝马迹。

警用算法导论:二分搜索Ⅱ 43


第七章 调整算法,大胆逃离 45

他们被船上恶棍们拖上甲板,恶棍们的资历是如此浅,以至于什么信息都套不出来。

警用算法导论:改编你的二分搜索法 54


第八章 Socks:一个突如其来的插曲 55

峰回路转,素不相识的小巫师Socks来营救,营救武器竟然是一桶桶的腌鳗鱼。


第九章 倒退一步,继续搜索 63

搜索第四站:Mudwall港口,与村民们再三确认,最近没有船到港,一无所获地离开。

警用算法导论:倒退一步 67


第十章 用广度优先搜索去开锁 69

搜索第五站:Frayed Cable岛,这里有一座废弃的监狱,Socks用咒语打开了监狱大门的锁。

警用算法导论:广度优先搜索 76


第十一章 废弃监狱中的深度优先搜索 81

这座废弃的监狱像迷宫一样,不过在Frank的带领下,他们真的在这里找到了那些失踪的卷宗!然而……

警用算法导论:深度优先搜索 89


第十二章 餐厅中的栈和队列 91

Frank的回忆:在警察学院的最初两个月,Frank在餐厅打工,在一次偶然聊天中他意识到了数据结构的重要性。

警用算法导论:栈和队列Ⅰ 97


第十三章 用栈和队列搜索 101

废弃监狱里房间的门突然关闭,卷宗被燃烧,重要线索被毁,他们落荒而逃。

警用算法导论:栈和队列Ⅱ 106


第十四章 分头行动——并行搜索 109

返回Usb港的途中,Frank决定上岸后将Notation和Socks支开,因为他感觉自己无法相信任何人。

警用算法导论:并行算法 115


第十五章 迭代加深可以救你的命 117

Mavis的回忆:在自己还是学徒的一次出海中,虽然地图丢失了,他们仍然用一种看似笨拙的方法在茫茫大海中找到了补给站。

警用算法导论:迭代加深 125


第十六章 逆向索引:缩小搜索范围 127

搜索第六站:上岸后Frank拿着在Crannock农场找到的线头去请教披风专家Cloaksworth 先生,确认这是一件被施了咒语的警察披风上的线头。

警用算法导论:逆向索引 132


第十七章 二叉搜索树陷阱 135

谢过Cloaksworth先生后Frank走在街上,发现自己被探子跟踪了。他转而去追探子,被引入了下水道内建造的高高的二叉搜索梯。

警用算法导论:二叉搜索树Ⅰ 142


第十八章 建造二叉搜索梯 145

Frank一层层爬下梯子,然而爬到最后一层时他受伤了。探子放铁蛇来围攻,Frank艰难爬回地面。

警用算法导论:二叉搜索树Ⅱ 150


第十九章 疑犯的二叉搜索树 151

搜索第七站:调查调职记录,Frank让Socks生成巨大的闪闪发光的魔法树,但是没能找到任何可疑之处。

警用算法导论:二叉搜索树Ⅲ 160


第二十章 将疑犯加到搜索树中 163

Frank决定带着魔法树去见警长,不过途中他们停在了警局记录处,他们需要向魔法树中增加一些节点。

警用算法导论:二叉搜索树Ⅳ 169


第二十一章 二叉搜索树的属性 171

在增加节点的过程中,Socks犯了“小”错误,这引起了Frank的抱怨、咒骂和怀疑。

警用算法导论:二叉搜索树Ⅴ 173


第二十二章 公文字典树 175

途中他们又来到警局档案室,Frank得以在事故现场侦察,在这里他找到了新的线索。

警用算法导论:trie树 179


第二十三章 最佳优先搜索:侦探最值得信赖的工具 183

Frank与警长交谈,发现事态比想象中的更紧迫而严重:攻击城堡的计划、强大的魔法面具、危险的邪恶巫师联盟……

警用算法导论:最佳优先搜索 190


第二十四章 用优先队列进行调查 193

Notation受到警长严厉批评,被停职,因为她一直在擅自调查不属于自己的案件。

警用算法导论:优先队列 199


第二十五章 用优先队列来解锁 201

Frank想回到自己的办公室,却发现再次被跟踪了,他甩掉探子,巧妙地解开安全屋的密码,躲进了安全屋。

警用算法导论:数据结构和搜索 205


第二十六章 启发式搜索 207

搜索第八站:安全屋里的静心反思。Frank反复研究着找到的所有线索,忽然他开始怀疑之前的所有推断。可靠的线索用尽了,模糊的线索也没有了……

警用算法导论:启发式搜索 210


第二十七章 警察学院中的“堆” 213

Loop教授的回忆:警察学院基于教龄分配办公室,95岁的Loop教授有长达70年的教龄,终于争夺到了本应属于自己的办公室。

警用算法导论:堆 219


第二十八章 搜索难题 223

搜索第九站:Frank向Loop教授请教咒语知识。巫术犯罪学是一个危险的领域,而Loop教授却一直能够幸存下来。在这里Frank终于厘清了线索。

警用算法导论:期末考试复习课 229


第二十九章 搜索终点站 231

Frank与Notation来到警局的监狱,一举抓获戴着魔法面具、试图解救自己首领的小巫师,没错,他就是一路同行的Socks。


结  语 239


阅读全文