1. 程式人生 > >【資料結構必備基礎知識】之圖的基本概念詳解

【資料結構必備基礎知識】之圖的基本概念詳解

一、前言

從今天開始就給大家分享有關於圖的概念和程式碼啦,不知道大家有沒有看夠樹的相關內容呢?以後還會慢慢給大家再分享的,程式碼要一遍一遍過,一輪一輪學習。第一輪樹就先到這裡,等第二輪還會給大家分享的。

圖應該是資料結構中處於霸王地位的一部分了,圖會涉及到圖論的相關知識,咱們現在還涉及不到,等到以後分享數學基礎,講離散數學的時候,會給大家分享有關圖論的內容。

為什麼稱圖是霸王地位呢?因為圖應該是資料結構中最難的:

1.圖狀結構是我們研究的結構裡面最複雜的結構

我們在講解資料的邏輯結構時給大家講到資料結構有如下四個:集合,線性結構,樹形結構,圖狀結構或網狀結構。集合只有同屬於一個集合;線性結構存在一對一的關係;樹形結構存在一對多的關係;圖狀結構存在多對多的關係

2.圖的相關關係非常複雜,相關概念非常多

圖有有向圖,有無向圖;有簡單圖,有多重圖;有連通圖,非連通圖等等等等。如果把圖畫出來,我們人去看一個圖比較簡單,我們會有各種各樣去分析這個圖的方法,計算機不同,他們沒有人這麼強大的大腦,很多對於圖的分析很死板,需要我們把圖分析好了再做處理(如果人工智慧發展比較好的話,這個問題可能會解決)。

但是圖又很重要,不管是地圖,人物關係等,把每個人或者每個地方看作一個點,其他的點都會與之有上千萬的聯絡。所有就都有及其複雜的網路,不管是路徑規劃,導航提醒還是警察在斷案,其實本質上都是圖的應用。

所以,在這裡把圖的相關定義給大家分享一下,方便以後的學習。

二、圖的定義

圖G由頂點集V和邊集E組成,記為G=(V,E),其中V(G)表示圖G中頂點的有限非空集;E(G)表示圖G中頂點之間的關係(邊)的集合。

注意:線性表可以是空表,樹可以是空樹,圖不可以是空圖,圖可以沒有邊,但是至少要有一個頂點

1.有向圖

若E是有向邊(簡稱弧)的有限集合時,則G為有向圖。弧是頂點的有序對,記為<v,w>,其中 v,w 是頂點,v 是弧尾,w 是弧頭。稱為從頂點v到頂點w的弧。

有向圖

 如上圖所示G可表示為:

G=(V,E)
V={1,2,3}
E={<1,2>, <2,1>, <2,3>}

2.無向圖

若E是無向邊(簡稱邊)的有限集合時,則G為無向圖。邊是頂點的無序對,記為 (v,w) 或(w,v) ,且有 (v,w) =(w,v) 。其中 v,w 是頂點。

無向圖

如上圖所示,無向圖G可表示為:

G=(V, E)

V={1,2,3,4}

E={(1,2), (1,3), (1,4), (2,3), (2,4), (3,4)}

3.簡單圖

簡單圖滿足以下兩條內容:

1)不存在重複邊

2)不存在頂點到自身的邊

所以上面的有向圖和無向圖都是簡單圖。與簡單圖相對的是多重圖,即:兩個結點直接邊數多於一條,又允許頂點通過同一條邊與自己關聯。但是我們在資料結構中僅討論簡單圖,所以多重圖不單獨講解啦。

4.完全圖

無向圖中任意兩點之間都存在邊,稱為無向完全圖;如無向圖中的示例就是完全圖。

有向圖中任意兩點之間都存在方向向反的兩條弧,稱為有向完全圖;如示例中的圖就不是完全圖,但如果沒有頂點3和指向頂點3 的邊,就是一個完全圖。即下圖是一個完全圖。

有向完全圖

5.子圖

若有兩個圖G=(V,E),G1=(V1,E2),若V1是V的子集且E2是E的子集,稱G1是G的子圖。

如上面的有向完全圖是有向圖的一個子圖。

6.連通、連通圖、連通分量

在無向圖中,兩頂點有路徑存在,就稱為連通的。若圖中任意兩頂點都連通,同此圖為連通圖。無向圖中的極大連通子圖稱為連通分量。

以下面兩個圖為例,下面的圖是上面的圖的連通分量,並且下面的圖是連通圖。上面圖中I與J也是連通的。

 

上圖的一個連通分量

7.強連通圖、強連通分量

在有向圖中,兩頂點兩個方向都有路徑,兩頂點稱為強連通。若任一頂點都是強連通的,稱為強連通。有向圖中極大強連通子圖為有向圖的強連通分量。

以下面的圖為例:下圖就是一個強連通圖,並且是下面圖的強連通分量。

強連通圖

 

8.生成樹和生成森林

連通圖的生成樹是包含圖中全部頂點的一個極小連通子圖,若圖中有n個頂點,則生成樹有n-1條邊。所以對於生成樹而言,若砍去一條邊,就會變成非連通圖。

在非連通圖中,連通分量的生成樹構成了非連通圖的生成森林。

無向圖的一個生成樹

9.頂點的度、入度和出度

頂點的度為以該頂點為一個端點的邊的數目。

對於無向圖,頂點的邊數為度,度數之和是頂點邊數的兩倍

對於有向圖,入度是以頂點為終點,出度相反。有向圖的全部頂點入度之和等於出度之和且等於邊數。頂點的度等於入度與出度之和

注意:入度與出度是針對有向圖來說的

10.邊的權和網

圖中每條邊上標有某種含義的數值,該數值稱為該邊的權值。這種圖稱為帶樹圖,也稱作網。

11.路徑、路徑長度和迴路

兩頂點之間的路徑指頂點之間經過的頂點序列,經過路徑上邊的數目稱為路徑長度。若有n個頂點,且邊數大於n-1,此圖一定有環。

12.簡單路徑、簡單迴路

頂點不重複出現的路徑稱為簡單路徑。

除第一個頂點和最後一個頂點外,其餘頂點不重複出現的迴路稱為簡單迴路。

13.距離

若兩頂點存在路徑,其中最短路徑長度為距離。

14.有向樹

有一個頂點的入度為0,其餘頂點的入度均為1的有向圖稱作有向樹。如下圖:

有向樹

 

圖的概念很重要,後面會經常用到,希望大家能夠牢記於心,最好的記憶方式就是不斷練習,不斷重複。