算法設計與分析

李夢雯

  • 出版商: 化學工業
  • 出版日期: 2022-01-01
  • 售價: $414
  • 貴賓價: 9.5$393
  • 語言: 簡體中文
  • 頁數: 264
  • 裝訂: 平裝
  • ISBN: 7122398862
  • ISBN-13: 9787122398864
  • 立即出貨 (庫存 < 3)

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

商品描述

本書以算法設計策略為知識單元,
系統地介紹了算法設計與分析的概念和方法。
全書內容包括算法的基本概念、排序及並查集算法、遞歸與分治策略、貪婪算法、
動態規划算法、回溯法、分支與限界法、隨機算法、NP完全問題等。
本書從一些經典問題入手,分析如何求解問題,
然後使用偽代碼對問題的算法進行描述,最後對算法的時間複雜度進行分析。
為了便於讀者學習和實踐,本書採用C語言對算法進行描述,
可讀性強。每章內容後附有習題,便於讀者復習鞏固。
 本書可作為高等院校計算機專業本科生和研究生的教材,
也可作為希望進行算法學習和研究的相關人員的參考資料。

作者簡介

洪留榮,淮北師範大學,教授。 1991年7月本科畢業於武漢測繪科技大學,1996年進入中國礦業大學北京校區讀研,1999年10月到淮北師範大學任教,2005年12月畢業於中國礦業大學信息學院,獲得博士學位,從事模式識別和計算機應用方向的工作,2005年12月至今在淮北師範大學計算機科學與技術學院任教,主要承擔的課程有本科生的《算法設計與分析》、《高級語言程序設計》,碩士研究生的《模式識別》和《數字圖像處理》等。

目錄大綱

第1章 算法的基本概念
1.1 算法的定義和特徵 1
1.2 算法複雜性分析 3
1.3 漸進記號 5
1.4 最好情況、最壞情況和平均情況分析 10
1.5 遞歸算法分析 14
習題 20

第2章 排序及並查集算法
2.1 冒泡排序 24
2.2 選擇排序 25
2.3 合併排序 26
2.3.1 merge算法 26
2.3.2 合併排序算法的具體內容 27
2.3.3 合併排序算法分析 30
2.4 堆及堆排序 30
2.4.1 堆的概念及性質 31
2.4.2 堆的操作 32
2.4.3 堆排序 39
2.4.4 堆排序的應用 40
2.5 桶排序 41
2.5.1 桶排序的基本步驟 41
2.5.2 桶排序的時間複雜度 43
2.6 基數排序 44
2.6.1 基數排序的基本思想 44
2.6.2 基數排序算法的實現 45
2.6.3 基數排序算法的合理性證明 47
2.6.4 基數排序的複雜度分析 47
2.6.5 基數排序的應用 48
2.7 並查集算法 48
習題 52

第3章 遞歸與分治
3.1 遞歸算法 54
3.1.1 遞歸算法的基本思想 55
3.1.2 遞歸算法實例 55
3.2 分治法 60
3.2.1 分治法的基本思想 60
3.2.2 分治法的步驟 63
3.2.3 應用分治法進行合併排序 64
3.2.4 快速排序 66
3.2.5 快速排序的改進 70
3.2.6 平面最近點對問題 71
3.2.7 BFPRT算法(TOP-K問題) 81
3.2.8 棋盤覆蓋問題 84
習題 87

第4章 貪婪法
4.1 貪婪算法 89
4.2 貪婪法的設計思想 92
4.3 區間調度問題 92
4.4 背包問題的貪婪算法 94
4.5 狄斯奎諾(Dijkstra)算法 97
4.5.1 狄斯奎諾算法的核心原理 97
4.5.2 狄斯奎諾算法的步驟描述 99
4.5.3 狄斯奎諾算法的實現 101
4.5.4 狄斯奎諾算法的不足 105
4.6 數列極差問題 106
4.6.1 問題分析 106
4.6.2 極差問題的算法設計 107
4.6.3 極差問題的時間和空間複雜度分析 108
4.7 分數轉化問題 108
4.8 被3整除的元素和問題 110
4.9 跳躍遊戲問題 111
習題 114

第5章 動態規劃
5.1 動態規劃基本概述 116
5.1.1 動態規劃的基本術語 118
5.1.2 動態規劃數學模型建立的一般步驟 121
5.2 動態規劃的基本性質 123
5.3 貨郎擔問題 124
5.4 多段圖最短路徑問題 127
5.4.1 多段圖的計算過程 128
5.4.2 多段圖的動態規划算法實現 129
5.5 設備更新問題 131
5.6 最長公共子序列 134
5.6.1 最長公共子序列的搜索過程 135
5.6.2 最長公共子序列算法實現 137
5.7 0/1背包問題 139
5.7.1 0/1背包問題求解分析 140
5.7.2 0/1背包問題的實現 141
5.8 連續子序列和問題 143
5.9 二叉搜索樹 145
5.9.1 OBST問題的動態規劃求解過程 147
5.9.2 OBST問題的實現過程 149
習題 151

第6章 回溯
6.1 問題的解空間和狀態空間樹 153
6.2 狀態空間樹的動態搜索 154
6.3 回溯算法的一般性描述 157
6.4 圖的著色問題 160
6.4.1 圖著色問題的求解過程分析 161
6.4.2 圖著色問題算法實現 163
6.5 n皇后問題 165
6.5.1 n皇后問題的求解過程分析 165
6.5.2 n皇后問題的求解實現 166
6.5.3 數獨問題 168
6.6 一些經典算法的回溯求解 172
習題 182

第7章 分支與限界
7.1 分支與限界算法 184
7.2 作業分配問題 186
7.2.1 分支限界法解作業分配問題的思想方法 186
7.2.2 分支限界法解作業分配問題算法的實現 188
7.3 單源最短路徑問題 192
7.3.1 分支限界法解單源最短路徑問題的思想方法 192
7.3.2 分支限界法解單源最短路徑問題算法的實現 194
7.4 0/1背包問題 197
7.4.1 分支限界法解0/1背包問題的思想方法 197
7.4.2 0/1背包問題分支限界算法的實現 200
7.5 貨郎擔問題 204
7.5.1 費用矩陣的特性及歸約 204
7.5.2 分支限界法解最短漢密爾頓迴路的思想 205
7.5.3 貨郎擔問題的求解過程 208
7.5.4 幾個輔助函數的實現 212
7.5.5 貨郎擔問題分支限界算法的實現 217
習題 219

第8章 隨機算法
8.1 隨機化算法 222
8.1.1 為什麼要隨機化 222
8.1.2 隨機算法 222
8.2 隨機數發生器 223
8.3 數值概率算法 225
8.4 拉斯維加斯算法 229
8.4.1 隨機快速排序算法 230
8.4.2 隨機選擇算法 231
8.4.3 n皇后問題的隨機算法 232
8.4.4 隨機字符串匹配算法 234
8.4.5 整數因子 239
8.5 蒙特卡羅算法 242
8.5.1 函數極大值估計問題 243
8.5.2 主元素問題 244
8.5.3 素數測試問題 246
8.6 隨機算法的應用 251
習題 252

第9章 NP完全問題
9.1 判定問題和優化問題 254
9.2 P類問題和NP類問題 255
9.3 NP完全問題 260
習題 262

參考文獻