算法分析與設計

算法分析與設計

《算法分析與設計》是古德里奇、塔瑪西亞編著,由人民郵電出版社於2006年10月出版。本書系統地闡述了算法設計的方法、技術和套用實例。全書內容包括基礎算法、基本數據結構、基本算法設計技術、圖算法、網路流和匹配、文本處理算法、數論算法、網路算法、NP完全性、近似算法、回溯法和分枝限界法、外存算法、並行算法和線上算法。

基本信息

內容提要

本書系統地闡述了算法設計的方法、技術和套用實例。全書內容包括基礎算法、基本數據結構、基本算法設計技術、圖算法、網路流和匹配、文本處理算法、數論算法、網路算法、NP完全性、近似算法、回溯法和分枝限界法、外存算法、並行算法和線上算法。Java實現示例復蓋了軟體設計方法、面向對象實現問題和算法的實驗性分析。這些典型問題的Java套用示例分布在不同的章節中。此外,書中以大量圖例說明算法的工作過程,使算法更加易於理解和掌握。 本書適合作為高等院校計算機專業本科生和研究生算法設計課程的教材,也可作為從事軟體開發和工程設計的專業人員的參考書。此外,算法愛好者和參加各種程式設計大賽的選手也可把本書作為參考用書。

作者簡介

Michael T.Goodrich,1987年從普度大學獲得計算機科學博士學位,目前是加州大學(歐文分校)信息和計算機科學學院計算機系教授。此前,他曾擔任約翰·霍普金斯大學計算機科學系的教授,同時擔任該校算法工程中心主任。Goodrich教授的主要研究方向是高性能算法設計、數據結構求解的大規模問題、網際網路、信息可視化和幾何計算等。

目錄

第一部分 基礎工具

第1章 算法分析

1.1 算法的分析方法學

1.1.1 偽代碼

1.1.2 隨機存取機(RAM)模型

1.1.3 統計基本操作的數量

1.1.4 遞歸算法分析

1.2 漸近符號

1.2.1 大O符號

1.2.2 與大"O"相關的漸近符號

1.2.3 漸近表示的重要性

1.3 數學概覽

1.3.1 求和

1.3.2 對數和指數

1.3.3 簡單證明技術

1.3.4 機率基礎

1.4 算法分析案例研究

1.4.1 二次時間前綴平均值算法

1.4.2 線性時間前綴平均值算法

1.5 平攤方法

1.5.1 平攤技術

1.5.2 擴展數組實現分析

1.6 實驗

1.6.1 實驗組織

1.6.2 數據分析和可視化

1.7 習題

基礎題

創新題

程式設計

1.8 本章註記

第2章 基本數據結構

2.1 棧和佇列

2.1.1 棧

2.1.2 佇列

2.2 向量、表和序列

2.2.1 向量

2.2.2 表

2.2.3 序列

2.3 樹

2.3.1 樹抽象數據類型

2.3.2 樹的遍歷

2.3.3 二叉樹

2.3.4 表示樹的數據結構

2.4 優先佇列和堆

2.4.1 優先佇列抽象數據類型

2.4.2 PQ排序、選擇排序和插入排序

2.4.3 堆數據結構

2.4.4 堆排序

2.5 字典與散列表

2.5.1 無序字典ADT

2.5.2 散列表

2.5.3 散列函式

2.5.4 壓縮映射

2.5.5 衝突處理模式

2.5.6 通用散列

2.6 Java示例:堆

2.7 習題

基礎題

創新題

程式設計

2.8 本章註記

第3章 查找樹和跳躍表

3.1 有序字典和二叉查找樹

3.1.1 有序表

3.1.2 二叉查找樹

3.1.3 二叉查找樹中的查找

3.1.4 二叉查找樹中的插入

3.1.5 二叉查找樹中的刪除

3.1.6 二叉查找樹的性能

3.2 AVL樹

3.2.1 更新操作

3.2.2 性能

3.3 深度有界查找樹

3.3.1 多路查找樹

3.3.2 (2,4)樹

3.3.3 紅黑樹

3.4 伸展樹

3.4.1 伸展

3.4.2 伸展過程的平攤分析

3.5 跳躍表

3.5.1 查找

3.5.2 更新操作

3.5.3 跳躍表的機率分析

3.6 Java示例:AVL樹和紅黑樹

3.6.1 AVL樹的Java實現

3.6.2 紅黑樹的Java實現

3.7 習題

基礎題

創新題

程式設計

3.8 本章註記

第4章 排序、集合和選擇

4.1 歸併排序

4.1.1 分治法

4.1.2 歸併排序和遞歸方程

4.2 集合抽象數據類型

4.2.1 簡單的集合實現

4.2.2 具有union-find操作的劃分

4.2.3 基於樹的劃分實現

4.3 快速排序

4.4 基於比較的排序下界

4.5 桶排序和基數排序

4.5.1 桶排序

4.5.2 基數排序

4.6 比較排序算法

4.7 選擇

4.7.1 剪枝-查找法

4.7.2 隨機化快速選擇

4.7.3 隨機化快速選擇分析

4.8 Java示例:原位快速排序

