講透學爛二叉樹(一):圖的概念和定義—各類屬性特徵淺析

樹和圖的概念

圖是一種特殊的數據結構,由點和邊構成,它能夠用來描述元素之間的網狀關係,這個網狀沒有順序,也沒有層次,就是簡單的把各個元素鏈接起來。html

圖的概念和基本性質

圖(graph):圖(graph)由邊(edge)的集合及頂點(vertex)的集合組成。一般記爲:G=(V,E)。對於兩個圖G和G’,若是G’的頂點集合與邊集合均爲G的頂點集合與邊集合的子集,那麼稱G’是G的子圖。子圖實際上就是一張圖裏面小一點的圖,也能夠是點,不難理解。算法

圖的結構-示意圖

圖經常使用來表示「多對多」的關係,如常說的:六度空間理論(Six Degrees Separation)網絡

頂點(vertex)的屬性:

  • 度數(degree),與該頂點相關聯的總邊數,一個圖G的總度數d(V)等於總邊數2倍:2E。當圖的邊具備方向時,一個頂點又分爲出度(out-degree)和入度(in-degree),出度是以該頂點爲起點的邊數,入度是以該頂點爲終點的邊數。數據結構

  • 階數(order),圖G中頂點集V的大小爲G的階數。ide

邊又稱爲線(line)或弧(arc),邊(u,v)中表示u和v鄰接(adjacent),(u, v) ∈ E,oop

邊(edge)的屬性:

一條邊是一個頂點對(u,v),u, v ∈ V,按照圖的頂點對是否有序頂點對有序的圖稱爲有向圖(directed graph, digraph),此時邊(u,v)和(v,u)是兩條不一樣的邊,頂點對無序的圖稱爲無向圖(undirected graph),此時邊(u,v)和(v,u)是兩條相同的邊,無向圖可看做一個特殊的有向圖ui

具備成分的邊包含:權(weight)、值(cost/value),此時圖由可分爲有權圖(weighted graph)和無權圖(unweighted graph),無權圖能夠看做是全部邊權值相同的有權圖spa

路徑(path),一條路徑是一個頂點序列u1, u2, u3, …, un,(ui, u(i+1)) ∈E,1<=i<n。路徑長等於路徑的邊數:n-1,不包含邊的路徑長爲0。.net

簡單路徑:路徑上全部頂點互異,起點和終點能夠相同orm

環或圈(cycle),此時u1=un,並且路徑長至少爲1,有向圖(u,v)和(v,u)是一個圈,無向圖(u,v)和(v,u)一般不被認爲是一個圈。其中無圈圖(acyclic graph)中沒有圈,無圈有向圖又稱爲DAG(directed acyclic graph)

  • 自環邊(self loop),兩個頂點都相同的邊。

  • 重邊或平行邊(parallel edges),鏈接兩個頂點的邊數超過一條,又稱爲多重邊(multiple edges)

連通圖(connected graph),無向圖中每一個頂點到任意頂點都存在一條路徑,連通的有向圖稱爲強連通(strongly connected),非連通的有向圖,去掉方向其基礎圖(underlying graph)是連通的,則成爲弱連通的(weakly connected)

徹底圖(complete graph),圖中任意一對頂點都存在一條邊

稀疏圖(sparse graph),每一個頂點的度數較小的圖

各類圖形概念圖解

圖的基本基本概念

  • 頂點的度:無向圖中連着頂點的邊的數目。

  • 頂點的入度和出度:有向圖中,以這個頂點爲起點的邊的數量稱爲這個頂點的出度;以這個頂點爲終點的邊稱爲這個頂點的入度。

  • 邊權:邊的費用,能夠形象的理解爲「過路費」。對於一張存在邊權的圖,咱們稱爲「帶權圖」。

  • 連通:若是圖中兩點U,V之間存在一條由U通過若干邊、點到達V的路徑,則稱U,V是連通的。

  • 迴路:起點和終點相同的路徑,稱爲「迴路」或「環」。另外,不存在環的有向圖稱爲Directed Acyclic Graph(DAG)。

  • 徹底圖:每一個點都與其它全部的點有連邊的圖。

  • 無向圖:圖的邊沒有方向,能夠雙向。

  • 有向圖:圖的邊有方向,只能按箭頭方向從一點到另外一點。

  • 網絡:帶權重的圖

  • 連通:若是從v 到w存在一條(無向)路徑,則稱v和w是連通的

  • 路徑:v到w的路徑是一系列頂點的集合,其中任意一對相鄰的頂點間都有圖中的邊。

  • 路徑的長度:是路徑中的邊數(若是帶權,則是全部邊的權重和)。若是v和w之間的全部頂點都不一樣,則稱簡單路徑

  • 連通圖:圖中任意兩頂點都連通

  • 連通份量:無向圖的極大連通子圖

  • 極大頂點數:再加一個頂點就不連通了

  • 極大邊數:包含子圖中全部頂點相連的全部邊

  • 強連通:有向圖中頂點v和w之間存在雙向路勁,則稱v和w是強連通的

  • 強連通圖:有向圖中任意兩頂點均強連通

  • 弱連通圖:不符合強連通圖的條件,可是如果將邊的方向都去掉,若是是連通的,則稱爲弱連通圖

  • 強連通份量:有向圖的極大強連通子圖

圖的簡單應用

圖的應用很普遍,這裏舉幾個簡單的例子。

  • 航空系統:頂點表示機場,邊表示時間、距離或飛行的費用,通常最好有強連通的航空系統,另外常見的需求問題有:求任意兩個機場的最佳航線。

  • 交通流:頂點表示街道的交叉口或紅綠燈點,邊表示速度限度或車輛容量,這時能夠求最可能參數交通瓶頸的位置,或找出一條最短路。

  • 社交網絡:頂點表示用戶,用戶的活動、推薦或好友表明邊,這樣能夠表示一個完整的社交用戶網絡。

  • 電商推薦系統:頂點表示用戶已瀏覽、收藏、購物過等相關的商品,邊表示兩個商品的類似性,可表示爲有權圖,權值爲類似性的大小。

另外圖論又可用於研究物理學和化學中的分子

圖的遍歷

  1. 深度優先搜索(Depth Firsh Search, DFS):走一步,看一步,走不通後返回到上一個能走通的結點

  2. 廣度優先搜索(Breadth First Search, BFs):出隊一個,訪問一圈,訪問的同時入隊,至關於樹的層序遍歷(計劃性很是強,我的感受用這種遍歷方式更好一些)


本系列主要講二叉樹,關於圖,推薦閱讀文章有:




轉載本站文章《講透學爛二叉樹(一):圖的概念和定義—各類屬性特徵淺析》,
請註明出處:https://www.zhoulujun.cn/html/theory/algorithm/TreeGraph/8281.html

相關文章
相關標籤/搜索