原文轉自Jelline bloghtml
http://blog.chinaunix.net/uid-9112803-id-411340.html算法
摘要:安全
本文用另外一種思路從新組織《圖論及其應用》相關知識。首先,用通俗化語言闡述瞭如何對事物間聯繫的問題進行圖論建模;接着從現實例子出發,給出 各類典型圖論模型,每種圖論模型對應於圖論一個重要內容;再者,介紹相關知識對上述提到的圖論模型涉及的問題進行解答;最後,補充一些圖論其餘知識,包括 圖論分支、易混概念。網絡
符號約定:閉包
Q(Question)表示對問題描述,M(Modeling)表示數學建模過程,A(Answer)表示原問題轉化爲什麼種圖論問題。dom
1、引言ui
圖論是研究點、線間關係的一門學科,屬於應用數學的一部分。現實生活中,凡是涉及到事物間的關係,均可以抽象爲圖論模型。點表示事物,連線表示事物間的聯繫。整個求解過程以下:spa
原問題——>圖論建模——>運用圖論相關理論求解——>轉化爲原問題的解.net
整個過程關鍵在於圖論建模,所謂圖論建模,就是明確點表示什麼,連線表示什麼,原問題轉化爲圖論中的什麼問題。存在如下兩種狀況:設計
①若事物間聯繫是可逆的(好比雙行道,朋友),則抽象成無向圖
②若事物間聯繫是不可逆的(好比單行道,狀態轉化不可逆),則抽象成有向圖
若是須要進一步刻畫事物間的聯繫(好比城市間的距離),就給連線賦一個權值,從而抽象成賦值圖。
綜上,根據實際問題,可建模成下列圖論模型的一種:無向賦權圖、有向賦權圖、無向非賦權圖、有向非賦權圖。
例1.宴會定理:任何一宴會中,必定存在兩我的有相同的數量朋友
M:點表示人,連線表示當且僅當該兩我的是朋友
A:問題轉化爲任何一個圖必定存在兩個頂點的度相等
2、圖論模型
接下來介紹若干典型的圖論模型,每種模型幾乎對應於圖論的一個重要內容,這些內容將在第三章進行討論,也就給出了這些模型的解答思路。
2.1 偶圖模型
凡涉及兩類事物間的聯繫(即只考慮兩類事物間的聯繫,而不考慮同類事物間的聯繫),都可抽象成偶圖模型。做圖時,將兩類事物分紅兩行或者兩列。這類模型一般被包含在後續的模型中,但因許多現實問題可抽象成該模型,因此單列出來討論。
(1) 倉庫與銷售間
M:點表明倉庫或銷售點,連線表明倉庫與銷售店間的關聯
(2) 上課安排問題
Q:學校有6位教師將開設6門課程。六位教師的代號是Xi(i=1,2,3,4,5,6),六門課程代號是Yi (i=1,2,3,4,5,6)。已知,教師X1可以勝任課程Y2和Y3;教師X2可以勝任課程Y4和Y5;教師X3可以勝任課程Y2;教師X4可以勝任課程Y6和Y3;教師Y5可以勝任課程Y1和Y6;教師X6可以勝任課程Y5和Y6。
M:點表示教師或者課程,連線表示當且僅當該教師能勝任該課程
2.2 最短路模型
凡涉及到最小狀態轉換問題,都可轉化爲最短路模型。點表示容許的狀態,連線表示狀態的轉換(可逆與不可逆分別對應於無向圖、有向圖)。
(1) 最短航線
M:點表示城市,連線表示當且僅當兩城市有直達航線,並在該線上註明兩城市的距離,即權值
A:問題轉化爲求兩點間的最短路徑
(2) 狀態轉換
Q:某兩人有一隻8升的酒壺裝滿了酒,還有兩隻空壺,分別爲5升和3升。求最少的操做次數能均分酒。
M:設x1,x2,x3分別表示8,5,3升酒壺中的酒量,則
點表示組合(x1,x2,x3) ,連線表示當且僅當可經過倒酒的方式相互變換
A:問題轉化爲在該圖中求點(8,0,0)到點(4,4,0)的一條最短路
(3) 狼羊菜渡河
Q:在一河岸有狼,羊和捲心菜。擺渡人要將它們渡過河去,因爲船過小,每次只能載同樣東西。因爲狼羊,羊捲心菜不能單獨相處。問擺渡人至少要多少次才能將其渡過河?
M:可是如下組合不能容許出現:狼羊菜,羊菜,狼羊,人,人狼,人菜,共6種。岸上只能容許出現10種組合:人狼羊菜,人狼羊,人狼菜,人羊,空,菜,羊,狼,狼菜,人羊菜。
點表示可容許的組合,連線當且僅當兩種狀況可用載人(或加一物)的渡船相互轉變。
A:問題轉化爲求由頂點「人狼羊菜」到頂點「空」的一條最短路。
2.3 最小生成樹模型
道路鋪設
Q:道路鋪設,使得任意兩個地方都可達,而且費用最小
M:點表示工廠(假設是工廠),任意兩點連線,並標出鋪設須要的費用
A:問題轉化爲求該圖的最小生成樹
2.4 歐拉圖模型
通俗地講,G是歐拉圖當且僅當G存在通過每條邊剛好一次,而且回到起始點的跡。
(1) 哥尼斯堡七橋問題
Q:可否從一點出發,走遍7座橋,且經過每座橋剛好一次,最後仍回到起始地點
M:點表示陸地,連線表示橋
A:問題轉化爲G是否存在E圖
(2) 中國郵遞員問題
Q:郵遞員必須走過他投遞範圍內的每一條街道至少一次,選擇一條儘量短的路線
M:點表示路口,連線表示當且僅當兩路口有直達街道
A:若G是E圖,經過Fleury算法構造Euler環遊,即爲所求。不然,按必定規則添加劇復邊,再用Fleury算法構造Euler環遊。
2.5 哈密爾頓圈模型
(1) 旅行售貨員問題——TSP
一售貨員要到若干城市去售貨,每座城市只經歷一次,問如何安排行走路線,使其行走的總路程最短。
例子:
Q:一電腦代理商要從她所在城市出發,乘飛機去六個城市,而後回到出發點,若是要求每一個城市只經歷一次,可否辦到?給出行走方案。
M:點表示城市,連線表示兩城市有直達航線
A:該圖是否存在H圈
(2) 圓桌會議座位安排
Q:若干人圍圓周開會,每一個人會不一樣的語言,如何安排座位,使得每一個人可以和他身邊的交流
M:點表示人,連線表示當且僅當兩我的能交流,即至少會同一種語言。(可能你一會兒想到的偶圖模型,的確該問題能夠抽象成偶圖模型,但很難轉化爲圖論問題)
A:給出該圖的一個H圈
2.6 匹配模型
(1) 旅遊座位安排
Q:有一個旅行團要組織一批人去旅遊,其中一些人是朋友他們要乘坐公共汽車去,而車上的位子是成對的。所以爲了讓你們旅途更愉快,旅行團負責人須要將成對的朋友安排在一塊兒。給出一種安排方案。
M:點表示旅行團的人,連線表示當且僅當兩人是朋友
A:求該圖的最大匹配
(2) 研究生找工做
Q:學生能找到理想工做嗎?
M:點表示研究生或者工做,連線表示當且僅當學生申請了該工做
A:問題轉化爲求飽和每一個頂點的一個匹配,即完美匹配
(3) 最優分派問題
M:點表示工做或者人員,構造徹底偶圖,邊的權值表示該工人作此份工做的效率
A:問題轉化爲求該圖的最優匹配
2.7 平面圖模型
平面模型能夠這樣理解,交通網絡,使得不交叉,且無需修高架橋、隧道(這裏的隧道顯然跟山洞不一樣)
(1) 電路板設計問題
Q: 鏈接電路元件間的導線間不能交叉。不然,當絕緣層破損時,會出現短路故障。
M;點表示電路元器件,連線表示元器件間的鏈接
A;該圖是否可平面
(2) 景區空調管道的設計
M:點表示景區,連線表示當且僅當兩景點間要鋪設空調管道
A:可否把上圖畫在平面上,使得邊不會相互交叉?
(3) 3間房子和3種設施問題
Q:要求把3種公用設施(煤氣,水和電)分別用煤氣管道、水管和電線鏈接到3間房子裏,要求任何一根線或管道不與另外的線或管道相交,可否辦到?
M:點表示公用設施或者房子,連線表示該類公用設施鏈接到該房子
A:抽象出來的圖是否可平面嵌入
2.8 着色模型
點着色問題對應於頂點集合的一種劃分方式,對應於分類問題。邊着色對應於邊集合的一種劃分方式,也對應於分類問題。區分點着色模型和邊着色模型,主要在於抽象出來的模型,是相鄰的頂點仍是相鄰的邊不能着同一種顏色。
(1) 點着色模型
① 考試時間安排
Q:使得學生們不會有相互衝突的考試,最小安排數
M:點表示待考的課程,連線表示至少有一個學生同時選擇這兩門課
A:問題轉化爲求該圖的點色數(把互不衝突的課程、考試安排在同一個時間段完成)
② 課程安排問題
Q: 學生選擇課程中,使得學生選課不會發生衝突,如何制訂一張課時數儘量小少的課表
M:點表示課程,連線表示當且僅當有某個學生同時選了這兩門課程
A:問題轉化爲求該圖的點色數
③ 交通燈的相位設置問題
Q:爲了(最終)讓全部的車輛都可以安全經過路口,對於交通燈來講,所須要的相位的最小數是多少
M:點表示車道,連線當且僅當兩個車道上的車不能同時安全地進入路口
A:問題轉化爲求該圖的點色數
(2)邊着色模型
① 排課表問題
Q:設有m位教師,n個班級,其中教師xi要給班級yj上pij節課。求如何在最少節次排完全部課。
M:令X={x1,x2,…,xm}, Y={y1,y2,…,yn},xi與yj間連pij條邊,得偶圖G=(X, Y)。
A:問題轉化爲求該圖的邊着色數
(2) 比賽安排問題
Q:最少天完成比賽
M:點表示參賽人,連線當且僅當兩人有比賽
A:問題轉化爲求一種最優邊着色,即用最少色數進行正常邊着色
2.9 覆蓋模型
覆蓋模型,對應於控制問題,通俗地講點覆蓋對應於用最少的點來控制全部邊(即任一邊至少有一個頂點在點獨立集中),邊覆蓋對應於用最少的邊控制全部的點。均對應於控制問題。
(1) 哨站設計
Q:城市設置哨崗,使得哨兵能監管全部街道的最少哨崗數
M:點表示交叉口,連線表示存在直達街道
A:問題轉化爲求該圖的點覆蓋
2.10 強連通性定向圖模型
(1) 城市交通網設計問題
Q:一座城市爲某種須要,要把全部街道改成單行道,使得人們在任意兩個位置均可以相互到達。如何設計單行道方向
M:頂點表示街道交叉口,連線當且僅當存在直達街道
A:問題等價於在模型圖中給出其強連通定向
(2) 競賽圖
M:循環比賽的結果能夠用所謂的「競賽圖」來表示。u隊打敗了v隊,則由點u向v畫一條有向邊。顯然,「競賽圖」是徹底圖的一種定向圖。
3、模型求解
現針對上述的模型給出求解過程,每一個模型幾乎對應於圖論的一個主要內容。
3.1 偶圖模型
正如上文所說,偶圖模型只是建模方式,並無與直接問題關聯起來。
3.2 最短路算法
(1) Dantjig算法——頂點標號法
在已選定的集合A的臨近點集合B(不包含A集合的點),選擇符合條件(選擇的點不會構成迴路,邊權值最小)的點加入集合A。迭代,直到終點出如今集合A中。
3.3最小生成樹算法
(1) Kruskal(克魯斯克爾)算法
從G中的最小邊開始,進行避圈式擴張。從符合擴展邊(新加入的邊不會構成迴路)選擇權值最小的邊進行擴展。
(2) 管梅谷的破圈法
不斷破圈(從賦權圖G的任意圈開始,去掉該圈中權值最大的一條邊,稱爲破圈),直到G中沒有圈爲止,最後剩下的G的子圖爲G的最小生成樹。
(3) Prim算法
對於連通賦權圖G的任意一個頂點u,選擇與點u關聯的且權值最小的邊做爲最小生成樹的第一條邊e1。在接下來的邊e2,e3,…,en-1 ,在與一條已經選取的邊只有一個公共端點的的全部邊中,選取權值最小的邊。
3.4 Euler環遊
(1) Euler環遊斷定
連通圖G是Euler圖 <==> G的每一個頂點的度爲偶數
連通圖G有Euler跡 <==> G最多有兩個奇點
(1) 構造歐拉環遊(Fleury算法)
該算法解決了在歐拉圖中求出一條具體歐拉環遊的方法。方法是儘量避割邊行走。
(2) 最優環遊算法(中國郵路問題)
若G是Euler圖,則G的任何環遊都是最優環遊(最優環遊是指在具備非負權的賦權連通圖中找出一條最小權的環遊)。
若G不是Euler圖,則G的任何環遊,經過某些邊不止一次,經過如下方法求
添加劇復邊(其一,每條邊最多重複一次,獲得一個Euler多重圖;其二,在該多重圖的每個圈上,若是重複通過的邊數目超過圈長度的一半,則交換重複邊與不重複邊),然後Fleury算法求得。
3.5 Hamilton圖
(1) H圖斷定
H圖斷定至今沒有平凡的充要條件,不過能夠經過以下定理輔助判斷。
必要條件
G是H圖 ==> 對於V的每一個非空真子集S,均有ω(G-S)≤|S|,即若去k個點,獲得連通分支數比k大,則不是H圖(逆否命題)。(顯然有割點的圖不是H圖)
充分條件
① 設G是n(n≥)階簡單圖,δ≥n/2 ==> G是H圖
② G是簡單圖,對於任意不相鄰的頂點,知足d(u)+d(v)≥n,G是H圖 <==> G+uv是H圖
③ G是H圖 <==> G的閉包是H圖(若G的閉包是徹底圖,則G是H圖。但一個圖的閉包不必定是H圖)
閉包構造過程:將度數之和≥圖的頂點個數的非鄰接頂點對遞歸鏈接起來,直到再也不有這樣的頂點對存在。
(2) 最優H圈
在一個賦權徹底圖中,找出一個有最小權的H圖,稱這個圈爲最優H圈。目前沒有有效算法,但能夠經過以下近似算法求得近似值:
首先求出一個H圈,經過替換邊不斷改善上界。經過求最小生成樹得到其下界。
3.6 匹配模型
(1)匹配斷定
①最大匹配斷定:
G的匹配M是最大匹配 <==> G不包含M可擴充路
② 偶圖匹配斷定
設G爲具備二分類(X,Y)的偶圖,對於X的每一個子集S ,G包含飽和X的每一個頂點的匹配 <==> |N(S)|≥|S|
G是k正則偶圖 ==> G有完美匹配
在偶圖中,最大匹配的邊數等於最小覆蓋的頂點數
③ 完美匹配斷定
G有完美匹配 <==> 對於V的每一個非空真子集S,奇分支數ο(G-S)≤|S|
每一個沒有割邊的3正則圖都有完美匹配
G有完美匹配 <==> G有1因子 (圖的一個1因子的邊集等價於圖的一個完美匹配)
④1-因子分解
徹底圖K2n是1-可因子化 (除2n外,其他的每一個數按箭頭方向移動一個位置,在每一個位置,同一行的兩點鄰接就獲得一個1因子)
任一正則偶圖是1-可因子化(不斷減去完美匹配的方式求得全部1因子)
任一個具備H圈的3正則圖是1-可因子化 (一個偶數個頂點的H圈能夠分解爲兩個1-因子的並)
若3正則圖有割邊,則不可1-因子分解
(2)匈牙利算法——尋找偶圖的最大匹配
從任一匹配M開始,若M飽和X中的每個頂點,則M即爲所求。不然,從在X在找一個非飽和點u,經過構造紮根於u的M交錯樹來尋找一條可擴路。交換邊,獲得一個更大的匹配。
(3)最優匹配(最優分派問題)
最優匹配即在賦權徹底偶圖中尋找一個具備最大權的完美匹配。能夠經過Kuhn-Munkres最優匹配算法進行求解,該算法採用頂點標號修改策略。
3.7 平面性模型
(1)平面性斷定
① 對於簡單圖G=(n, m),若是m>3n-6,則G是非可平面的;
② 對於連通圖G=(n, m),若是每一個面次數至少爲l≥3,且m>(n-2)l/(l-2),則G是非可平面
③ G是可平面的 <==> G不含有與K5或K3,3同胚的子圖 (庫拉託斯基定理)
④ G是可平面的 <==> G不含有可以收縮成K5或K3,3的子圖 (瓦格納定理)
⑤ 經過平面性算法斷定
⑥ 觀察法判斷,試圖經過移動邊,判斷是否可平面
(2) 平面性算法(DMP算法)
3.8 着色模型
(1) 求點色數
① 任意的圖G,均有χ≤Δ+1
② G是簡單連通圖,且G既不是徹底圖也不是奇圈,則χ≤Δ
③ G是非空簡單圖,則χ≤Δ2+1 (找出全部頂點度≥其相鄰的頂點度 的頂點,在餘下的頂點中找最大度的點,即爲次大度,不等同於第二大度)
④ G是非空簡單圖,若G中度數最大的點互不相鄰,則χ≤Δ
⑤ 對任意的平面圖,均有χ≤5
⑥ 經過色多項式求得,即最小k使得Pk(G)不等於0
上面的各類方法都很繁瑣,僅給出了上界。在實際求解過程當中,能夠求得Δ2+1做爲上界,即次大度加1。經過觀察是原圖是否存在Kn的子圖,若存在,則下界爲n。例如,若原圖存在K3即三角形,則點色數至少爲3。
(2) 求邊色數
① G是簡單圖,則χ’=Δ或Δ+1
② G是偶圖,則χ’=Δ
③ G是簡單圖,若n=2k+1且m>kΔ,則χ’=Δ+1
④ G是奇階Δ正則簡單圖,則χ’=Δ+1
⑤ 設無環圖G中邊的最大重數爲μ,則χ’=Δ+μ
(3) 着色算法
對色集標號,每次給頂點着符合條件(相鄰的頂點不能着相同顏色)的最小顏色數。該算法只能保證最多用Δ+1種顏色給一個圖正常着色,但不能保證使用的顏色數必定是最少。
(4) 着色計數(求色多項式)
縮邊、加邊遞推法
① G爲n階空圖,則 Pk(G)=kn
② Pk(Kn)=k(k-1)(k-2)…(k-n+1)
③ 若d(u)=1,則 Pk(G)=(k-1) Pk(G-u)
④ 加邊遞推法Pk(G-e) = Pk(G)+ Pk(G.e)
減邊遞推法Pk(G)= Pk(G-e)- Pk(G.e)
理想子圖法
理想子圖法改進
3.9覆蓋模型
(1)點覆蓋
一個圖的點獨立集(簡稱獨立集)是指圖中一些互不相鄰的點構成的點子集。含點數最多的獨立集稱最大獨立集,最大獨立集所含的頂點數稱爲G的獨立數,記爲α(G),簡記爲α
G的一個覆蓋是指G的一個頂點子集K,使得G的每條邊都至少有一個端點屬於K。G的最小覆蓋的點數稱G的覆蓋數,記爲β(G),簡記爲β
(2) 邊覆蓋
G的最大匹配的邊數稱爲G的邊獨立數,記爲α’(G),簡記爲α’。
設L是G的一個邊子集
G的一個邊覆蓋是指G的一個邊子集L,使得G的每一個點均爲L中某條邊的端點。G的最小覆蓋的邊數稱G的邊覆蓋數,記爲β’(G),簡記爲β’
(3) 點覆蓋與邊覆蓋關係
① 對任意n階圖G,均有α+β=n
② 對任意n階圖G,且δ(G)>0均有α’+β’=n
③ G是δ(G)>0的偶圖,則α=β’
3.10 強連通定向算法
(1) 存在性問題
定理3( 羅賓斯,1939) 非平凡連通圖G具備強連通定向<==> G是2邊連通的。
(2) 強連通定向算法
從已標號集合L中選擇其與未標號集合U有鄰點的最高標號的點v,擴展該點u,並標點u爲點v標號值加1。對全部未賦方向的邊,由標號值大的頂點指向標號值小的頂點
3.11 點邊面關係運算
① 握手定理:圖G= (V, E)中全部頂點的度的和等於邊數m的2倍
② 設T是(n, m)樹,則:n=m-1
③ 設G=(n,m)是平面圖,則∑deg(f) = 2m
④ 平面圖歐拉公式:設G=(n,m)是連通平面圖,φ是G的面數,則n-m+φ=2
4、圖論分支
4.1 網絡圖論
網絡圖論又稱爲網絡拓撲學,用圖的理論,對電路的結構及其鏈接性質進行分析和研究。
4.2 極值圖論
主要研究與圖相關的極大極小問題。好比最短路徑、最小生成樹、最大匹配、最小覆蓋、最大流等問題。更多信息,請參考維基百科Extremal Graph Theory。
4.3 代數圖論
用代數方法研究圖論問題。更多信息,請參考維基百科Algebraic Graph Theory。
4.4 拓撲圖論
直接看英文吧,It studies the embedding of graphs in surfaces, spatial embeddings of graphs, and graphs as topological spaces.It also studies immersions of graphs.更多信息,請參考維基百科Topological Graph Theory。
4.5 隨機圖論
研究以某種隨機方式產生點數、邊數以及邊的圖(英文原文:A random graph is a graph in which properties such as the number of graph vertices, graph edges, and connections between them are determined in some random way.)。更多信息,請參考維基百科Random Graph。
4.6 結構圖論
結構圖論的核心是哈密頓問題[3]。
5、幾組易混概念
5.1 圖論與拓撲學
圖論之前是做爲拓撲學一章來說解,如今已經發展爲獨立的學科。百度百科詞條拓撲學,說拓撲學是近代發展起來的一個研究連續性現象的數學分支。很費解對吧,看新浪愛問知識人一回答,說「拓撲學」主要研究的是出於數學分析的須要而產生的一些幾何問題。發展至今,拓撲學主要研究拓撲空間在拓撲變換下的不變性質和不變量。 維基百科詞條圖論,說圖論的研究對象至關於一維的拓撲學。
5.2 途徑、跡、路
5.3 歐拉閉跡 歐拉環遊 歐拉回路
5.4 H路 H圈 H圖
注:這幾個,等再看一遍書後再總結。
6、進一步閱讀
老師PPT給出以下參考文獻,咱們用的是研究生教材(張先迪,李正良.圖論及其應用[M].北京:高等教育出版社.2005.2),感受該教材主要是抄[1]的,難怪不是著而是主編。我看過[2]的,比較淺顯易懂,並且給出不少人物背景介紹,讀起來比較有意思。[3]咱們老師也推薦比較多。
[1]美,幫迪《圖論及其應用》
[2]美,Gary Chartrand《圖論導引》,人民郵電出版社,2007
[3]Bela Bollobas,《現代圖論》,科學出版社,2001 中國科學院研究生教學叢書
[4]美,Fred Buckley《圖論簡明教程》,清華大學出版社,2005 李慧霸 王風芹譯
[5] 李尉萱,《圖論》,湖南科學技術出版社,1979
[6] 美,Douglas B.West《圖論導引》,機械工業出版社,2007 李建中,駱吉洲譯
[7] 楊洪,《圖論經常使用算法選編》,中國鐵道出版社,1988
[8] 陳樹柏,《網絡圖論及其應用》,科學出版社,1982
[9] Chris Godsil,Gordon Royle 《Algebraic Graph Theory》,世界圖書出版公司北京公司,2004
[10] 王朝瑞,《圖論》,高等教育出版社,1983