趣學算法(第2版)

陳小玉

  • 趣學算法(第2版)-preview-1
  • 趣學算法(第2版)-preview-2
趣學算法(第2版)-preview-1

買這商品的人也買了...

商品描述

本書是用輕松有趣的方法學習算法的入門指南。按照算法策略分為8章。第1章以算法之美、趣味故事引入算法,講解算法復雜度的計算方法,以及爆炸性增量問題。2~7章講解經典算法,包括貪心算法、分治算法、動態規劃算法、回溯法、分支限界法、網絡流算法。第8章講解實際應用中的算法和高頻面試算法,包括啟發式搜索、敏感詞過濾、LRU算法、快慢指針、單調棧、單調隊列、零錢兌換、股票交易等。每一種經典算法都有4~8個實例,多數按照問題分析、算法設計、完美圖解、算法詳解、算法分析及優化拓展的流程進行講解。全書講解清晰,通俗易懂,緊扣工程教育認證的要求和實用性,力求滿足新工科人才培養的需要。

本書為河南省“十四五”普通高等教育規劃教材,提供了豐富的教學資源與答疑服務,包括源代碼、課件、教案、習題、在線答疑和在線測試系統。本書既適合作為高等院校電腦及相關專業的算法教材,也適合對算法感興趣的初學者以及需要提升技術能力的在職人員閱讀。

作者簡介

陈小玉,南阳理工学院副教授,软件工程师,主要研究方向为算法优化和机器学习。出版作品《趣学算法》《趣学数据结构》《算法训练营:海量图解+竞赛刷题(入门篇)》《算法训练营:海量图解+竞赛刷题(进阶篇)》,所教学生多次获得ACM、蓝桥杯等算法竞赛奖项。

目錄大綱

第 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