資料結構之圖

憤怒&高小一發表於2020-10-07

Before

圖(Graph)已不同於線性表和樹了。它是一種更為複雜的資料結構。在線性表中,資料元素之間僅有線性關係,每個資料元素只有一個直接前驅和一個直接後繼;在形結構中,資料元素之間有著明顯的層次關係,並且每一層上的結點可能和下一層中多個結點相關,但只能和上一層中一個結點相關;而在形結構中,結點之間的關係可以是任意的,圖中任意兩個資料元素之間都可能有相關的聯絡。

About:圖

在圖中,資料元素通常被稱為頂點(Vertex),同時,我們將圖劃分為有向圖(Digraph)無向圖(Unidigraph)兩大類。在有向圖中,兩頂點的關係我們用箭頭表示,這個箭頭我們稱之為弧(Arc),箭頭尾部連線頂點稱為弧尾(Tail)或初始點(Initial node),箭頭頭部連線頂點稱為弧頭(Head)或終端結點(Terminal node)。 在無向圖中,我們則用一條邊(Edge)替代箭頭的表示。有向和無向的區別即兩頂點之間是單向通道還是雙向通道。

material.1

若我們用n表示一個圖中的頂點數目e表示邊或弧的數目。則在無向圖中e的取值範圍為0到1/2 n(n-1)。當e等於1/2 n(n-1)時,我們稱該無向圖為完全圖。而在有向圖中,其e值的範圍為0到n(n-1),而具有n(n-1)條弧的有向圖,我們稱為有向完全圖。至於稀疏圖或稠密圖即完全指弧或邊的或多或少了,指標為n㏒n。

有時呢,圖的邊或弧會具有與它相關的(大小依實際情況而定),這種與圖的邊或弧相關的數叫做權(Weight)。這種帶權的圖通常稱為網(Network)

有向圖

對於有向圖而言,其弧是有方向性的。描述時,一般是指某個頂點某個頂點。而從頂點指出去弧的數目稱為該頂點的出度(OutDegree)指進來弧的數目稱為該頂點的入度(InDegree)。對於一個頂點而言,它的度(Degree)就等於入度與出度的和。有時呢,我們也稱從一個頂點到另一個頂點的弧集為路徑,若在一個有向圖中,任意兩個頂點都有路徑可達,則我們稱這個有向圖為強連通圖。在有向圖中極大強連通子圖稱做有向圖的強連通分量。(子圖應該是好理解的)

無向圖

而對於無向圖,我們稱一條邊兩端的頂點為領接點(Adjacent),即表示兩頂點相鄰接。也可以說這條邊依附(Incident)於這兩個鄰接點上,或這條邊和兩個個鄰接點相關聯。在無向圖中,一個頂點的度是其相關聯邊的數目之和。同理,若任意兩個頂點都有路徑可達,說明這兩個頂點是連通的,稱這個無向圖為連通圖,而其極大連通子圖則稱之為該圖的連通分量

初始化

由於圖的結構較複雜,其任意兩個頂點之間都可能存在關係,或無。因此無法直接以資料元素所在儲存區的物理位置來表示各元素之間的位置,即圖沒有順序映象的儲存結構,但我們可藉助鄰接矩陣的形式間接將其表示。另一方面,在用多重連結串列表示圖時,因各頂點的度數不相同,所以難以調整指標域的大小。因此應根據具體的圖和需要進行的操作,設計恰當的結點結構和表結構,這裡常用的是鄰接表


傳送門: http://adolesce.cn/archives/21.html

相關文章