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