定 價(jià):49.9 元
叢書名:21世紀(jì)大學(xué)本科計(jì)算機(jī)專業(yè)系列教材
- 作者:王曉東
- 出版時(shí)間:2018/10/1
- ISBN:9787302510109
- 出 版 社:清華大學(xué)出版社
- 中圖法分類:TP301.6
- 頁(yè)碼:
- 紙張:膠版紙
- 版次:
- 開本:16開
為了適應(yīng)培養(yǎng)我國(guó)21世紀(jì)計(jì)算機(jī)各類人才的需要,結(jié)合我國(guó)高等學(xué)校教育工作的現(xiàn)狀,立足培養(yǎng)學(xué)生能跟上國(guó)際計(jì)算機(jī)科學(xué)技術(shù)的發(fā)展水平,更新教學(xué)內(nèi)容和教學(xué)方法,提高教學(xué)質(zhì)量,本書以算法設(shè)計(jì)策略為知識(shí)單元,系統(tǒng)地介紹計(jì)算機(jī)算法的設(shè)計(jì)方法與分析技巧,以期為計(jì)算機(jī)科學(xué)與技術(shù)學(xué)科的學(xué)生提供廣泛而堅(jiān)實(shí)的計(jì)算機(jī)算法基礎(chǔ)知識(shí)。另有配套的《算法設(shè)計(jì)與分析(第4版)習(xí)題解答》,對(duì)本書的全部習(xí)題做了詳盡的解答。
本書內(nèi)容豐富,觀點(diǎn)新穎,理論聯(lián)系實(shí)際。不僅可用作高等學(xué)校計(jì)算機(jī)專業(yè)本科生和研究生學(xué)習(xí)計(jì)算機(jī)算法設(shè)計(jì)的教材,而且也適合廣大工程技術(shù)人員和自學(xué)讀者學(xué)習(xí)參考。
本書按照教育部*制定的計(jì)算機(jī)科學(xué)與技術(shù)專業(yè)規(guī)范的教學(xué)大綱編寫,努力與國(guó)際計(jì)算機(jī)學(xué)科的教學(xué)要求接軌。強(qiáng)調(diào)算法與數(shù)據(jù)結(jié)構(gòu)之間密不可分的聯(lián)系,因而強(qiáng)調(diào)融數(shù)據(jù)類型與定義在該類型上的運(yùn)算于一體的抽象數(shù)據(jù)類型,為面向?qū)ο蟮某绦蛟O(shè)計(jì)方法奠定基礎(chǔ),體現(xiàn)計(jì)算機(jī)科學(xué)方法論的理論、抽象和設(shè)計(jì)三個(gè)過程,知識(shí)面較寬,且有一定的深度;反復(fù)再現(xiàn)計(jì)算機(jī)科學(xué)中用到的大問題的復(fù)雜性、效率、抽象的層次、重用、折衷等帶有普遍性的概念,讓讀者在更深的層次上掌握算法與數(shù)據(jù)結(jié)構(gòu)這一主科目。
21世紀(jì)大學(xué)本科計(jì)算機(jī)專業(yè)系列教材編委會(huì)
主任: 李曉明副主任: 蔣宗禮盧先和委員: (按姓氏筆畫為序)
馬華東馬殿富王志英王曉東寧洪
劉辰孫茂松李仁發(fā)李文新楊波
吳朝暉何炎祥宋方敏張莉金海
周興社孟祥旭袁曉潔錢樂秋黃國(guó)興
曾明廖明宏秘書: 張瑞慶
本書責(zé)任編委: 宋方敏
前言FOREWORD
以最低的成本、最快的速度、最好的質(zhì)量開發(fā)出適合各種應(yīng)用需求的軟件,必須遵循軟件工程的原則,設(shè)計(jì)出高效率的程序。一個(gè)高效的程序不僅需要編程技巧,更需要合理的數(shù)據(jù)組織和清晰高效的算法。這正是計(jì)算機(jī)科學(xué)領(lǐng)域里數(shù)據(jù)結(jié)構(gòu)與算法設(shè)計(jì)所研究的主要內(nèi)容。一些著名的計(jì)算機(jī)科學(xué)家在有關(guān)計(jì)算機(jī)科學(xué)教育的論述中提出,計(jì)算機(jī)科學(xué)是一種創(chuàng)造性思維活動(dòng),其教育必須面向設(shè)計(jì)。計(jì)算機(jī)算法設(shè)計(jì)與分析正是一門面向設(shè)計(jì),且處于計(jì)算機(jī)科學(xué)與技術(shù)學(xué)科核心地位的教育課程。通過對(duì)計(jì)算機(jī)算法系統(tǒng)的學(xué)習(xí)與研究,理解和掌握算法設(shè)計(jì)的主要方法,培養(yǎng)對(duì)算法的計(jì)算復(fù)雜性進(jìn)行正確分析的能力,為獨(dú)立地設(shè)計(jì)算法和對(duì)給定算法進(jìn)行復(fù)雜性分析奠定堅(jiān)實(shí)的理論基礎(chǔ),對(duì)從事計(jì)算機(jī)系統(tǒng)結(jié)構(gòu)、系統(tǒng)軟件和應(yīng)用軟件研究與開發(fā)的科技工作者是非常重要和必不可少的。為了適應(yīng)我國(guó)21世紀(jì)計(jì)算機(jī)人才培養(yǎng)的需要,結(jié)合我國(guó)高等學(xué)校教育工作的現(xiàn)狀,立足培養(yǎng)學(xué)生能跟上國(guó)際計(jì)算機(jī)科學(xué)技術(shù)的發(fā)展水平,更新教學(xué)內(nèi)容和教學(xué)方法,本書以算法設(shè)計(jì)策略為知識(shí)單元,系統(tǒng)地介紹計(jì)算機(jī)算法的設(shè)計(jì)方法與分析技巧,以期為計(jì)算機(jī)科學(xué)與技術(shù)學(xué)科的學(xué)生提供一個(gè)廣泛而堅(jiān)實(shí)的計(jì)算機(jī)算法基礎(chǔ)知識(shí)。
全書共分11章。在第1章中首先介紹算法的基本概念,接著簡(jiǎn)要闡述算法的計(jì)算復(fù)雜性和算法的描述,然后圍繞設(shè)計(jì)算法常用的基本設(shè)計(jì)策略組織第2章至第10章的內(nèi)容。第2章介紹遞歸與分治策略,這是設(shè)計(jì)有效算法最常用的策略,是必須掌握的方法。第3章是動(dòng)態(tài)規(guī)劃算法,以具體實(shí)例詳述動(dòng)態(tài)規(guī)劃算法的設(shè)計(jì)思想、適用性以及算法的設(shè)計(jì)要點(diǎn)。第4章介紹貪心算法,這也是一種重要的算法設(shè)計(jì)策略,它與動(dòng)態(tài)規(guī)劃算法的設(shè)計(jì)思想有一定的聯(lián)系,但其效率更高。按貪心算法設(shè)計(jì)出的許多算法能導(dǎo)致最優(yōu)解,其中有許多典型問題和典型算法可供學(xué)習(xí)和使用。第5章和第6章分別介紹回溯法和分支限界法,這兩章所介紹的算法適合處理難解問題,其解題的思想各具特色,值得學(xué)習(xí)和掌握。第7章介紹概率算法,對(duì)許多難解問題提供高效的解決途徑,是有很高實(shí)用價(jià)值的算法設(shè)計(jì)策略。第8章介紹NP完全性理論和解NP難問題的近似算法。首先介紹計(jì)算模型、確定性和非確定性圖靈機(jī),然后進(jìn)一步深入介紹NP完全性理論,最后介紹解NP難問題的近似算法,這是當(dāng)前計(jì)算機(jī)算法領(lǐng)域的熱門研究課題,具有很高的實(shí)用價(jià)值。第9章介紹有關(guān)串和序列的高效算法。第10章通過實(shí)例介紹算法設(shè)計(jì)中常用的算法優(yōu)化策略。最后,在第11章介紹算法設(shè)計(jì)中較新的研究領(lǐng)域在線算法設(shè)計(jì)。
在本書各章的論述中,首先介紹一種算法設(shè)計(jì)策略的基本思想,然后從解決計(jì)算機(jī)科學(xué)與應(yīng)用中出現(xiàn)的實(shí)際問題入手,由簡(jiǎn)到繁地描述幾個(gè)經(jīng)典的精巧算法,同時(shí)對(duì)每個(gè)算法所需要的時(shí)間和空間進(jìn)行分析。這樣使讀者既能學(xué)到一些常用的精巧算法,又能通過對(duì)算法設(shè)計(jì)策略的反復(fù)應(yīng)用,牢固掌握這些算法設(shè)計(jì)的基本策略,以期收到融會(huì)貫通之效。在為各種算法設(shè)計(jì)策略選擇用于展示其設(shè)計(jì)思想與技巧的具體應(yīng)用問題時(shí),本書有意重復(fù)選擇某些經(jīng)典問題,使讀者能深刻地體會(huì)到一個(gè)問題可以用多種設(shè)計(jì)策略求解。同時(shí),通過對(duì)解同一問題的不同算法的比較,更容易體會(huì)到每一個(gè)具體算法的設(shè)計(jì)要點(diǎn)。隨著本書內(nèi)容的逐步展開,讀者也將進(jìn)一步感受到綜合應(yīng)用多種設(shè)計(jì)策略可以更有效地解決問題。
本書采用面向?qū)ο蟮腏ava語(yǔ)言作為表述手段,在保持Java優(yōu)點(diǎn)的同時(shí),盡量使算法的描述簡(jiǎn)明、清晰。
為了便于讀者加深對(duì)知識(shí)的理解,各章配有難易適當(dāng)?shù)牧?xí)題,以適應(yīng)不同程度讀者練習(xí)的需要。
在本書的編寫過程中,得到教育部高等學(xué)校計(jì)算機(jī)類專業(yè)教學(xué)指導(dǎo)委員會(huì)的關(guān)心和支持。福州大學(xué)211工程計(jì)算機(jī)與信息工程重點(diǎn)學(xué)科實(shí)驗(yàn)室和福建工程學(xué)院為本書的寫作提供了優(yōu)良的設(shè)備與工作環(huán)境。清華大學(xué)出版社負(fù)責(zé)本書編輯出版工作的全體人員為本書的出版付出了大量辛勤勞動(dòng),他們認(rèn)真細(xì)致、一絲不茍的工作精神保證了本書的出版質(zhì)量。南京大學(xué)宋方敏教授和福州大學(xué)傅清祥教授在百忙中認(rèn)真審閱了全書,提出了許多寶貴的改進(jìn)意見。在此,謹(jǐn)向每一位曾經(jīng)關(guān)心和支持本書編寫工作的各方面人士表示衷心的謝意!
由于作者的知識(shí)和寫作水平有限,書稿雖幾經(jīng)修改,仍難免存在缺點(diǎn)。熱忱歡迎同行專家和讀者惠予批評(píng)指正,使本書在使用過程中不斷改進(jìn),日臻完善。作者2018年6月前言算法設(shè)計(jì)與分析(第4版)
王曉東,教授,博士生導(dǎo)師。近年來正式出版學(xué)術(shù)著作11部。近年在國(guó)內(nèi)外學(xué)術(shù)刊物上發(fā)表學(xué)術(shù)論文60多篇。參加多項(xiàng)科研項(xiàng)目并獲獎(jiǎng)。其中獲國(guó)家科技進(jìn)步二等獎(jiǎng)一項(xiàng),水電部科技進(jìn)步一等獎(jiǎng)一項(xiàng),福建省科技進(jìn)步三等獎(jiǎng)一項(xiàng),省水電廳科技進(jìn)步一等獎(jiǎng)一項(xiàng)。
目錄CONTENTS
第1章算法引論1
1.1算法與程序1
1.2表達(dá)算法的抽象機(jī)制1
1.3描述算法3
1.4算法復(fù)雜性分析10
小結(jié)13
習(xí)題14
第2章遞歸與分治策略16
2.1遞歸的概念16
2.2分治法的基本思想21
2.3二分搜索技術(shù)23
2.4大整數(shù)的乘法23
2.5Strassen矩陣乘法24
2.6棋盤覆蓋26
2.7合并排序28
2.8快速排序30
2.9線性時(shí)間選擇33
2.10最接近點(diǎn)對(duì)問題35
2.11循環(huán)賽日程表43
小結(jié)44
習(xí)題44
第3章動(dòng)態(tài)規(guī)劃50
3.1矩陣連乘問題50
3.2動(dòng)態(tài)規(guī)劃算法的基本要素55
3.3最長(zhǎng)公共子序列58
3.4凸多邊形最優(yōu)三角剖分61
3.5多邊形游戲64
3.6圖像壓縮67
3.7電路布線69
3.8流水作業(yè)調(diào)度72
3.90\|1背包問題75
3.10最優(yōu)二叉搜索樹80
小結(jié)83
習(xí)題83
目錄算法設(shè)計(jì)與分析(第4版)第4章貪心算法85
4.1活動(dòng)安排問題85
4.2貪心算法的基本要素88
4.2.1貪心選擇性質(zhì)88
4.2.2最優(yōu)子結(jié)構(gòu)性質(zhì)89
4.2.3貪心算法與動(dòng)態(tài)規(guī)劃算法的差異89
4.3最優(yōu)裝載91
4.4哈夫曼編碼92
4.4.1前綴碼93
4.4.2構(gòu)造哈夫曼編碼93
4.4.3哈夫曼算法的正確性95
4.5單源最短路徑96
4.5.1算法基本思想97
4.5.2算法的正確性和計(jì)算復(fù)雜性98
4.6最小生成樹99
4.6.1最小生成樹性質(zhì)99
4.6.2Prim算法100
4.6.3Kruskal算法102
4.7多機(jī)調(diào)度問題104
4.8貪心算法的理論基礎(chǔ)106
4.8.1擬陣106
4.8.2帶權(quán)擬陣的貪心算法107
4.8.3任務(wù)時(shí)間表問題109
小結(jié)113
習(xí)題113
第5章回溯法115
5.1回溯法的算法框架115
5.1.1問題的解空間115
5.1.2回溯法的基本思想116
5.1.3遞歸回溯117
5.1.4迭代回溯118
5.1.5子集樹與排列樹119
5.2裝載問題120
5.3批處理作業(yè)調(diào)度126
5.4符號(hào)三角形問題128
5.5n后問題130
5.601背包問題133
5.7最大團(tuán)問題136
5.8圖的m著色問題138
5.9旅行售貨員問題140
5.10圓排列問題142
5.11電路板排列問題144
5.12連續(xù)郵資問題147
5.13回溯法的效率分析149
小結(jié)152
習(xí)題152
第6章分支限界法153
6.1分支限界法的基本思想153
6.2單源最短路徑問題156
6.3裝載問題158
6.4布線問題166
6.501背包問題170
6.6最大團(tuán)問題175
6.7旅行售貨員問題178
6.8電路板排列問題181
6.9批處理作業(yè)調(diào)度184
小結(jié)189
習(xí)題189
第7章概率算法190
7.1隨機(jī)數(shù)191
7.2數(shù)值概率算法193
7.2.1用隨機(jī)投點(diǎn)法計(jì)算值193
7.2.2計(jì)算定積分194
7.2.3解非線性方程組195
7.3舍伍德算法197
7.3.1線性時(shí)間選擇算法198
7.3.2跳躍表200
7.4拉斯維加斯算法205
7.4.1n后問題206
7.4.2整數(shù)因子分解209
7.5蒙特卡羅算法211
7.5.1蒙特卡羅算法的基本思想211
7.5.2主元素問題213
7.5.3素?cái)?shù)測(cè)試214
小結(jié)217
習(xí)題217
第8章NP完全性理論與近似算法221
8.1P類與NP類問題221
8.1.1非確定性圖靈機(jī)222
8.1.2P類與NP類語(yǔ)言222
8.1.3多項(xiàng)式時(shí)間驗(yàn)證224
8.2NP完全問題225
8.2.1多項(xiàng)式時(shí)間變換225
8.2.2Cook定理226
8.3一些典型的NP完全問題229
8.3.1合取范式的可滿足性問題230
8.3.23元合取范式的可滿足性問題230
8.3.3團(tuán)問題231
8.3.4頂點(diǎn)覆蓋問題232
8.3.5子集和問題233
8.3.6哈密頓回路問題235
8.3.7旅行售貨員問題238
8.4近似算法的性能238
8.5頂點(diǎn)覆蓋問題的近似算法240
8.6旅行售貨員問題近似算法241
8.6.1具有三角不等式性質(zhì)的旅行售貨員問題242
8.6.2一般的旅行售貨員問題243
8.7集合覆蓋問題的近似算法244
8.8子集和問題的近似算法246
8.8.1子集和問題的指數(shù)時(shí)間算法247
8.8.2子集和問題的完全多項(xiàng)式時(shí)間近似格式247
小結(jié)250
習(xí)題250
第9章串與序列的算法253
9.1子串搜索算法253
9.1.1串的基本概念253
9.1.2KMP算法255
9.1.3RabinKarp算法258
9.1.4多子串搜索與AC自動(dòng)機(jī)260
9.2后綴數(shù)組與最長(zhǎng)公共子串266
9.2.1后綴數(shù)組的基本概念266
9.2.2構(gòu)造后綴數(shù)組的倍前綴算法267
9.2.3構(gòu)造后綴數(shù)組的DC3分治法270
9.2.4最長(zhǎng)公共前綴數(shù)組與最長(zhǎng)公共擴(kuò)展算法274
9.2.5最長(zhǎng)公共子串算法276
9.3序列比較算法277
9.3.1編輯距離算法277
9.3.2最長(zhǎng)公共單調(diào)子序列280
9.3.3有約束最長(zhǎng)公共子序列281
小結(jié)284
習(xí)題285
第10章算法優(yōu)化策略288
10.1算法設(shè)計(jì)策略的比較與選擇288
10.1.1最大子段和問題的簡(jiǎn)單算法288
10.1.2最大子段和問題的分治算法289
10.1.3最大子段和問題的動(dòng)態(tài)規(guī)劃算法291
10.1.4最大子段和問題與動(dòng)態(tài)規(guī)劃算法的推廣291
10.2動(dòng)態(tài)規(guī)劃加速原理294
10.2.1貨物儲(chǔ)運(yùn)問題294
10.2.2算法及其優(yōu)化295
10.3問題的算法特征298
10.3.1貪心策略298
10.3.2對(duì)貪心策略的改進(jìn)299
10.3.3算法三部曲299
10.3.4算法實(shí)現(xiàn)300
10.3.5算法復(fù)雜性305
10.4優(yōu)化數(shù)據(jù)結(jié)構(gòu)306
10.4.1帶權(quán)區(qū)間最短路問題306
10.4.2算法設(shè)計(jì)思想306
10.4.3算法實(shí)現(xiàn)方案308
10.4.4并查集311
10.4.5可并優(yōu)先隊(duì)列314
10.5優(yōu)化搜索策略318
小結(jié)324
習(xí)題324
第11章在線算法設(shè)計(jì)325
11.1在線算法設(shè)計(jì)的基本概念325
11.2頁(yè)調(diào)度問題327
11.3勢(shì)函數(shù)分析329
11.4k服務(wù)問題330
11.4.1競(jìng)爭(zhēng)比的下界330
11.4.2平衡算法331
11.4.3對(duì)稱移動(dòng)算法332
11.5Steiner樹問題334
11.6在線任務(wù)調(diào)度336
11.7負(fù)載平衡337
小結(jié)338
習(xí)題338
詞匯索引340
參考文獻(xiàn)345