本書的內(nèi)容主要包括兩個(gè)方面:一是困難問題(NPC問題);二是人工智能的關(guān)鍵問題(圖問題)。包括:困難問題的概念和證明;困難問題的常用模型,如線性規(guī)劃和整數(shù)規(guī)劃;困難問題的常用算法,如近似算法、隨機(jī)算法、在線算法、啟發(fā)式算法。本書在所有算法講解中都貫穿了圖問題,同時(shí)還專門介紹了高級(jí)圖算法,其中,中心性算法和社群發(fā)現(xiàn)算法是人工智能的基礎(chǔ)。此外,本書的每章都給出了相關(guān)算法的應(yīng)用實(shí)例。
本書可作為高等院校計(jì)算機(jī)類專業(yè)的研究生算法課程的教材,也可作為各行業(yè)從事算法設(shè)計(jì)和開發(fā)技術(shù)人員的參考書。
在所有算法講解中都貫穿了圖問題,同時(shí)還專門介紹了高級(jí)圖算法。
每章都給出了相關(guān)算法的應(yīng)用實(shí)例。
對(duì)課堂教學(xué)進(jìn)行了實(shí)錄,目前錄課已經(jīng)發(fā)布在 B站,賬號(hào)為 foretmer。
配套提供電子課件、教學(xué)大綱、微課視頻、MOOC(B站)、試卷及答案。
本書斷斷續(xù)續(xù)寫了三年左右,總算完稿,遠(yuǎn)比計(jì)劃的時(shí)間要長(zhǎng)得多,主要是很多知識(shí)點(diǎn)不僅需要查閱大量的文獻(xiàn),而且需要對(duì)這些知識(shí)點(diǎn)進(jìn)行驗(yàn)證、總結(jié),這些都需要花費(fèi)大量的時(shí)間。撰寫本書的起因主要有兩方面:一是從事研究生高級(jí)算法教學(xué)多年,感覺缺少專門針對(duì)研究生的算法教材,導(dǎo)致這門課一直沒有合適的教材可用,而高級(jí)算法作為計(jì)算機(jī)類專業(yè)研究生的基礎(chǔ)課,學(xué)生需要一本好的教材來系統(tǒng)學(xué)習(xí)和掌握相關(guān)算法知識(shí);二是從事算法項(xiàng)目和研究的過程中,發(fā)現(xiàn)很多算法相關(guān)的從業(yè)人員急需一本能夠查閱關(guān)于如何解決困難問題的技術(shù)參考書(實(shí)際工作中遇到的問題大多數(shù)是困難問題),而目前也缺少系統(tǒng)介紹此方面算法的書籍。
本書的編寫主要圍繞解決困難問題(NPC問題)和圖問題來展開,人們?cè)谘芯亢凸ぷ鬟^程中碰到的困難問題,是沒有辦法用基礎(chǔ)算法(如動(dòng)態(tài)規(guī)劃、回溯等)來解決的;而圖問題在新的社交模式下以及人工智能時(shí)代起著越來越重要的作用,社交網(wǎng)絡(luò)、生物網(wǎng)絡(luò)等都可以用圖來描述,特別是圖神經(jīng)網(wǎng)絡(luò)幾乎是目前深度學(xué)習(xí)中最重要的研究熱點(diǎn),而其基礎(chǔ)就是圖模型的特征提取。
本書首先討論線性規(guī)劃和整數(shù)規(guī)劃,很多困難問題都可以建模成整數(shù)規(guī)劃問題,所以求解整數(shù)規(guī)劃對(duì)于求解困難問題有著重要的意義,為此,第1章重點(diǎn)描述了原始-對(duì)偶算法。第2章,對(duì)圖問題展開了討論,其中圖的中心性算法是圖特征提取的重要手段,而社群發(fā)現(xiàn)算法則解決了圖聚類問題。有了線性模型和圖模型后,第3章對(duì)NP問題進(jìn)行了詳細(xì)的介紹,其中討論了多個(gè)圖相關(guān)問題,如最 大團(tuán)問題、哈密頓回路問題等。第4章討論了解決 NPC問題的重要算法近似算法,其中需要重點(diǎn)掌握的是近似算法的分析。第5章討論了隨機(jī)算法,因隨機(jī)算法的一個(gè)重要作用是降低算法復(fù)雜度,所以其也可以用于困難問題的求解。同時(shí),隨機(jī)算法在圖特征提取中起到重要的作用,為此,在此章中,我們討論了隨機(jī)游走在圖嵌入中的應(yīng)用。第6章討論的在線算法主要用于解決在線問題,盡管目前的在線問題很多都采用深度學(xué)習(xí)方法來解決,但是了解在線問題的基本算法及其分析手段,對(duì)我們?cè)O(shè)計(jì)好的深度學(xué)習(xí)方法具有指導(dǎo)作用。最后,在第7章討論了啟發(fā)式算法,啟發(fā)式算法既是人工智能的基礎(chǔ)算法,又是解決 NPC問題的關(guān)鍵方法,所以在實(shí)際中有著廣泛的應(yīng)用。為了讓讀者能夠初步應(yīng)用所學(xué)的算法,本書在每章的最后一節(jié)都給出了算法的應(yīng)用案例,這些案例包含了一些經(jīng)典案例,也包含了作者科研項(xiàng)目中碰到的一些實(shí)際問題。標(biāo)題加*符號(hào)的章節(jié),學(xué)習(xí)難度較大。
高級(jí)算法是本科的算法設(shè)計(jì)與分析課程的延續(xù)和深入,所以了解基礎(chǔ)算法是閱讀本書的前提,和本書配套的基礎(chǔ)算法可以參考本人編寫的《算法設(shè)計(jì)與應(yīng)用》一書。為了讓讀者能夠更好地學(xué)習(xí)書中的知識(shí),本人對(duì)課堂教學(xué)進(jìn)行了實(shí)錄,目前錄課已經(jīng)發(fā)布在 B站,賬號(hào)為 foretmer,有興趣的讀者可以結(jié)合視頻來學(xué)習(xí)本書。同時(shí),和本書相關(guān)的課件、課后習(xí)題也會(huì)在 B站上發(fā)布。
本書的編寫得到了武漢大學(xué)研究生院和武漢大學(xué)網(wǎng)絡(luò)安全學(xué)院的支持,在此一并感謝。同時(shí)還要特別感謝本人教過的歷屆學(xué)生,在和學(xué)生上課、討論的過程中,他們提供了很多靈感并幫助修改了一些問題,如偽代碼錯(cuò)誤、公式錯(cuò)誤等。另外,感謝本書編輯對(duì)本書全文進(jìn)行了認(rèn)真的校對(duì)。
盡管本人已經(jīng)盡了最 大的努力去避免錯(cuò)誤,但由于時(shí)間和能力的原因,書中難免存在不妥之處,如讀者發(fā)現(xiàn)錯(cuò)誤,還請(qǐng)指出,不勝感激。
林海,現(xiàn)任武漢大學(xué)-國(guó)家網(wǎng)絡(luò)安全學(xué)院副教授,先后畢業(yè)于法國(guó)巴黎第六大學(xué)(碩士)和法國(guó)國(guó)立高等通信學(xué)校(博士),并取得了計(jì)算機(jī)網(wǎng)絡(luò)博士學(xué)位,是武漢大學(xué)作為人才引進(jìn)的優(yōu)秀青年學(xué)術(shù)骨干。在加入武漢大學(xué)之前,曾經(jīng)先后在法國(guó)電信 Orange 研究院從事博士后研究和在中興通訊歐洲研究所(巴黎)從事系統(tǒng)工程師工作。本書作者一直從事算法方面的教學(xué)和研究,有著多年本科生《算法設(shè)計(jì)與分析》和研究生《高級(jí)算法》教學(xué)經(jīng)驗(yàn)。發(fā)表SCI論文20余篇,發(fā)明專利5項(xiàng),軟著1項(xiàng);主持和參與國(guó)家和省級(jí)項(xiàng)目6項(xiàng)。
前言
第1章線性規(guī)劃
11基本概念
12標(biāo)準(zhǔn)型和松弛型
13單純形法
131單純形法原理
132單純形法步驟
133單純形表
14對(duì)偶
141什么是對(duì)偶
142對(duì)偶怎么來的
143對(duì)偶的性質(zhì)
144對(duì)偶實(shí)例*
15整數(shù)規(guī)劃
151分支限界
1520-1整數(shù)規(guī)劃
16原始-對(duì)偶算法(Primal-Dual Algorithm)
17原始-對(duì)偶算法的應(yīng)用:頂點(diǎn)覆蓋
18本章小結(jié)
第2章高級(jí)圖算法
21最 大流問題
211Ford-Fulkerson算法
212最 大流最小割定理
213Edmonds-Karp算法
214對(duì)偶性質(zhì)*
22圖的中心性算法
221度中心性
222緊密中心性
223中介中心性*
224特征向量中心性
225PageRank
23社群發(fā)現(xiàn)算法(Community Detection Algorithms)
231基于模塊度的算法
232基于標(biāo)簽傳播的算法
233基于團(tuán)的算法
24社群發(fā)現(xiàn)在物流倉(cāng)儲(chǔ)中的應(yīng)用
25本章小結(jié)
第3章NP問題
31基本概念
311P問題、NP問題、NP難問題和NPC問題
312歸約性
32P問題的證明
333CNF可滿足性問題
34最 大團(tuán)問題
35頂點(diǎn)覆蓋問題
36最 大公共子圖
37哈密頓回路*
38本章小結(jié)
第4章近似算法
41基本概念
42旅行商問題
43子集和問題
44集合覆蓋
441簡(jiǎn)單集合覆蓋
442帶權(quán)重的集合覆蓋(廣義集合覆蓋)*
45集合覆蓋-整數(shù)規(guī)劃
46斯坦納最小樹
47近似算法在作業(yè)調(diào)度中的應(yīng)用
48本章小結(jié)
第5章隨機(jī)算法
51基本概念
52避免落入最壞情形
521隨機(jī)快速排序
522隨機(jī)快速選擇(Random Quick Select)
523最小圓覆蓋
53降低算法復(fù)雜度
531弗里瓦德算法(Frievalds Algorithm)
532惰性選擇(Lazy Select)*
533集合覆蓋
534最小割
54隨機(jī)游走及其應(yīng)用
5412CNF-SAT
542圖嵌入和集卡問題
55本章小結(jié)
第6章在線算法
61基本概念
62確定性在線算法
621在線最小生成樹
622在線裝箱問題*
623時(shí)間序列搜索
63隨機(jī)在線算法
631租買問題
632在線二分圖最 大匹配*
64在線算法在物流中的應(yīng)用:裝車問題
65本章小結(jié)
第7章啟發(fā)式算法
71基本概念
72局部搜索
7212-opt算法
7223-opt算法
73模擬退火
74禁忌搜索(Tabu Search)
75蟻群算法
751基礎(chǔ)蟻群算法
752蟻群系統(tǒng)
753最 大-最小蟻群系統(tǒng)
76遺傳算法
761遺傳算法概念和流程
762求解函數(shù)的最 大/最 小值
763旅行商問題
764遺傳算法變體*
77遺傳算法在多目標(biāo)優(yōu)化中的應(yīng)用
78本章小結(jié)
參考文獻(xiàn)