本書系統(tǒng)地介紹了算法設(shè)計與分析領(lǐng)域的經(jīng)典技術(shù),深入淺出地講述了算法基本理論和方法。內(nèi)容主要包括算法概述、遞歸與分治法、動態(tài)規(guī)劃法、貪心算法、回溯法、分支限界法等。全書設(shè)計了豐富的應(yīng)用實例,對每種算法,均結(jié)合實例,按照問題提出、算法設(shè)計、算法實現(xiàn)(Java語言)及算法復(fù)雜性分析的流程進行了細致講解。為降低學(xué)習(xí)者理解的難度,對算法推理及演算均配置了圖解進行輔助說明,以幫助讀者清晰地掌握算法的設(shè)計思路與技巧。所有算法均設(shè)置了實驗項目,以幫助讀者進行實踐訓(xùn)練。
郭藝輝,女,中山大學(xué)博士,廣東金融學(xué)院互聯(lián)網(wǎng)金融與信息工程學(xué)院講師,長期從事計算機課程的教學(xué)與研究工作。
目 錄
第1部分 算法基礎(chǔ)
第1章 算法概述 3
第2章 遞歸與分治法 9
2.1 基本思想 9
2.2 遞歸算法 10
2.3 二分搜索技術(shù) 12
2.4 合并排序 14
2.5 快速排序 19
2.6 線性時間選擇 22
第3章 動態(tài)規(guī)劃 28
3.1 基本思想 28
3.2 矩陣連乘 29
3.3 最長公共子序列 36
3.4 最優(yōu)二叉搜索樹 40
3.5 電路布線 49
3.6 0-1背包 54
第4章 貪心算法 61
4.1 基本思想 61
4.2 活動安排問題 61
4.3 背包問題 64
4.4 哈夫曼編碼 67
4.5 單源最短路徑 71
4.6 最小生成樹 75
第5章 回溯法 84
5.1 基本思想 84
5.2 裝載問題 84
5.2 批處理作業(yè)調(diào)度 93
5.3 n皇后問題 97
5.4 最大團問題 105
5.5 圖的m著色問題 112
第6章 分支限界法 117
6.1 基本思想 117
6.2 裝載問題 117
6.3 0-1背包 123
6.4 旅行商問題 131
第2部分 算法實驗
第1章 算法概述實驗 143
實驗1 算法概述 143
第2章 遞歸與分治法實驗 145
實驗1 二分搜索術(shù) 145
實驗2 合并排序算法 146
實驗3 快速排序算法 147
實驗4 線性時間選擇算法 149
第3章 動態(tài)規(guī)劃實驗 151
實驗1 矩陣連乘問題 151
實驗2 最長公共子序列問題 152
實驗3 最優(yōu)二叉搜索樹問題 154
實驗4 電路布線問題 156
實驗5 0-1背包問題 157
第4章 貪心算法實驗 160
實驗1 活動安排問題 160
實驗2 背包問題 162
實驗3 哈夫曼編碼問題 163
實驗4 單源最短路徑問題 164
實驗5 最小生成樹問題 166
第5章 回溯法實驗 168
實驗1 裝載問題 168
實驗2 批處理作業(yè)調(diào)度問題 169
實驗3 n皇后問題 171
實驗4 最大團問題 173
實驗5 圖的m著色問題 175
第6章 分支限界法實驗 177
實驗1 裝載問題 177
實驗2 0-1背包問題 178
實驗3 旅行商問題 180
參考文獻 182