1. 程式人生 > >演算法導論之圖演算法--圖的基本概念

演算法導論之圖演算法--圖的基本概念

是資料結構和演算法學中最強大的框架之一(或許沒有之一)。

用途:

1、用來表現所有型別的結構或系統

2、交通網路

3、通訊網路

4、下棋遊戲

5、最優流程

6、任務分配

7、人際互動網路

。。。。。。

下面首先介紹一下圖論的基本概念,對其有基本瞭解之後再在實踐中加深理解。

圖是將各種模型抽象成一些頂點,這些頂點之間可以通過圖的邊實現連線,即vretexedge,如下圖所示圓圈中的頂點和黑色的邊:

一、頂點

電路圖中電路元件、或者最近路徑中的城市等抽象出來事物或物件。也稱為節點、結點等

二、邊

頂點之間的連線,表示頂點表示的事物或物件之間的關聯。有有向邊和無向邊,對應有向圖和無向圖

三、同構

只要表示的頂點之間邊的邏輯關係相同

就是同一張圖,也就是圖的同構。與圖的表現形式不同。不論表示邊的線的粗細和陰影,頂點的顏色,下面兩個圖表示的同一個圖

四、有向圖和無向圖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頂點構成的子圖已經無法再擴充套件了。 
顯然,對於連通圖來說,它的最大連通子圖就是其本身,連通分量也是其本身。