《趣學算法(第2版)》是2022年人民郵電出版社出版的圖書,作者是陳小玉。
基本介紹
- 中文名:趣學算法(第2版)
- 作者:陳小玉
- 出版時間:2022年10月
- 出版社:人民郵電出版社
- ISBN:9787115596000
- 類別:圖書>計算機/網路>程式設計>算法
- 開本:128 開
- 裝幀:平裝-膠訂
內容簡介,圖書目錄,作者簡介,
內容簡介
本書是用輕鬆有趣的方法學習算法的入門指南。按照算法策略分為8章。第1章以算法之美、趣味故事引入算法,講解算法複雜度的計算方法,以及爆炸性增量問題。2~7章講解經典算法,包括貪心算法、分治算法、動態規划算法、回溯法、分支限界法、網路流算法。第8章講解實際套用中的算法和高頻面試算法,包括啟發式搜尋、敏感詞過濾、LRU算法、快慢指針、單調棧、單調佇列、零錢兌換、股票交易等。每一種經典算法都有4~8個實例,多數按照問題分析、算法設計、完美圖解、算法詳解、算法分析及最佳化拓展的流程進行講解。全書講解清晰,通俗易懂,緊扣工程教育認證的要求和實用性,力求滿足新工科人才培養的需要。
本書為河南省“十四五”普通高等教育規劃教材,提供了豐富的教學資源與答疑服務,包括原始碼、課件、教案、習題、線上答疑和線上測試系統。本書既適合作為高等院校計算機及相關專業的算法教材,也適合對算法感興趣的初學者以及需要提升技術能力的在職人員閱讀。
圖書目錄
第 1章 算法之美 1
1.1 打開算法之門 2
1.2 妙不可言—算法複雜性 2
1.3 一棋盤的麥子 8
1.4 神奇的兔子數列 9
1.5 算法學習瓶頸 14
1.6 本章小結 15
第 2章 貪心算法 16
2.1 貪心算法基礎 17
2.1.1 貪心本質 17
2.1.2 貪亦有道 17
2.1.3 貪心算法秘籍 18
2.2 裝載問題 18
2.2.1 問題分析 18
2.2.2 算法設計 18
2.2.3 完美圖解 19
2.2.4 算法詳解 19
2.2.5 算法分析及最佳化拓展 20
2.3 阿里巴巴與四十大盜—背包問題 21
2.3.1 問題分析 21
2.3.2 算法設計 22
2.3.3 完美圖解 22
2.3.4 算法詳解 23
2.3.5 算法分析及最佳化拓展 24
2.4 高級鐘點秘書—會議安排 24
2.4.1 問題分析 25
2.4.2 算法設計 26
2.4.3 完美圖解 26
2.4.4 算法詳解 27
2.4.5 算法分析及最佳化拓展 28
2.5 一場說走就走的旅行—短路徑 28
2.5.1 問題分析 29
2.5.2 算法設計 29
2.5.3 完美圖解 30
2.5.4 算法詳解 33
2.5.5 算法分析及最佳化拓展 34
2.6 神秘電報密碼—霍夫曼編碼 36
2.6.1 問題分析 37
2.6.2 算法設計 38
2.6.3 完美圖解 38
2.6.4 算法詳解 41
2.6.5 算法分析及最佳化拓展 48
2.7 溝通無限校園網—小生成樹 49
2.7.1 問題分析 49
2.7.2 Prim算法 50
2.7.3 完美圖解 51
2.7.4 算法詳解 56
2.7.5 算法分析及最佳化拓展 57
2.7.6 Kruskal算法 57
第3章 分治算法 62
3.1 分治算法基礎 63
3.1.1 分而治之 63
3.1.2 分治算法要素 63
3.1.3 分治算法秘籍 63
3.2 二分搜尋 64
3.2.1 問題分析 64
3.2.2 算法設計 64
3.2.3 完美圖解 65
3.2.4 算法詳解 66
3.2.5 算法分析及最佳化拓展 66
3.3 合併排序 68
3.3.1 問題分析 68
3.3.2 算法設計 68
3.3.3 完美圖解 68
3.3.4 算法詳解 68
3.3.5 算法分析及最佳化拓展 71
3.4 快速排序 72
3.4.1 問題分析 72
3.4.2 算法設計 73
3.4.3 完美圖解 74
3.4.4 算法詳解 75
3.4.5 算法分析及最佳化拓展 76
3.5 分治算法複雜度求解秘籍 79
3.5.1 遞推法 79
3.5.2 遞歸樹 80
3.5.3 大師解法 80
第4章 動態規划算法 84
4.1 動態規划算法基礎 85
4.1.1 算法思想 85
4.1.2 算法要素 85
4.1.3 解題秘訣 86
4.2 爬樓梯 86
4.2.1 問題分析 86
4.2.2 算法詳解 87
4.2.3 算法分析及最佳化拓展 88
4.3 長上升子序列 89
4.3.1 問題分析 89
4.3.2 算法設計 89
4.3.3 完美圖解 90
4.3.4 算法詳解 91
4.3.5 算法分析及最佳化拓展 91
4.4 長公共子序列 93
4.4.1 問題分析 93
4.4.2 算法設計 95
4.4.3 完美圖解 96
4.4.4 算法詳解 99
4.4.5 算法分析及最佳化拓展 100
4.5 編輯距離 100
4.5.1 問題分析 101
4.5.2 算法設計 102
4.5.3 完美圖解 102
4.5.4 算法詳解 105
4.5.5 算法分析及最佳化拓展 106
4.6 遊艇租賃 106
4.6.1 問題分析 106
4.6.2 算法設計 107
4.6.3 完美圖解 108
4.6.4 算法詳解 111
4.6.5 算法分析及最佳化拓展 111
4.7 矩陣連乘 112
4.7.1 問題分析 112
4.7.2 算法設計 114
4.7.3 完美圖解 115
4.7.4 算法詳解 118
4.7.5 算法分析及最佳化拓展 119
4.8 0/1背包問題 119
4.8.1 問題分析 120
4.8.2 算法設計 121
4.8.3 完美圖解 121
4.8.4 算法詳解 125
4.8.5 算法分析及最佳化拓展 125
4.9 沒有上司的舞會 128
4.9.1 問題分析 128
4.9.2 算法設計 129
4.9.3 完美圖解 129
4.9.4 算法詳解 131
4.9.5 算法分析及最佳化拓展 132
4.10 動態規划算法秘籍 132
第5章 回溯法 134
5.1 深度優先搜尋 135
5.1.1 算法思想 135
5.1.2 完美圖解 135
5.2 回溯法基礎 136
5.2.1 算法思想 136
5.2.2 算法要素 136
5.3 0/1背包問題 138
5.3.1 問題分析 138
5.3.2 算法設計 138
5.3.3 完美圖解 140
5.3.4 算法詳解 142
5.3.5 算法分析及最佳化拓展 143
5.4 團 144
5.4.1 問題分析 145
5.4.2 算法設計 145
5.4.3 完美圖解 147
5.4.4 算法詳解 151
5.4.5 算法分析及最佳化拓展 152
5.5 地圖著色 153
5.5.1 問題分析 153
5.5.2 算法設計 153
5.5.3 完美圖解 155
5.5.4 算法詳解 158
5.5.5 算法分析及最佳化拓展 159
5.6 n皇后問題 159
5.6.1 問題分析 160
5.6.2 算法設計 160
5.6.3 完美圖解 161
5.6.4 算法詳解 168
5.6.5 算法分析及最佳化拓展 168
5.7 加工順序 170
5.7.1 問題分析 170
5.7.2 算法設計 171
5.7.3 完美圖解 172
5.7.4 算法詳解 176
5.7.5 算法分析及最佳化拓展 177
5.8 回溯法秘籍 177
第6章 分支限界法 179
6.1 廣度優先搜尋 180
6.1.1 算法思想 180
6.1.2 完美圖解 180
6.2 分支限界法基礎 182
6.2.1 算法思想 183
6.2.2 算法步驟 183
6.3 0/1背包問題 183
6.3.1 問題分析 184
6.3.2 算法設計 184
6.3.3 完美圖解 185
6.3.4 算法詳解 189
6.3.5 算法分析及最佳化拓展 190
6.4 旅行商問題 194
6.4.1 問題分析 194
6.4.2 算法設計 194
6.4.3 完美圖解 195
6.4.4 算法詳解 198
6.4.5 算法分析及最佳化拓展 199
6.5 工程布線 200
6.5.1 問題分析 200
6.5.2 算法設計 201
6.5.3 完美圖解 201
6.5.4 算法詳解 207
6.5.5 算法分析及最佳化拓展 208
6.6 回溯法與分支限界法的異同 209
第7章 網路流算法 210
7.1 好的規劃帶來好效益—流 211
7.1.1 增廣路算法 212
7.1.2 完美圖解 213
7.2 短增廣路—EK算法 215
7.2.1 算法設計 215
7.2.2 完美圖解 216
7.2.3 算法詳解 221
7.2.4 算法分析 223
7.3 峰迴路轉—Dinic算法 223
7.3.1 算法設計 223
7.3.2 完美圖解 223
7.3.3 算法詳解 225
7.3.4 算法分析 226
7.3.5 當前弧最佳化 226
7.4 一蹴而就—ISAP算法 227
7.4.1 算法設計 228
7.4.2 完美圖解 229
7.4.3 算法詳解 231
7.4.4 算法分析 232
7.5 小費用流—小費用路算法 232
7.5.1 算法設計 233
7.5.2 完美圖解 233
7.5.3 算法詳解 234
7.5.4 算法分析 235
7.5.5 消圈算法 235
7.6 匹配問題 237
7.6.1 問題分析 237
7.6.2 算法設計 238
7.6.3 完美圖解 238
7.6.4 算法詳解 239
7.6.5 算法分析 239
7.6.6 匈牙利算法 239
7.7 試題庫問題 242
7.7.1 問題分析 242
7.7.2 算法設計 242
7.7.3 完美圖解 243
7.7.4 算法詳解 244
7.7.5 算法分析 245
7.8 收益問題 245
7.8.1 問題分析 245
7.8.2 算法設計 246
7.8.3 完美圖解 247
7.8.4 算法詳解 249
7.8.5 算法分析 249
7.9 旅遊路線問題 249
7.9.1 問題分析 250
7.9.2 算法設計 251
7.9.3 完美圖解 251
7.9.4 算法詳解 252
7.9.5 算法分析 254
7.10 網路流問題求解秘籍 254
第8章 實用算法 255
8.1 啟發式搜尋在遊戲中的套用 256
8.1.1 A*算法 256
8.1.2 IDA*算法 256
8.1.3 八數碼遊戲 257
8.2 多模匹配算法在敏感詞過濾中的套用 264
8.2.1 字典樹 265
8.2.2 AC自動機 269
8.2.3 敏感詞過濾 272
8.3 LRU快取淘汰算法的套用場景 273
8.3.1 LRU算法 274
8.3.2 哈希鍊表 275
8.3.3 算法詳解 277
8.3.4 算法分析 280
8.4 高頻面試算法 280
8.4.1 快慢指針 280
8.4.2 棧的小值 288
8.4.3 滑動視窗中的值 289
8.4.4 零錢兌換 293
8.4.5 股票買賣秘籍 295
附錄A 特徵方程和通項公式 299
附錄B sort函式 302
附錄C 優先佇列 305
附錄D 鄰接表 312
附錄E 並查集 318
附錄F 四邊不等式 323
附錄G 排列樹 327
附錄H 貝爾曼規則 339
附錄I 增廣路中每條邊成為關鍵邊的次數 342
作者簡介
陳小玉,南陽理工學院副教授,軟體工程師,主要研究方向為算法最佳化和機器學習。出版作品《趣學算法》《趣學數據結構》《算法訓練營:海量圖解 競賽刷題(入門篇)》《算法訓練營:海量圖解 競賽刷題(進階篇)》,所教學生多次獲得ACM、藍橋杯等算法競賽獎項。