圖論入門基礎

幾何思維發表於2021-03-02

文章首先於微信公眾號:幾何思維,關注第一時間獲取更新資訊

圖論是計機算演算法中很重要的一種思想,很多的實際問題都可以通過圖論建模來解決。本文先介紹基本的圖論相關知識,為後續講解具體的圖論演算法做鋪墊,如最大匹配,最小生成樹,最短路,網路流,差分約束,拓撲序等。

1 圖定義

圖的表示:G=(V,E), V=(v|v為圖中的頂點), E=(e|e為圖中的邊)
如下圖:點集V:a,b,c,d,e,邊集E:1,2,3,4,5

圖論入門基礎

2 分類

可分為有向圖無向圖

圖論入門基礎

3 儲存

分鄰接矩陣和鄰接表:

  • 鄰接矩陣,一般用二維陣列實現,對於不帶權的圖,也可以用n(row)個m(column)位二進位制數來表示;
    空間由點決定,適用點少、邊多的稠密圖
  • 鄰接表,一般用連結串列實現;
    空間由邊決定,適用邊少、點多的稀疏圖

如上圖中,無向圖用鄰接矩陣儲存,有向圖用鄰接表儲存。

圖論入門基礎

變數定義

// 鄰接矩陣
int map[100][100];

// 鄰接表
struct ENode{
    int adjvex;
    int weight;
    ENode *next;
}

struct VNode{
    int vertex;
    ENode *edge;
}

VNode adjList[100];

4 簡單圖與多重圖

無向圖中,關聯一對頂點的邊多於一條,稱為平行邊。有向圖中,關聯一對頂點的邊多於一條,且方向相同,也稱為平行邊。
多重圖:含平行邊或自環邊的圖。
簡單圖:既不含平行邊,也不含自環邊。

圖論入門基礎

5 完全圖

每對頂點之間都恰有一條邊的簡單圖,n個頂點的完全圖,共有n(n-1)/2條邊。

圖論入門基礎

6 獨立集

獨立集:圖中兩兩互不相鄰的頂點構成的集合,為圖G的頂點集的子集。
極大獨立集:圖的一個獨立集,且不是其他任一獨立集的真子集。
最大獨立集:頂點數最多的獨立集。頂點個數稱為圖G的獨立數,記為α(G)。
如下圖:
獨立集:[a,c],[a,e],[b,c],[b,e],[b,d],[c,e],[a,c,e],[b,c,e]
極大獨立集:[b,d],加入任何點都無法構成獨立集;而[a,c]不是極大獨立集,還可以加入e構成更大的獨立集[a,c,e]
最大獨立集:[a,c,e],[b,c,e]

圖論入門基礎

7 團

:圖G的一個完全子圖。
極大團:圖的一個團,且不是其他任一團的真子集。
最大團:頂點數最多的團。
如下圖:
團:[a,b],[a,d],[c,d],[c,e],[d,e],[c,d,e]
極大團:[a,b],[a,d],[c,d,e]
最大團:[c,d,e]

圖論入門基礎

8 補圖

定義:圖G的完全圖去除G的邊集後得到的圖。

圖論入門基礎

9 最大獨立集也最大團

獨立集是任意兩點不相鄰,而團是任意兩點相鄰。圖G的補圖是去掉了相連的邊,新增不相鄰的邊。這樣圖G的最大獨立集就可以轉化成補圖的最大團。
如下圖:

圖論入門基礎
圖論入門基礎

10 連通圖

圖中從一個頂點到達另一頂點,若存在至少一條路徑,則稱這兩個頂點是連通的。
無向圖中,如果任意兩個頂點之間都能夠連通,則稱此無向圖為連通圖

圖論入門基礎

無向圖G的一個極大連通子圖稱為G的一個連通分量

圖論入門基礎

有向圖中,如果任意兩個頂點之間都存在路徑,則稱此有向圖為強連通圖

圖論入門基礎

有向圖的極大強連通子圖,稱為強連通分量

圖論入門基礎

n個頂點的強連通圖,邊數最多為n(n-1),最少為n。

圖論入門基礎

11 二分圖

定義:設G=(V,E)是一個無向圖,頂點集V可分割為兩個互不相交的子集,並且圖中每條邊關聯的兩個頂點都分屬於這兩個互不相交的子集,兩個子集內的頂點不相鄰。

圖論入門基礎

充要條件:G至少有兩個頂點,且其所有迴路的長度均為偶數。
判斷方法:染色法

  • 開始對任意一未染色的頂點染色
  • 判斷其相鄰的頂點中,若未染色則將其染上和相鄰頂點不同的顏色;
  • 若已經染色且顏色和相鄰頂點的顏色相同則說明不是二分圖,若顏色不同則繼續判斷

可用bfs或者dfs。

圖論入門基礎

掃描下方二維碼關注公眾號,第一時間獲取更新資訊!

圖論入門基礎

相關文章