讀古今文學網 > 學習JavaScript數據結構與算法(第2版) > 9.1 圖的相關術語 >

9.1 圖的相關術語

圖是網絡結構的抽像模型。圖是一組由邊連接的節點(或頂點)。學習圖是重要的,因為任何二元關係都可以用圖來表示。

任何社交網絡,例如Facebook、Twitter和Google plus,都可以用圖來表示。

我們還可以使用圖來表示道路、航班以及通信狀態,如下圖所示:

讓我們來學習一下圖在數學及技術上的概念。

一個圖G = (V, E )由以下元素組成。

  • V:一組頂點

  • E:一組邊,連接V 中的頂點

下圖表示一個圖:

在著手實現算法之前,讓我們先瞭解一下圖的一些術語。

由一條邊連接在一起的頂點稱為相鄰頂點。比如,A和B是相鄰的,A和D是相鄰的,A和C是相鄰的,A和E不是相鄰的。

一個頂點的度是其相鄰頂點的數量。比如,A和其他三個頂點相連接,因此,A的度為3;E和其他兩個頂點相連,因此,E的度為2。

路徑是頂點v1, v2,…,vk的一個連續序列,其中vivi+1是相鄰的。以上一示意圖中的圖為例,其中包含路徑A B E I和A C D G。

簡單路徑要求不包含重複的頂點。舉個例子,A D G是一條簡單路徑。除去最後一個頂點(因為它和第一個頂點是同一個頂點),環也是一個簡單路徑,比如A D C A(最後一個頂點重新回到A)。

如果圖中不存在環,則稱該圖是無環的。如果圖中每兩個頂點間都存在路徑,則該圖是連通的。

有向圖和無向圖

圖可以是無向的(邊沒有方向)或是有向的(有向圖)。如下圖所示,有向圖的邊有一個方向:

如果圖中每兩個頂點間在雙向上都存在路徑,則該圖是強連通的。例如,C和D是強連通的,而A和B不是強連通的。

圖還可以是未加權的(目前為止我們看到的圖都是未加權的)或是加權的。如下圖所示,加權圖的邊被賦予了權值:

我們可以使用圖來解決計算機科學世界中的很多問題,比如搜索圖中的一個特定頂點或搜索一條特定邊,尋找圖中的一條路徑(從一個頂點到另一個頂點),尋找兩個頂點之間的最短路徑,以及環檢測。