內容簡介
本書圍繞程式設計典型算法,精心編織了一個扣人心弦又趣味橫生的偵探緝兇故事。小說主人公運用高超的搜尋技巧和精深的算法知識,最終識破陰謀、緝拿元兇。其間,用二分搜尋搜查走私船、用搜尋樹跟蹤間諜、用深度優先搜尋逃離監獄、用優先佇列開鎖及用最佳優先搜尋追尋線索等跌宕起伏又富含算法精要的情節,讓讀者在愉悅的沉浸式體驗中快速提升境界,加深對程式世界的理解。本書適合開發人員、編程愛好者和相關專業學生閱讀,也是少兒計算機科學啟蒙的絕佳讀物。
目錄信息
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