線上性表中,資料元素之間是被串聯起來的,僅有線性關係,每個資料元素只有一個直接前驅和一個直接後繼。在樹形結構中,資料元素之間有著明顯的層次關係,並且每一層上的資料元素可能和下一層中的多個元素相關,但只能和上一層中的一個元素相關。
可是現實生活中,好多關係不再是一對一或一對多,比如人和人之間的關係,會互相認識,就要考慮多對多的情況。這就是今天要介紹的——圖。
圖是一種較線性表和樹更加複雜的資料結構,在圖形結構中,結點之間的關係可以是任意的,圖中任意兩個資料元素都可能相關。先看個圖:
圖是由頂點的有窮非空集合和頂點之間的邊的集合組成,通常表示為:G(V,E),其中G表示一個圖,V是圖G中的頂點的集合,E是G中邊的集合。
對於圖的定義我們需要注意:
- 線性表中的資料元素叫元素,樹中將資料元素叫做結點,在圖中資料元素叫做頂點。
- 線性表中可以沒有資料元素,稱為空表。樹中可以沒有結點,叫做空樹。在圖結構中,不允許沒有頂點,在定義中,V表示有窮的非空集合。
- 線性表中,相鄰的資料元素之間具有線性關係,樹結構中,相鄰兩層的結點具有層次關係,而圖中,任意兩個頂點之間都有可能存在關係,頂點之間的邏輯關機用邊來表示,注意邊集可以為空。
各種圖定義
無向邊:若頂點vi到vj之間的邊沒有方向,則稱這條邊為無向邊,用無序偶對(vi,vj)來表示。如果圖中任意兩個頂點之間的邊都是無向邊,則稱該圖為無向圖,如圖:
**有向邊:若從頂點vi到vj的邊有方向,則稱這條邊為有向邊,也稱為弧,用有序偶< vi,vj >來表示,vi稱作弧尾,vj稱作弧頭。如果圖中任意兩個頂點之間的邊都是有向邊,則稱該圖為有向圖。**有向邊用“<>”表示,注意它是有順序的,第一個為弧尾,第二個為弧頭,不能顛倒。
**在圖中,若不存在頂點到其自身的邊,且同一條邊不重複出現,則稱這樣的圖為簡單圖。**我們之後說到的都是簡單圖。下面兩個圖就不是簡單圖:
**在無向圖中,如果任意的兩個頂點之間都存在邊,則稱該圖為無向完全圖。*含有n個頂點的無向完全圖有n(n-1)/2條邊。如下圖:
在有向圖中,如果任意兩個頂點之間都存在互為相反的兩條弧,則稱該圖為有向完全圖。含有n個頂點的有向完全圖有n*(n-1)條弧,如下圖:
由以上可以得出這樣的結論,對於具有n個頂點和e條邊數的圖,無向圖0<=e<=n(n-1)/2,有向圖0<=e<=n(n-1) 。
有很少條邊或弧的圖稱為稀鬆圖,反之稱為稠密圖。
有些圖的邊或弧具有與它相關的數字,這種與圖的邊或弧相關的數叫做權。這種帶權的圖通常稱為網。如下圖:
圖中頂點間存在路徑,兩頂點存在路徑則說明是連通的,如果路徑最終回到起始點則稱為環,當中不重複的叫簡單路徑。若任意兩頂點都是連通的,則圖就是連通圖,有向則稱為強連通圖。圖中有子圖,若子圖極大連通這就是連通分量,有向的則稱為強連通分量。
更多精彩內容,關注我的微信公眾號——Android機動車