首先是基本的一些概念,上個圖先:
圖的定義
圖(Graph)是由頂點的有窮非空集合和頂點之間邊的集合組成,通常表示爲:G(V,E),其中,G表示一個圖,V(vertex)是圖G中頂點的集合,E(edge)是圖G中邊的集合。
有向邊:若從頂點vi到vj的邊有方向,則稱這條邊爲有向邊。也稱爲弧(Arc)。用有序偶<vi,vj>來表示,vi稱爲弧尾(Tail),vj稱爲弧頭(Head)。
頂點:一個個的數據元素,就像樹中的數據元素叫結點。
頂點的集合:有窮非空集合,我大天朝是這麼強調的
邊的集合:可以爲空
有向圖:如果圖中任意兩個頂點之間的邊都是有向邊,則稱該圖爲有向圖(Directed graphs)。圖7-2-3就是啦
無向邊:若頂點vi到vj之間的邊沒有方向,則稱這條邊爲無向邊(Edge),用無序偶對(vi,vj)來表示。
無向圖:如果圖中任意兩個頂點之間的邊都是無向邊,則稱該圖爲無向圖(Undirected graphs)。圖7-2-2就是啦
簡單圖:在圖中若不存在頂點到其自身的邊,且同一條邊不重複出現,則稱這樣的圖爲簡單圖。
完全有向圖:在有向圖中,任意兩個頂點之間都存在方向互爲相反的兩條弧,則稱該圖爲完全有向圖。含有n個頂點的完全有向圖就有n*(n-1)條邊。
完全無向圖:在無向圖中,如果任意兩個頂點之間都存在邊,則稱該圖爲完全無向圖。含有n個頂點的完全無向圖就有條邊。
有很少條邊或弧的圖稱爲稀疏圖,反之稱爲稠密圖。
權值:與圖的邊或弧相關的數。
網:帶權的圖。
子圖:假設兩個圖G=(V,{E})和G'=(V',{E'}),如果集合V'⊆V,且集合E'⊆E,則稱G'是G的子圖。
圖的頂點與邊間關係
- 對於無向圖G=(V,{E}),如果(v,v')∈ E,則:
- 頂點 v 和 v' 互爲鄰接點,相鄰接。
- 邊(v,v')依附於頂點 v 和 v' ,或者說相關聯
- 頂點v的度(Degree)是和v相關聯的邊的數目,記作:TD(v)
- 而邊數就是各個頂點度數之和的一半:
- 對於有向圖,G=(V,{E}),如果<v,v'>∈ E,則:
- 頂點v鄰接到頂點v',頂點v'鄰接自頂點v。
- 弧與頂點v和v'相關聯。
- 頂點v的入度(InDegree):以頂點v爲頭的弧的數目,記作:ID(v)
- 頂點v的出度(OutDegree):以頂點v爲尾的弧的數目,記作:OD(v)
- 頂點v的度(InDegree):TD(v)=ID(v)+OD(v),:
- 圖G=(V,{E})中從頂點v到v'的路徑(Path)是一個頂點序列(v=vᵢ,₀,vᵢ,₁,vᵢ,ⱼ=v' ),其中(vᵢ₋₁,vᵢ,ⱼ)∈ E,1<=j<=m,路徑長度是路徑上的邊或弧的數目。
- 路徑中第一個頂點到最後一個頂點相同的路徑稱爲環或迴路。
序列頂點中不存在重複出現的路徑稱爲簡單路徑。
除了第一個頂點和最後一個頂點,其餘頂點重複出現的迴路,也稱稱爲簡單迴路,也稱簡單環。
連通圖的相關術語
- 在無向圖G中,如果頂點v和v'是有路徑的,則稱v和v'是連通的,不是移動的,也不是電信的。
- 若對於圖中任意兩個頂點vᵢ、vⱼ∈E,vᵢ和vⱼ都是連通的,則稱G是連通圖(connected graph)
- 無向圖中的極大連通子圖稱爲連通分量。它強調:
- 要是子圖
- 子圖要是連通的
- 連通子圖含有極大頂點數
- 具有極大頂點數的連通子圖包含依附於這些頂點的所有邊
- 相對的在有向圖G中,若對於每一對vᵢ、vⱼ∈E、vᵢ!=vⱼ,從vᵢ到vⱼ,vⱼ到vᵢ都存在路徑,則稱G是強連通圖。
- 有向圖中的極大強連通子圖稱作有向圖的強連通分量。
- 連通圖的生成樹:是一個極小的連通子圖,它包含有圖中全部的n個頂點,但只有足以構成一棵樹的n-1條邊。
若一個圖有n個頂點和小於n-1條邊,則是非連通圖,若它多餘n-1條邊,必定構成一個環;不過有n-1條邊並不一定是生成樹。 - 如果一個有向圖恰有一個頂點的入度爲0,其餘頂點的入度均爲1,則是一顆有向樹。
一個有向圖的生成森林由若干棵有向樹組成,含有圖中全部頂點,但只有足以構成若干棵不相交的有向樹的弧。