演算法導論之圖演算法--圖的基本概念
是資料結構和演算法學中最強大的框架之一(或許沒有之一)。
用途:
1、用來表現所有型別的結構或系統
2、交通網路
3、通訊網路
4、下棋遊戲
5、最優流程
6、任務分配
7、人際互動網路
。。。。。。
下面首先介紹一下圖論的基本概念,對其有基本瞭解之後再在實踐中加深理解。
圖是將各種模型抽象成一些頂點,這些頂點之間可以通過圖的邊實現連線,即vretex和edge,如下圖所示圓圈中的頂點和黑色的邊:
一、頂點
電路圖中電路元件、或者最近路徑中的城市等抽象出來事物或物件。也稱為節點、結點等
二、邊
頂點之間的連線,表示頂點表示的事物或物件之間的關聯。有有向邊和無向邊,對應有向圖和無向圖
三、同構
只要表示的頂點之間邊的邏輯關係相同
四、有向圖和無向圖Directed Graph/ Undirected Graph
顧名思義,有方向和無方向。這裡是指圖的邊時候有方向。不需要考慮邊上表明的資料,這裡可以看到邊是有特定的方向,即v1到v3是可以的,但是v3到v1就是不可以的。前面其他的圖就是無向圖
五、權重weight
如下圖中邊上標出的值,表示城市間的距離、或者代價等,可以為正數、也可以為負數(距離和價值不可以,但其他實際意義的時候可能存在)
六、路徑、最短路徑
在圖中設定起點(城市)和終點(目的地城市),找出從起點到終點的一條路徑,若權重為距離,可以找到最短的距離;若權重為代價,可以找到最低消費。如下圖從S到t點的路徑,上面資料表示權重
七 環loop
如上圖的v1->v3->v2其實是個環
八 連通圖、連通分量
所有頂點之間都存在通路,如下圖下面的分成上下兩部分,不是聯通的
圖雖然不是一個連通圖,但它有多個連通子圖:0,1,2頂點構成一個連通子圖,0,1,2,3,4頂點構成的子圖是連通圖,6,7,8,9頂點構成的子圖也是連通圖,當然還有很多子圖。我們把一個圖的最大連通子圖稱為它的連通分量。0,1,2,3,4頂點構成的子圖就是該圖的最大連通子圖,也就是連通分量。連通分量有如下特點:
1)是子圖;
2)子圖是連通的;
3)子圖含有最大頂點數。
注意:“最大連通子圖”指的是無法再擴充套件了,不能包含更多頂點和邊的子圖。0,1,2,3,4頂點構成的子圖已經無法再擴充套件了。
顯然,對於連通圖來說,它的最大連通子圖就是其本身,連通分量也是其本身。