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