4.9 習題

基礎題

創新題

程式設計

4.10 本章註記

第5章 基本技術

5.1 貪心法

5.1.1 背包問題

5.1.2 任務調度

5.2 分治法

5.2.1 分治遞歸方程

5.2.2 整數相乘

5.2.3 矩陣相乘

5.3 動態規劃

5.3.1 矩陣鏈乘

5.3.2 一般技術

5.3.3 0-1背包問題

5.4 習題

基礎題

創新題

程式設計

5.5 本章註記

第二部分 圖算法

第6章 圖

6.1 圖抽象數據類型

6.2 圖的數據結構

6.2.1 邊表結構

6.2.2 鄰接表結構

6.2.3 鄰接矩陣結構

6.3 圖的遍歷

6.3.1 深度優先查找

6.3.2 雙連通分量

6.3.3 廣度優先查找

6.4 有向圖

6.4.1 遍歷有向圖

6.4.2 傳遞閉包

6.4.3 DFS和垃圾收集

6.4.4 有向無環圖

6.5 Java示例:深度優先查找

6.5.1 修飾模式

6.5.2 DFS引擎

6.5.3 模板方法設計模式

6.6 習題

基礎題

創新題

程式設計

6.7 本章註記

第7章 加權圖

7.1 單源點最短路徑

7.1.1 Dijkstra算法

7.1.2 Bellman-Ford最短路徑算法

7.1.3 有向無環圖中的最短路徑

7.2 所有頂點對之間的最短路徑

7.2.1 動態規劃最短路徑算法

7.2.2 利用矩陣相乘計算最短路徑

7.3 最小生成樹

7.3.1 Kruskal算法

7.3.2 Prim-Jarník算法

7.3.3 Bar?vka算法

7.3.4 MST算法比較

7.4 Java示例:Dijkstra算法

7.5 習題

基礎題

創新題

程式設計

7.6 本章註記

第8章 網路流和匹配

8.1 流和割

8.1.1 流網路

8.1.2 割

8.2 最大流

8.2.1 剩餘容量和增大路徑

8.2.2 Ford-Fulkerson算法

8.2.3 Ford-Fulkerson算法分析

8.2.4 Edmonds-Karp算法

8.3 最大二分匹配

8.4 最小代價流

8.4.1 增大迴路

8.4.2 連續最短路徑

8.4.3 修改權值

8.5 Java示例:最小代價流

8.6 習題

基礎題

創新題

程式設計

8.7 本章註記

第三部分 網際網路算法

第9章 文本處理

9.1 串和模式匹配算法

9.1.1 串操作

9.1.2 蠻力模式匹配

9.1.3 Boyer-Moore算法

9.1.4 Knuth-Morris-Pratt算法

9.2 trie

9.2.1 標準trie

9.2.2 壓縮trie

9.2.3 後綴trie

9.2.4 搜尋引擎

9.3 文本壓縮

9.3.1 赫夫曼編碼算法

9.3.2 修正貪心法

9.4 文本相似性測試

9.4.1 最長公共子序列問題

9.4.2 套用動態規劃求解LCS問題

9.5 習題

基礎題

創新題

程式設計

9.6 本章註記

第10章 數論和密碼學

10.1 與數有關的基本算法

10.1.1 基本數論的一些事實

10.1.2 歐幾里得GCD算法

10.1.3 模運算

10.1.4 模指數運算

10.1.5 模乘法逆元

10.1.6 素性測試

10.2 密碼計算

10.2.1 對稱加密模式

10.2.2 公鑰密碼系統

10.2.3 RSA密碼系統

10.2.4 El Gamal密碼系統

10.3 信息安全算法和協定

10.3.1 單向散列函式

10.3.2 時間戳和認證字典

10.3.3 硬幣拋擲和比特承諾

10.3.4 安全電子傳輸(SET)協定

10.3.5 密鑰分發和交換

10.4 快速傅立葉變換

10.4.1 本原單位根

10.4.2 離散傅立葉變換

10.4.3 快速傅立葉變換算法

10.4.4 大整數相乘

10.5 Java示例:FFT

10.6 習題

基礎題

創新題

程式設計

10.7 本章註記

第11章 網路算法

11.1 複雜性測度和模型

11.1.1 網路協定棧

11.1.2 訊息傳遞模型

11.1.3 網路算法的複雜性測度

11.2 基本分散式算法

11.2.1 環網上的領導人選舉

11.2.2 樹網上的領導人選舉

11.2.3 廣度優先查找

11.2.4 最小生成樹

11.3 廣播路由和單播路由

11.3.1 廣播路由的洪泛算法

11.3.2 單播路由的距離矢量算法

11.3.3 單播路由的鏈路-狀態算法

11.4 多播路由

11.4.1 逆向路徑轉發

11.4.2 中心樹

11.4.3 Steiner樹

11.5 習題

基礎題

創新題

程式設計

11.6 本章註記

第四部分 其他主題

第12章 計算幾何

12.1 範圍樹

12.1.1 一維範圍查找

12.1.2 二維範圍查找

12.2 優先查找樹

..

相關搜尋

熱門詞條

聯絡我們