算法與數據結構(c語言)——圖(Figure,一)

首先是基本的一些概念,上個圖先:

圖的定義 

圖(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個頂點的完全無向圖就有\frac{n*(n-1)}{2}條邊。

有很少條邊或弧的圖稱爲稀疏圖,反之稱爲稠密圖。

權值:與圖的邊或弧相關的數。

:帶權的圖。

子圖:假設兩個圖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) 
    • 而邊數就是各個頂點度數之和的一半:e=\frac{1}{2}\sum_{i=1}^{n}TD(v_i)
  • 對於有向圖,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),:e=\sum_{i=1}^{n}{ID(v_i)}=\sum_{i=1}^{n}{OD(v_i)}
  • 圖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,則是一顆有向樹。
    一個有向圖的生成森林由若干棵有向樹組成,含有圖中全部頂點,但只有足以構成若干棵不相交的有向樹的弧。 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章