![]() ![]() |
算法設(shè)計(jì)與分析 ![]()
算法在計(jì)算機(jī)中扮演著重要角色,它對(duì)計(jì)算機(jī)科學(xué)的發(fā)展起著重要的推動(dòng)作用。算法可以被看作解決問(wèn)題的方法,盡管它不是問(wèn)題的答案,但它是經(jīng)過(guò)準(zhǔn)確定義以獲得答案的過(guò)程,因此特定的算法設(shè)計(jì)技術(shù)可以作為問(wèn)題求解的有效策略,學(xué)習(xí)算法可以培養(yǎng)學(xué)生分析問(wèn)題和解決問(wèn)題的能力。本書主要內(nèi)容包括算法效率的分析方法,算法工具STL的使用,蠻力法、遞歸法、分治法、貪心法、動(dòng)態(tài)規(guī)劃法、回溯法和分支限界法七個(gè)核心算法的原理與經(jīng)典問(wèn)題的解決對(duì)策,學(xué)生如果具備了本課程算法設(shè)計(jì)的基本方法,可進(jìn)一步學(xué)習(xí)本課程的圖的搜索算法、計(jì)算幾何算法、隨機(jī)算法三大專題深入學(xué)習(xí)。
《算法設(shè)計(jì)與分析》是一本集系統(tǒng)性、實(shí)用性、思想性于一體的優(yōu)質(zhì)書籍。無(wú)論你是初涉算法領(lǐng)域的新手,還是尋求突破的專業(yè)人士,都能從這本書中汲取知識(shí)的養(yǎng)分。希望大家能通過(guò)這本書開啟算法學(xué)習(xí)的奇妙之旅,在計(jì)算機(jī)科學(xué)的天空中翱翔。
前言
教育是國(guó)之大計(jì)、黨之大計(jì)。黨的二十大報(bào)告明確提出, 堅(jiān)待教育優(yōu)先發(fā)展, 到
2035年建成教育強(qiáng)國(guó), 首次將“實(shí)施科教興國(guó)戰(zhàn)略, 強(qiáng)化現(xiàn)代化建設(shè)人才支撐”作為一個(gè)
單獨(dú)部分, 并把“教育、科技和人才”三者聯(lián)系在一起加以論述、部署, 且有關(guān)教育的論
述出現(xiàn)在經(jīng)濟(jì)之后, 排在各項(xiàng)戰(zhàn)略任務(wù)的第二位, 充分體現(xiàn)了教育的基礎(chǔ)性、戰(zhàn)略性地
位和作用。
隨著大數(shù)據(jù)時(shí)代的到來(lái), “ 數(shù)據(jù)挖掘”“人工智能”等與算法相關(guān)的詞語(yǔ)已成為IT行業(yè)
流行的詞匯。若想以最少的成本、最快的速度、最好的質(zhì)量開發(fā)出適合各種應(yīng)用需求的
軟件, 就必須遵循軟件工程的原則, 設(shè)計(jì)出高效率的程序。軟件的效率和穩(wěn)定性取決于
軟件中所采用的算法, 然而, 程序設(shè)計(jì)的“靈魂”就是解決問(wèn)題的算法,F(xiàn)階段, 我國(guó)對(duì)
千算法方面的人才需求與H俱增, 為了滿足這一需求, 培養(yǎng)出優(yōu)秀的軟件研究與設(shè)計(jì)人
才, 絕大多數(shù)高校的計(jì)算機(jī)及相關(guān)專業(yè)開設(shè)了"算法設(shè)計(jì)與分析“課程, 它早已成為計(jì)算
機(jī)科學(xué)與技術(shù)、智能科學(xué)與技術(shù)、軟件工程、人工智能等本科專業(yè)的核心課程。
為了適應(yīng)“新工科“背泉下計(jì)算機(jī)相關(guān)專業(yè)算法類課程的教學(xué)模式及我國(guó)計(jì)算機(jī)各類
人才的需要, 本書以算法設(shè)計(jì)策略為主線, 系統(tǒng)地介紹了計(jì)算機(jī)算法的設(shè)計(jì)方法與分析
技巧, 以期為計(jì)算機(jī)學(xué)科的學(xué)生提供廣泛而堅(jiān)實(shí)的計(jì)算機(jī)算法基礎(chǔ)知識(shí), 提升學(xué)生的算
法設(shè)計(jì)能力、綜合應(yīng)用能力和創(chuàng)新能力, 立足培養(yǎng)學(xué)生跟上國(guó)際計(jì)算機(jī)科學(xué)技術(shù)的發(fā)展
水平。
本書對(duì)各類算法的介紹深入淺出、通俗易懂, 注重理論與實(shí)踐相結(jié)合。為了適應(yīng)高
等院校的人才培養(yǎng)模式, 本書各章均配套相關(guān)的實(shí)驗(yàn)內(nèi)容, 以增強(qiáng)學(xué)生學(xué)有所得和學(xué)有
所用的體驗(yàn), 激發(fā)學(xué)生學(xué)習(xí)算法設(shè)計(jì)相關(guān)知識(shí)的興趣。在學(xué)習(xí)本書之前, 學(xué)生已經(jīng)學(xué)習(xí)
了基本的數(shù)據(jù)結(jié)構(gòu)知識(shí), 能熟練運(yùn)用一門或多門編程語(yǔ)言, 并具備了一定的編程經(jīng)驗(yàn)。
讓學(xué)生能夠利用巳學(xué)過(guò)的知識(shí)針對(duì)不同的實(shí)際問(wèn)題設(shè)計(jì)出有效的算法, 是本書所要達(dá)到
的目的。本書的特點(diǎn)是“問(wèn)題模型化, 求解算法化, 設(shè)計(jì)最優(yōu)化”。
1. 本書內(nèi)容
全書共10章, 各章的內(nèi)容如下。
第1章為算法設(shè)計(jì)與分析基礎(chǔ), 主要介紹算法、算法設(shè)計(jì)、算法分析的基本概念, 以
及常見重要問(wèn)題的類型和常用算法的設(shè)計(jì)方法。
第2章為算法工具STL, 主要介紹標(biāo)準(zhǔn)模板庫(kù)STL, STL是C++程序員必須掌握
的模板庫(kù), 掌握它對(duì)提升C++編程大有益處。
第3章為蠻力法, 介紹了蠻力法的概念與特點(diǎn), 討論了運(yùn)用蠻力策略解決幾類常見排
序問(wèn)題的設(shè)計(jì)思想, 并介紹了與蠻力法相關(guān)的兒個(gè)經(jīng)典問(wèn)題。
第4章為遞歸與分治法, 介紹了遞歸技術(shù)和分治法的基本思想, 遞歸設(shè)計(jì)實(shí)例, 以及分治法在二分查找、歸并排序、快速排序、堆排序、棋盤覆蓋、最大子段和等問(wèn)題中的應(yīng)用。這是設(shè)計(jì)有效算法最常用的策略之一,是必須掌握的方法。
第5章為貪心法,介紹了貪心法的基本思想,以及貪心法在經(jīng)典問(wèn)題中的應(yīng)用,這是一種非常重要的算法設(shè)計(jì)策略,其計(jì)算效率很高。按貪心法設(shè)計(jì)出的許多算法能得出最優(yōu)解,其中有許多典型問(wèn)題和典型算法可供學(xué)生學(xué)習(xí)和使用。
第6章為動(dòng)態(tài)規(guī)劃法,介紹了動(dòng)態(tài)規(guī)劃的原理和求解步驟,討論了采用動(dòng)態(tài)規(guī)劃法求解斐波那契數(shù)列、排隊(duì)買票問(wèn)題、湊硬幣問(wèn)題、數(shù)字塔問(wèn)題、最長(zhǎng)公共子序列問(wèn)題、流水作業(yè)調(diào)度問(wèn)題、資源分配問(wèn)題、最短路徑問(wèn)題等經(jīng)典問(wèn)題的算法設(shè)計(jì)。
第7章為回溯法與分支限界法,介紹了問(wèn)題的解空間的概念和回溯法與分支限界法的基本思想,討論了回溯法與分支限界法的異同,并對(duì)比了這兩種算法在0/1背包問(wèn)題、旅行商問(wèn)題等經(jīng)典問(wèn)題中的應(yīng)用。
第8章為圖的搜索算法,在前7章討論過(guò)的算法設(shè)計(jì)方法的基礎(chǔ)上設(shè)計(jì)了有效的圖的搜索算法,探討了兒個(gè)基本應(yīng)用問(wèn)題,并介紹了網(wǎng)絡(luò)流的相關(guān)概念以及求最大流、割集與割量、求最小費(fèi)用最大流的算法。
第9章為計(jì)算幾何算法,介紹了計(jì)算幾何中常用的向量運(yùn)算以及求解凸包問(wèn)題、最近點(diǎn)對(duì)問(wèn)題和最遠(yuǎn)點(diǎn)對(duì)問(wèn)題的典型算法。
第10章為隨機(jī)算法,主要討論了蒙特卡羅算法、舍伍德算法和拉斯維加斯算法3類隨機(jī)算法的應(yīng)用。
2.本書特色
(1)課程思政融入教學(xué)
本課程要求學(xué)生具備算法設(shè)計(jì)與分析技能的同時(shí),更關(guān)注大學(xué)生的心理健康問(wèn)題。
本書配套的電子資料包含大量教學(xué)案例,引導(dǎo)學(xué)生樹立正確的價(jià)值觀和人生觀,激發(fā)學(xué)
生科技報(bào)國(guó)的歷史擔(dān)當(dāng),自覺(jué)抵制外界的一些負(fù)面影響和誘惑,幫助學(xué)生把精力集中到
學(xué)習(xí)科學(xué)知識(shí)的主業(yè)中,培養(yǎng)學(xué)生具備精益求精的工匠精神、科技報(bào)國(guó)的使命擔(dān)當(dāng),以
及堅(jiān)定“ 四個(gè)自信"的愛(ài)國(guó)主義精神。本課程的主講教師應(yīng)秉承創(chuàng)新精神、匠心精神,與
時(shí)俱進(jìn)地不斷完善和提升課程質(zhì)屈,力爭(zhēng)為祖國(guó)培養(yǎng)更多德才兼?zhèn)涞那嗄瓴趴,為教學(xué)
改革貢獻(xiàn)自己的力量。
(2)編程語(yǔ)言之間的共性與個(gè)性的比較
本書的核心語(yǔ)言是C 語(yǔ)言,第3~第7章中核心算法的經(jīng)典問(wèn)題的代碼采用了C、
C+ +語(yǔ)言同時(shí)實(shí)現(xiàn)(Java的完整實(shí)現(xiàn)代碼掃二維碼可以查閱),同一個(gè)算法使用多種語(yǔ)言
進(jìn)行編寫、對(duì)比和分析,能提高學(xué)生的綜合能力。本書是一本既能讓學(xué)生清晰、輕松地
理解算法思想,又能讓學(xué)生編程實(shí)現(xiàn)算法的實(shí)用書籍。
(3)由淺入深,循序漸進(jìn)
每種算法策略從設(shè)計(jì)思想、算法框架入手,巾易到難地講解經(jīng)典問(wèn)題的求解過(guò)程,
使讀者既能學(xué)到求解問(wèn)題的方法,又能通過(guò)對(duì)算法策略的反復(fù)應(yīng)用掌握其核心原理,以
達(dá)到融會(huì)貫通之效。
,. 急尸··`·
' , ! 2 ;
魚
. ....,
},
(4)注重問(wèn)題導(dǎo)向的學(xué)習(xí)內(nèi)容設(shè)計(jì)
本書將各種算法應(yīng)用于多個(gè)有趣的現(xiàn)實(shí)問(wèn)題的解決過(guò)程中,以問(wèn)題為導(dǎo)向來(lái)促進(jìn)學(xué)生思考并體會(huì)算法的精妙之處與用途, 進(jìn)而提升其學(xué)習(xí)效果。
(5)注重求解問(wèn)題的多維性
同一個(gè)問(wèn)題可采用多種算法策略實(shí)現(xiàn), 如0/1背包問(wèn)題分別采用回溯法、分支限界法
和動(dòng)態(tài)規(guī)劃法求解。通過(guò)不同算法策略的比較, 使學(xué)生更容易體會(huì)到每一種算法策略的
設(shè)計(jì)特點(diǎn)和優(yōu)缺點(diǎn), 以提高其算法設(shè)計(jì)的效率。
(6)配套資源豐富
為了加深學(xué)生對(duì)知識(shí)的理解, 各章配有難易適當(dāng)?shù)牧?xí)題、實(shí)驗(yàn)題, 以適應(yīng)不同程度
的學(xué)生練習(xí)的需要。本書還配套有教學(xué)計(jì)劃、教學(xué)大綱、PPT課件、教材源代碼、實(shí)驗(yàn)
源代碼等豐富的教學(xué)資源供教師授課使用。
3. 結(jié)束語(yǔ)
本書由蘭州財(cái)經(jīng)大學(xué)高麗偉、楊海軍, 貴州大學(xué)薛現(xiàn)斌共同編著而成。其中, 高麗
偉編寫了第4、第5、第6、第7、第10章;楊海軍編寫了第2、第9章, 并完成了本書圖
片的繪制和校正工作;薛現(xiàn)斌編寫了第1、第3、第8章, 并負(fù)責(zé)全書代碼的測(cè)試和校正
工作。
本書是課程組全休教師多年教學(xué)經(jīng)驗(yàn)的總結(jié)和體現(xiàn), 在編寫過(guò)程中, 編者參考了很
多同行的教材和網(wǎng)絡(luò)博客。由千編者水平有限, 書中疏漏在所難免, 故殷切希望廣大讀
者及同行專家、教師能夠批評(píng)指正, 以便修改完善。編者E-mail為glwdz324@163.com 。
編者
2024年9月
.......
高麗偉,本碩畢業(yè)于貴州大學(xué)計(jì)算機(jī)專業(yè),已有8年教齡,一直為計(jì)算機(jī)科學(xué)與技術(shù)、智能科學(xué)與技術(shù)、電子商務(wù)等本科專業(yè)講授算法設(shè)計(jì)與分析課程,對(duì)于該教材積累了一定的教學(xué)和編寫經(jīng)驗(yàn)。
目錄
第1 章算法設(shè)計(jì)與分析基礎(chǔ)........................................................................ 1
1. 1 算法概述....................................................................................... l
1. 1. 1 什么是算法........................................................................ 1
1. 1. 2 學(xué)習(xí)算法的重要性............................................................... 7
1.2 問(wèn)題的求解過(guò)程.............................................................................. 8
1. 2. 1 問(wèn)題及問(wèn)題的求解過(guò)程......................................................... 8
1. 2. 2 算法設(shè)計(jì)與算法表示............................................................ 9
1. 2. 3 算法確認(rèn)和算法分析............................................................ 10
1. 3 數(shù)學(xué)基礎(chǔ).................................................................................... 13
1. 3. 1 函數(shù)的漸近的界.................................................................. 14
1. 3. 2 利用極限求函數(shù)的漸近的界... ... ... ... .................. ...... ...... .........17
1. 3. 3 常用的求和級(jí)數(shù)及推導(dǎo)方法…………………………………………… 19
1. 3. 4 基本漸近效率類型............................................................... 21
1. 4 算法分析.................................................................................... 2 2
1. 4. 1 算法的時(shí)間復(fù)雜度分析......................................................... 22
1. 4. 2 算法的空間復(fù)雜度分析......................................................... 28
1. 4. 3 非遞歸算法分析.................................................................. 29
1. 4. 4 遞歸算法分析..................................................................... 30
1.5 關(guān)千P類、NP類和NPC類問(wèn)題……………………………………… ……… 33
1. 6 本章小結(jié).................................................................................... 34
1. 7 習(xí)題.......................................................................................... 35
1.8 實(shí)驗(yàn)題....................................................................................... 36
第2章算法工具STL ················································································· 38
2. 1 STL概述.................................................................................... 38
2. 1. 1 什么是STL容器.................................................................. 39
2. 1. 2 什么是STL算法.................................................................. 39
2. 1. 3 什么是STL迭代器............................................................... 40
2. 2 常用的STL容器........................................................................... 41
2. 2. 1 順序容器........................................................................... 41
2.2. 2 關(guān)聯(lián)容器........................................................................... 49
2. 2. 3 適配器容器........................................................................ 52
2. 3 STL在算法設(shè)計(jì)中的應(yīng)用............................................................... 55
2.4 本章小結(jié).................................................................................... 67
2. 5 習(xí)題.......................................................................................... 68
2. 6 實(shí)驗(yàn)題....................................................................................... 69
第3章蠻力法.......................................................................................... 72
3. 1 蠻力法概述................................................................................. 72
3. 1. 1 蠻力法的基本思想............................................................... 72
3. 1. 2 蠻力法解題格式.................................................................. 75
3. 2 蠻力法的應(yīng)用.............................................................................. 83
3. 2. 1 百錢百雞問(wèn)題..................................................................... 84
3. 2. 2 獄吏問(wèn)題........................................................................... 85
3. 2. 3 順序查找........................................................................... 88
3.2.4 簡(jiǎn)單排序算法..................................................................... 89
3. 2. 5 求解幕集問(wèn)題..................................................................... 95
3. 2. 6 求解0/1 背包問(wèn)題............................................................... 98
3. 2. 7 求解最大連續(xù)子序列和問(wèn)題………………………………………… 102
3. 3 本章小結(jié).................................................................................... 104
3. 4 習(xí)題.......................................................................................... 105
3. 5 實(shí)驗(yàn)題....................................................................................... 105
第4章遞歸與分治法.............................................................................. 108
,. 急尸··`·
' , ! 2 ; 魚
. ....,
},
4. 1 遞歸算法的思想........................................................................... 108
4. 1. 1 遞歸算法的特性............................................................... 109
4. 1. 2 遞歸算法的執(zhí)行過(guò)程......................................................... 110
4. 1. 3 遞歸適用場(chǎng)合.................................................................. 112
4. 2 遞歸設(shè)計(jì)實(shí)例.............................................................................. 117
4. 2. 1 幾個(gè)簡(jiǎn)單的遞歸程序......................................................... 117
4.2.2 排序問(wèn)題........................................................................ 119
4.2.3 斐波那契數(shù)列問(wèn)題............................................................ 121
4. 2. 4 n皇后問(wèn)題........................................................................ 123
4. 2. 5 漢諾塔問(wèn)題..................................................................... 125
4. 3 分治法的思想化整為零............................................................ 127
4. 4 分治法的應(yīng)用.............................................................................. 129
4. 4. 1 二分查找算法.................................................................. 129
4. 4. 2 歸并排序算法.................................................................. 131
4. 4. 3 快速排序算法.................................................................. 134
4. 4. 4 堆排序算法..................................................................... 136
4. 4. 5 棋盤覆蓋問(wèn)題.................................................................. 139
4. 4. 6 最大子段和問(wèn)題............................................................... 142
4. 5 本章小結(jié)... ... ... ... .................. ... ...... ... ...... ... ... ... ............ ............... 144
4. 6 習(xí)題... ... ... .................. ... ...... ... ...... ............ ... ... ............ ............... 145
4. 7 實(shí)驗(yàn)題... ... ..................... ...... ... ...... ... ............ ... ...... ... .................. 145
第5 章貪心法... ... ..................... ...... ... ...... ... ............ ... ...... ... .................. 148
5. 1 貪心法概述... ... ... ... .................. ...... ... ... ...... ... ... ...... ... .................. 148
5. 1. 1 問(wèn)題的提出... ... ... .................. ... ...... ... ...... ............ ... ...... ... 148
5. 1. 2 貪心法設(shè)計(jì)思想... ... ... ... .................. ... ... ...... ...... ... ... ...... ... 150
5. 1. 3 貪心法的基本要素... ... ... .................. ... ... ...... ...... ............ ... 150
5. 1. 4 貪心法的求解過(guò)程... ... ... .................. ... ... ...... ...... ............ ... 151
5. 2 貪心法的應(yīng)用... ... ... .................. ...... ... ... ...... ............ ... ...... ... ......... 152
5. 2. 1 活動(dòng)安排問(wèn)題... ... ... .................. ...... ... ...... ... ... ...... ......... ... 152
5. 2. 2 幣種統(tǒng)計(jì)問(wèn)題... ... ... .................. ...... ... ...... ... ... ...... ......... ... 159
5. 2. 3 背包問(wèn)題... ... ... ... .................. ... ...... ... ...... ... ... ...... ... ......... 160
5. 2. 4 多機(jī)調(diào)度問(wèn)題... ... ... .................. ...... ... ...... ... ... ...... ......... ... 163
5. 2. 5 哈夫曼編碼... ... ... .................. ... ...... ... ...... ............ ... ...... ... 165
5. 2. 6 最小生成樹... ... ... .................. ... ...... ... ...... ............ ... ...... ... 172
5. 2. 7 求解流水作業(yè)調(diào)度問(wèn)題... ...... .................. ...... ... ...... ...... ... ... 178
5. 2. 8 求解川忌賽馬問(wèn)題... ... ... .................. ... ... ...... ...... ............ ... 182
5. 3 本章小結(jié)... ... ... ... .................. ... ...... ... ...... ... ... ... ............ ............... 185
5. 4 習(xí)題... ... ... .................. ... ...... ... ...... ............ ... ... ............ ............... 186
5. 5 實(shí)驗(yàn)題... ... ..................... ...... ... ...... ... ............ ... ...... ... .................. 187
第6 章動(dòng)態(tài)規(guī)劃法... ... ... ... .................. ...... ... ... ...... ... ... ...... ... .................. 190
6. 1 動(dòng)態(tài)規(guī)劃法概述... ... ... ... .................. ... ... ...... ... ... ...... ... .................. 190
6. 1. 1 動(dòng)態(tài)規(guī)劃法的基本思想... ...... .................. ...... ... ...... ...... ... ... 190
6. 1. 2 動(dòng)態(tài)規(guī)劃的設(shè)計(jì)技術(shù)... ... ..................... ... ...... ...... ... ... ...... ... 192
6. 2 最優(yōu)決策表... ... ... ... .................. ...... ... ... ...... ... ... ...... ... .................. 195
6.2. 1 0/1 背包問(wèn)題...... ... ... .................. ...... ... ...... ... ... ...... ......... ... 196
6.2. 2 0/1 背包的相關(guān)問(wèn)題...... ... ..................... ... ...... ...... ... ... ...... ... 200
6. 3 動(dòng)態(tài)規(guī)劃法的應(yīng)用... ... ... ... .................. ... ...... ... ...... ... ... ...... ... ......... 202
6. 3. 1 斐波那契數(shù)列... ... ... .................. ...... ... ...... ... ... ...... ......... ... 202
6. 3. 2 排隊(duì)買票問(wèn)題... ... ... .................. ...... ... ...... ... ... ...... ......... ... 203
6. 3. 3 湊硬幣問(wèn)題... ... ... .................. ... ...... ... ...... ............ ... ...... ... 204
6. 3. 4 數(shù)字塔問(wèn)題... ... ... .................. ... ...... ... ...... ............ ... ...... ... 207
6. 3. 5 最長(zhǎng)公共子序列問(wèn)題... ... ..................... ... ...... ...... ... ... ...... ... 211
6. 3. 6 流水作業(yè)調(diào)度問(wèn)題... ... ... .................. ... ... ...... ...... ............ ... 214
6. 3. 7 資源分配問(wèn)題... ... ... .................. ...... ... ...... ... ... ...... ......... ... 217
6. 3. 8 最短路徑問(wèn)題... ... ... .................. ...... ... ...... ... ... ...... ......... ... 220
6. 4 本章小結(jié).................................................................................... 225
6. 5 習(xí)題.......................................................................................... 225
6. 6 實(shí)驗(yàn)題....................................................................................... 227
第7 章回溯法與分支限界法..................................................................... 233
7. 1 回溯法的設(shè)計(jì)技術(shù)........................................................................ 233
7. 1. 1 回溯法的算法思想............................................................ 234
7. 1. 2 回溯法的算法框架............................................................ 236
7. 1. 3 回溯法的適用條件............................................................ 239
7. 2 回溯法的應(yīng)用.............................................................................. 243
7. 2. 1 0/1 背包問(wèn)題..................................................................... 243
7. 2. 2 n皇后問(wèn)題........................................................................ 248
7.2.3 旅行商問(wèn)題..................................................................... 250
7.2.4 圖的m著色問(wèn)題............................................................... 253
7. 2. 5 求解子集和問(wèn)題............................................................... 255
7. 3 分支限界法的設(shè)計(jì)技術(shù).................................................................. 258
7. 3. 1 分支限界法的思想............................................................ 258
7. 3. 2 分支限界法與回溯法對(duì)比...... ... ... .................. ...... ...... ......... 258
7. 3. 3 分支限界法解決的關(guān)鍵問(wèn)題………………………………………… 259
7. 3.4 分支限界法的時(shí)間性能...................................................... 262
7. 4 分支限界法的應(yīng)用........................................................................ 262
7. 4. 1 0/1 背包問(wèn)題..................................................................... 262
7. 4. 2 旅行商問(wèn)題..................................................................... 269
7. 5 本章小結(jié).................................................................................... 282
7. 6 習(xí)題.......................................................................................... 283
7. 7 實(shí)驗(yàn)題....................................................................................... 284
第8 章圖的搜索算法.............................................................................. 288
,. 急尸··`·
' , ! 4 ;
魚
. ....,
},
8. 1 廣度優(yōu)先搜索.............................................................................. 288
8. 1. 1 算法描述與分析............................................................... 288
8. 1. 2 程序?qū)崿F(xiàn)........................................................................ 292
8. 2 深度優(yōu)先搜索.............................................................................. 297
8. 2. 1 算法描述與分析............................................................... 297
8.2.2 程序?qū)崿F(xiàn)........................................................................ 299
8. 3 有向圖的強(qiáng)連通分支..................................................................... 303
8. 4 無(wú)向圖的雙連通分支..................................................................... 307
8. 5 網(wǎng)絡(luò)流....................................................................................... 310
8. 5. 1 相關(guān)概念........................................................................ 310
8. 5. 2 求最大流........................................................................ 312
8. 5. 3 割集與割量..................................................................... 316
8. 5. 4 求最小費(fèi)用最大流............................................................ 317
8. 6 本章小結(jié).................................................................................... 32 2
8. 7 習(xí)題.......................................................................................... 32 2
8. 8 實(shí)驗(yàn)題....................................................................................... 323
第9 章計(jì)算幾何算法.............................................................................. 327
9. 1 線段的性質(zhì)................................................................................. 327
9. 2 向量運(yùn)算.................................................................................... 328
9. 2. 1 向扯加減運(yùn)算.................................................................. 329
9. 2. 2 向批點(diǎn)積運(yùn)算.................................................................. 330
9. 3 叉積.......................................................................................... 331
9. 3. 1 叉積的計(jì)算..................................................................... 331
9. 3. 2 判斷相繼兩直線段左轉(zhuǎn)或右轉(zhuǎn)……………………………………… 332
9. 3. 3 兩個(gè)點(diǎn)的距離.................................................................. 333
9. 3. 4 點(diǎn)到線段的距離............................................................... 333
9. 4 線段的應(yīng)用................................................................................. 334
9.4. 1 判斷一個(gè)點(diǎn)是否在一個(gè)矩形內(nèi)……………………………………… 334
9.4. 2 判斷一個(gè)點(diǎn)是否在一條線段上……………………………………… 335
9.4. 3 判斷兩條線段是否平行...................................................... 335
9.4. 4 判斷兩條線段是否相交...................................................... 336
9.4. 5 判斷一個(gè)點(diǎn)是否在多邊形內(nèi)………………………………………… 336
9.4. 6 求3 個(gè)點(diǎn)構(gòu)成的三角形面積………………………………………… 338
9.4. 7 求一個(gè)多邊形的面積......................................................... 338
9. 5 求解凸包問(wèn)題.............................................................................. 340
9. 5. 1 卷包裹算法..................................................................... 341
9. 5. 2 葛立恒掃描法.................................................................. 342
9. 6 求解最近點(diǎn)對(duì)問(wèn)題........................................................................ 344
9. 7 求解最遠(yuǎn)點(diǎn)對(duì)問(wèn)題........................................................................ 349
9. 8 本章小結(jié).................................................................................... 352
9. 9 習(xí)題.......................................................................................... 353
9. 10 實(shí)驗(yàn)題.................................................................................... 353
第10 章隨機(jī)算法.................................................................................... 356
10.] 同余的概念.............................................................................. 356
10. 2 隨機(jī)數(shù).................................................................................... 358
10. 3 隨機(jī)算法................................................................................. 360
10. 3. 1 隨機(jī)算法的概念............................................................... 360
10. 3. 2 隨機(jī)算法的分類............................................................... 360
10.4 經(jīng)典隨機(jī)算法........................................................................... 361
10. 4. 1 蒙特卡羅算法.................................................................. 361
10. 4. 2 舍伍德算法..................................................................... 362
10. 4. 3 拉斯維加斯算法............................................................... 364
10. 5 本章小結(jié)................................................................................. 366
10. 6 習(xí)題....................................................................................... 366
10. 7 實(shí)驗(yàn)題.................................................................................... 367
參考文獻(xiàn)................................................................................................ 368
,. 急尸··`· {
氣.6)
皇后問(wèn)題、圖的m著色問(wèn)題和裝載問(wèn)題等。組合優(yōu)化問(wèn)題就是找到該問(wèn)題的一個(gè)或全部最優(yōu)解,如背包問(wèn)題、子集和數(shù)問(wèn)題及貨郎問(wèn)題等。
你還可能感興趣
我要評(píng)論
|