圖論是近年來發展迅速而又應用普遍的一門新興學科。它最先起源於一些數學遊戲的難題研究。如1736年歐拉(L . Euler)所解決的哥尼斯堡七橋問題;以及在民間廣爲流傳的一些遊戲問題:例如迷宮問題、棋盤上馬的行走路線問題等等。算法 這些古老的問題當時吸引了許多學者的注意,從而在這些問題研究的基礎上,又提出了著名的四色猜測和環遊世界各國的問題。網絡 圖論不斷髮展,它在解決運籌學,網絡理論,信息論,控制論,博奕論以及計算機科學等各個領域的問題時,顯示出愈來愈大的效果。函數 對於這樣一門應用普遍的學科,其包含的內容是豐富的,本篇咱們只准備介紹基本的概念和定理,爲從此有關學科及課程的學習和研究提供方便。工具 |
定義:一個圖 G 是一個三元組< V(G) , E(G) , ΦG >
其中 V(G) 是非空的結點(頂點)集合,post
E(G) 是邊的集合,學習
ΦG 是從邊集 E 到結點偶對集合上的函數。spa
討論定義:
(1) V(G) ={ v1 , v2 , … , vn }是非空的結點集合,vi 稱爲結點,簡稱V是點集。3d
(2) E(G)={e1 , … , em}爲邊的集合,ei 稱爲邊,簡稱 E 爲邊集。blog
(3) ΦG 是從邊集 E 到結點偶對集合上的函數。即對於每條邊 ei ,都存在V中的結點偶對與之相對應。遊戲
例如 ΦG (ei) = (vi , vj)
(4) 定義中的結點偶對能夠是有序偶對 <vi , vj> ,也能夠是無序偶對 (vi , vj) 。
①若邊 e 對應有序偶對 <vi , vj> ,則稱邊 e 是有向邊(弧),
結點 vi 稱爲有向邊的起點,結點 vj 稱爲有向邊的終點,統稱爲 e 的端點。
也稱 e 是關聯於結點vi 和 vj 的,結點vi 和 vj 是鄰接的(相鄰的)。
②若邊 e 對應無序偶對 (vi , vj),則稱邊 e 是無向邊(棱)。
(5) 每條邊都是有向邊的圖,稱爲有向圖;
每條邊都是無向邊的圖,稱爲無向圖。
(6) 若令 e= <vi , vj> 或 e= (vi , vj),即以結點偶對來表示圖的邊,這樣可把圖簡化成:
G=<V,E >.
專有名詞:
(1) ( n , m) 圖:具備 n 個結點,m 條邊的圖。
(2)有向徹底圖:在 n 個結點的有向圖
G = <V , E> 中,若是 E=V×V,則稱G爲有向徹底圖。
例如
注:對於有向簡單徹底圖:其有向邊條數 m= 2 Cn2 = n(n-1) (除去自迴路)
(3)無向徹底圖:每兩個結點之間均有連線的無向圖。
具備 n 個結點的無向徹底圖的邊數爲:m= Cn2 = n(n-1)/2
例如
(4)混合圖:既有有向邊,又有無向邊的圖。
(5)互相鄰接的邊:鏈接於同一結點的二條(或若干條)邊。
例如
(6) 自迴路:圖中起始且終止於同一結點的邊。
(自迴路的箭頭方向是沒有意義的 )
(7)多重邊(平行邊):二個結點之間方向相同的二條(多條)邊。
例如
(8)含有多重邊的圖稱爲多重圖,非多重圖稱爲線圖。
例如
(9) 簡單圖:無自迴路的線圖稱爲簡單圖。
即簡單圖是沒有自迴路和多重邊的圖。
(10) 賦權圖G是一個三元組〈V , E , g〉或四元組〈V , E , f , g 〉,
其中 V 爲結點集合,E 爲邊的集合,f 是定義在集合 V上的函數,g 是定義在集合 E 上的函數。
實際上,賦權圖能夠用一句話歸納:每一條邊或結點均註上數字的圖(數字能夠爲整數、正實數)
(11)孤立結點:不與任何結點相鏈接的結點。
(12)零圖:僅包含孤立結點的圖,記爲 ( n , 0 ).
(13)平凡圖:只有一個結點的圖(1 , 0).
在有向圖 G 中,對於任何結點 v,
①以 v 爲始點的邊的條數,稱爲結點 v 的引出次數(出度),記做 deg+(v) ;
②以 v 點爲終點的邊的條數稱爲 v 的引入次數(入度),記做 deg-(v) ;
③結點 v 的引入次數和引出次數之和稱爲結點 v 的次數(度數),記做 deg(v),即
deg(v) = deg+(v) + deg-(v) .
對於無向圖:
結點 v 的度數等於與該結點 v 相關聯的邊的條數,也記爲 deg(v) 。
正則圖:全部結點的度數均相同的簡單無向圖。
例如
定理1
設 G 是一個 (n , m) 圖,它的結點集合爲 V ={ v1 , v2 , … , vn } ,則
即全部結點度數的總和等於邊數的兩倍。
推論:
在任何圖中,
(1) 全部結點的度數之和必爲偶數;
(2) 度數爲奇數的結點必有偶數個。
定理2
在任何有向圖中,全部結點的入度之和等於全部結點的出度之和。
定義:
在一個圖中,從結點 v0 到結點 vn 的一條路徑 P 是:圖的一個點邊交替序列
( v0 e1 v1 e2 v2 … en vn )。
即從結點 v0 出發通過某些結點,而最終到達終點 vn 的點邊交替序列稱爲圖的路徑。
討論定義:
⑴ 從一個結點到某一結點的路徑(如有的話),不必定是惟一的;
例如:設有向圖G,求起始於1,終止於3的路徑。
專有名詞:
(1)穿程所有結點的路徑:通過圖中全部結點的路徑。
(2)簡單路徑:在某一路徑中,若是同一條邊僅出現一次的路徑。
(3)基本路徑:在某一路徑中,若是同一頂點僅出現一次的路徑。
(4)迴路:若是某路徑的起點 v0 和終點vn 相重合,則稱此路徑爲迴路。
(5)簡單迴路:經過每條邊不超過一次的迴路。
(6)基本回路:經過每一個結點不超過一次的迴路。
(7)非迴路圖:沒有任何迴路的簡單有向圖。
討論:
①迴路不包含自迴路。
②不是基本路徑的任何路徑都會包含迴路,而去掉這些迴路就能夠獲得基本路徑。
(a)邊的序列表示法:設G = <V , E> 爲一有向圖,vi ∈ V ,則路徑能夠表示成:
(< v1 , v2 > , < v2 , v3 > , … , < vk-1 , vk >)
(b)結點表示法: 在非多重圖中,也可用頂點序列 (v1 , v2 , … , vk ) 表示路徑。
若兩個結點之間有一條路經P,則路徑 P 的長度|P|=P中邊的條數。
定義:
設圖G爲簡單有向圖,且 vi , vj V,若從 vi 到 vj 存在任何一條路徑的話,則稱 vi 到 vj 是可達的
注:
可達性必定知足:自反性;可傳遞性
定義:
從 vi 到 vj 的最短路徑的長度稱爲距離,並記做: d<vi , vj>
討論定義:
(1) d<vi , vi> = 0
(2) d<vi , vj> ≥ 0
(3) d<vi , vj> + d<vj , vk> ≥ d<vi , vk>
(4)規定:若 vi 到 vj 是不可達的,則d<vi , vj> = ∞.
(5) 在有向圖中,若 vi 到 vj 是可達的,且 vj 到 vi 也是可達的,
但 d<vi,vj> 不必定等於 d<vj, vi>。
例如
d< c, a > = 1,
d< a, c > = 2
定義:
對於無向圖 G,若是任何兩個結點是相互可達的,則稱圖G是連通的
對於有向圖來說,若是兩結點均是互相可達的,則稱此圖是強連通的
若圖中任何結點偶對中至少有一點到另外一結點是可達的,則稱此圖是單側連通的
對於簡單有向圖的伴隨無向圖(底圖),如果連通的,則稱此圖爲弱連通的
注:伴隨無向圖即爲去掉箭頭方向的圖。
定理:
一個有向圖是強連通的充要條件是它包含一個迴路,且該回路至少包含每一個結點一次
定義:
設G = <V , E>爲一簡單有向圖,且G’是G的子圖。
對於某一性質而言,若沒有其餘包含G’的子圖具備這種性質,
則稱子圖G’是相對於該性質的極大子圖。
具備強連通性質的極大子圖G’稱爲強分圖;
具備單側連通性質的極大子圖G’稱爲單側分圖;
具備弱連通性質的極大子圖G’稱爲弱分圖。
定理:
在任一簡單有向圖G=<V,E>中,有向圖的每個結點剛好處於一個強分圖之中。
矩陣是研究圖的有關性質的最有效的工具,可運用圖的矩陣運算求出圖的路徑、迴路和其它一些性質 |
定義:
設G = <V , E>是簡單有向圖,其中V={v1, v2, … , vn}。定義一個 nn 的矩陣 A,並把其中各元素 aij 表示成:
則稱矩陣 A 爲圖 G 的鄰接矩陣。
例如:設圖 G = <V , E>
如圖所示
則圖 G 的鄰接矩陣爲
討論定義:
⑴ 圖G的鄰接矩陣中的元素爲0和1,
∴又稱爲布爾矩陣;
⑵ 圖G的鄰接矩陣中的元素的次序是可有可無的,
只要作 行和行、列和列的交換,則可獲得相同的矩陣。
∴如有二個簡單有向圖,則可獲得二個對應的鄰接矩陣,
若對某一矩陣作行和行、列和列之間的交換後獲得和另外一矩陣相同的矩陣,則此二圖同構。
⑶ 當有向圖中的有向邊表示關係時,鄰接矩陣就是關係矩陣;
⑷ 零圖的鄰接矩陣稱爲零矩陣,即矩陣中的全部元素均爲0;
⑸ 在圖的鄰接矩陣中,
①行中1的個數就是行中相應結點的引出次數(出度).
②列中1的個數就是列中相應結點的引入次數(入度).
設有向圖 G = <V , E>的鄰接矩陣爲 A,
則G的逆圖 = <V , > 的鄰接矩陣就是 AT。
設有向圖 G = <V , E> 的鄰接矩陣爲 A,並令 B = AAT,則
分析:元素 aik = 1 意味着存在邊<vi , vk> .
元素 ajk = 1 意味着存在邊<vj , vk> .
結論:若是從結點 vi 和 vj 二者引出的邊,能共同終止於某些結點 vk ,則這些終止結點 vk 的數目就是 bij 的值,
特別地,當 i = j 時,元素 bii 的值就是結點 vi 的引出次數。
主對角線上的數,表示結點 i 的引出次數。
設有向圖 G = <V , E> 的鄰接矩陣爲 A,並令 B = ATA,則
分析:元素 aki = 1 意味着存在邊<vk , vi> .
元素 akj = 1 意味着存在邊<vk , vj> .
結論:若是從某些結點 vk引出的邊,能同時終止於結點 vi 和 vj ,則這些起始結點 vk 的數目就是 bij 的值,
特別地,當 i = j 時,元素 bii 的值就是結點 vi 的引入次數。
主對角線上的數,表示結點 i 的引入次數
設有向圖 G = <V , E> 的鄰接矩陣爲 A = ( aij ),則 A(2) 的元素
分析:元素 aik = 1 意味着存在邊<vi , vk> .
元素 akj = 1 意味着存在邊<vk , vj> .
因此,元素 aij(2) 的值表示從結點 vi 到 vj 存在長度爲 2 的不一樣路徑的條數。
結論: A(n) 的元素 aij(n) 的值表示從結點 vi 到 vj 存在長度爲 n 的不一樣路徑的條數。
特別,對角線上的元素 aii(n) 表示通過結點 vi的長度爲 n 的不一樣迴路的條數。
例如
A2 表示 i 和 j 之間具備長度爲2的路徑數
A3 表示 i 和 j 之間具備長度爲3的路徑數
A4 表示 i 和 j 之間具備長度爲4的路徑數
注:bij 表示從結點 vi 到 vj 有長度分別爲 1,2,3,4 的不一樣路徑總數。
此時, bij ≠ 0,表示從 vi 到 vj 是可達的。
bij = 0,表示從 vi 到 vj 是不可達的。所以, bij 代表告終點間的可達性。
定義:
設 G = <V , E> 是簡單有向圖,其中 |V|=n( n I+),定義一個 nn 矩陣 P,它的元素爲:
則P稱爲圖G的可達性矩陣。
注:由矩陣 Bn 可計算出可達性矩陣 P,其方法是:若 Bn中(i , j)元是非「0」元素,則令對應的 pij = 1,不然令 pij = 0 。
例如:若
則
定義:
設無向圖G = <V , E> ,
V = {v1 , v2 , … , vn}, E = {e1 , e2 , … , em},
令 B = ( bij )n×m,其中
則稱B爲無向圖G的徹底關聯矩陣
討論定義:
⑴ 徹底關聯矩陣爲布爾矩陣;
⑵ 對應B中行均爲0的結點爲孤立結點,只有一個「1」的行的結點必定爲懸掛的邊,且必定不在任一回路中;
⑶ 所有爲1的行的結點一定聯結圖中全部的結點。
例如
定義:
歐拉路徑:穿程於圖 G 的每條邊一次且僅一次的路徑。
歐拉回路:穿程於圖 G 的每條邊一次且僅一次的迴路。
歐拉圖:具備歐拉回路的圖。
定理:
無向連通圖 G 具備一條歐拉路徑,當且僅當 G 具備零個或兩個奇數度數的結點。
推論:
無向連通圖 G 具備一條歐拉回路(歐拉圖),當且僅當圖G 全部結點度數全爲偶數。
例如:用定理解決哥尼斯堡橋的問題
定理:
有向連通圖 G 具備歐拉回路,當且僅當 G中每個結點的引入次數等於引出次數,即Deg+(v)= Deg-(v) .
定理:
有向連通圖 G 具備歐拉路徑,當且僅當除了二個結點(其中一個的引入次數比引出次數大1,
另外一個的引入次數比引出次數小1)之外的全部結點的引入次數等於引出次數,即Deg+(v)= Deg-(v) .
定義
哈密爾頓路徑:穿程於無向圖 G 的每個結點一次且僅一次的路徑。
哈密爾頓迴路:穿程於無向圖 G 的每個結點一次且僅一次的迴路。
哈密爾頓圖:具備哈密爾頓迴路的圖。
到目前爲止,尚未找到哈密爾頓路徑存在的充分必要條件。下面介紹兩個定理。
定理:
設 G = < V , E > 是具備n 個結點的簡單無向圖,若在 G 中每一對結點次數之和大於或等於(n-1),
則在 G 中必定存在一條哈密爾頓路徑。
注:此定理是充分條件,而不是充分必要條件
例如:n=7,G = <V , E > 見圖:每對結點次數爲4<7-1=6,但確有一條漢密爾頓路徑。
定理:
若圖 G = < V , E > 是哈密爾頓圖,則對於結點集 V 的每一個非空真子集 S 均有
W( G ―S ) ≤ |S| 成立,
其中 W(G-S) 表示從G中刪除S後,所得圖的連通分圖個數; |S| 表示 S 中的結點數。
連通的且無簡單迴路的無向圖稱爲無向樹,簡稱樹
專用名詞:
樹葉(終點):樹中度數爲1的結點。
分枝點(內點):樹中度數大於1的結點。
森林:每一個連通分圖均爲樹的無向圖。
設T是一棵樹,vi,vj 爲T中兩個不一樣的結點,則:
1) vi 和 vj 僅有一條路徑相連通。
2) 在T中加一條邊{ vi , vj },則由此而造成 的圖,僅有一個迴路。
在一棵(n , e)樹中有e=n-1。(n表示結點數,e表示邊數)
設F是由 t 棵樹組成的(n , e)森林,則有e=n-t。
在結點大於2的(n , e)樹中,全部結點的度數之和爲2(n-1)
在任一(n ≥ 2)的樹T中,至少有二片樹葉。
一個無向圖G的生成子圖是樹TG,則稱TG是G的生成樹(支撐樹)。
討論定義:
1) G的生成樹不是惟一的。
2)如何在連通圖G中尋找一棵生成樹:
①若G沒有循環,則G自己就是一棵樹;
②若G僅有一條循環,今後循環中刪去一條邊,仍保持圖的連通性,獲得一棵生成樹。
③若G有多條循環,則逐個對每條循環重複②中操做,直到打斷G中全部循環,獲得一棵生成樹爲止。
定理:
任何連通無向圖至少有一棵生成樹
給定一個連通圖,尋找其生成樹的數目是圖論中樹的計數問題
含 n (n>1)個結點的標記徹底圖Kn 有 nn-2 棵標記生成樹
定義:
生成樹T中的邊稱爲樹枝,不在生成樹T中但屬於圖G的邊,稱爲樹T的弦,弦的集合稱爲樹T的補。
在一個連通賦權圖中,樹枝的權之和爲最小的生成樹稱爲最小生成樹。
Kruskal算法:
設G有n個結點,m條邊,先將G中全部邊按權的大小次序進行排列,不妨設:
W(e1) < W(e2) < … < W(em),
①k←1,A←Ø。
②若AU{ek}導出的子圖中不包含簡單循環,則A ← A U{ek}
③若A中已有n-1條邊,則算法終止,不然K← K+1,轉至②。
這一算法假設G中權均不相同,對於邊權任意狀況也徹底適用。這時求得的最小生成樹不惟一
定義:
如有向圖在不考慮邊的方向時是一棵樹,稱之爲有向樹。
定義:
一棵有向樹,若是恰有一個結點的入度爲0,其他全部結點的入度都爲1,則稱爲根樹。入度爲0的結點稱爲根,出度爲0的結點稱爲葉,出度不爲0的結點稱爲分枝點或內點。任何結點的級(高度)是從根出發到該結點的路徑長度(邊的條數)。
定義:
指明瞭根樹中結點或邊的次序的樹爲有序樹。在有序樹中,如每一個結點有明確級,同一級的結點排在同一行,並明確它們位置,則這樣的樹稱位置樹
定義:
在根樹中,若每個結點的出度小於或等於m,則稱這棵樹爲m叉樹。若每一個結點的出度剛好等於m或零,則稱這棵樹爲徹底m叉樹,若其全部樹葉層次相同,稱爲正則m叉樹。
特別,當m=2時,稱爲二叉樹。
不少實際問題可用二叉樹或m叉樹表示。任何一棵有序樹均可以把它改寫爲一棵對應的二叉樹。
定義:
在有向樹T中,由結點V和它的全部子孫所構成的結點子集V’以及從V出發的全部有向路中的邊所構成的邊集E’組成T的子圖
方法:
設有序樹T中結點Vi 的r棵子樹有根Vi1, Vi2 , …, Vir,其順序自左向右,則在二叉樹T’中Vi1是Vi 的左兒子,Vi2是Vi1的右兒子,Vi3是Vi2的右兒子….,Vir是Vir-1的右兒子。