PHP演算法 《圖》 之 理論基礎

來源:互聯網
上載者:User

標籤:

轉載自:http://www.cnblogs.com/skywang12345/p/3691463.html

Ⅰ 圖的基本概念

1. 圖的定義

定義:圖(graph)是由一些點(vertex)和這些點之間的連線(edge)所組成的;其中,點通常被成為"頂點(vertex)",而點與點之間的連線則被成為"邊或弧"(edege)。通常記為,G=(V,E)。

2. 圖的種類

根據邊是否有方向,將圖可以劃分為:無向圖有向圖

2.1 無向圖

上面的圖G0是無向圖,無向圖的所有的邊都是不區分方向的。G0=(V1,{E1})。其中,

(01) V1={A,B,C,D,E,F}。 V1表示由"A,B,C,D,E,F"幾個頂點組成的集合。 
(02) E1={(A,B),(A,C),(B,C),(B,E),(B,F),(C,F), (C,D),(E,F),(C,E)}。 E1是由邊(A,B),邊(A,C)...等等組成的集合。其中,(A,C)表示由頂點A和頂點C串連成的邊。

2.2 有向圖

上面的圖G2是有向圖。和無向圖不同,有向圖的所有的邊都是有方向的! G2=(V2,{A2})。其中,

(01) V2={A,C,B,F,D,E,G}。 V2表示由"A,B,C,D,E,F,G"幾個頂點組成的集合。 
(02) A2={<A,B>,<B,C>,<B,F>,<B,E>,<C,E>,<E,D>,<D,C>,<E,B>,<F,G>}。 E1是由向量<A,B>,向量<B,C>...等等組成的集合。其中,向量<A,B)表示由"頂點A"指向"頂點C"的有向邊。

3. 鄰接點和度

3.1 鄰接點

一條邊上的兩個頂點叫做鄰接點。 
例如,上面無向圖G0中的頂點A和頂點C就是鄰接點。

在有向圖中,除了鄰接點之外;還有"入邊"和"出邊"的概念。 
頂點的入邊,是指以該頂點為終點的邊。而頂點的出邊,則是指以該頂點為起點的邊。 
例如,上面有向圖G2中的B和E是鄰接點;<B,E>是B的出邊,還是E的入邊。

3.2 度

在無向圖中,某個頂點的度是鄰接到該頂點的邊(或弧)的數目。 
例如,上面無向圖G0中頂點A的度是2。

在有向圖中,度還有"入度"和"出度"之分。 
某個頂點的入度,是指以該頂點為終點的邊的數目。而頂點的出度,則是指以該頂點為起點的邊的數目。 
頂點的度=入度+出度。 
例如,上面有向圖G2中,頂點B的入度是2,出度是3;頂點B的度=2+3=5。

4. 路徑和迴路

路徑:如果頂點(Vm)到頂點(Vn)之間存在一個頂點序列。則表示Vm到Vn是一條路徑。 
路徑長度:路徑中"邊的數量"。 
簡單路徑:若一條路徑上頂點不重複出現,則是簡單路徑。 
迴路:若路徑的第一個頂點和最後一個頂點相同,則是迴路。 
簡單迴路:第一個頂點和最後一個頂點相同,其它各頂點都不重複的迴路則是簡單迴路。

5. 連通圖和連通分量

連通圖:對無向圖而言,任意兩個頂點之間都存在一條無向路徑,則稱該無向圖為連通圖。 對有向圖而言,若圖中任意兩個頂點之間都存在一條有向路徑,則稱該有向圖為強連通圖。

連通分量:非連通圖中的各個連通子圖稱為該圖的連通分量。

6. 權

在學習"哈夫曼樹"的時候,瞭解過"權"的概念。圖中權的概念與此類似。

上面就是一個帶權的圖。

Ⅱ 圖的儲存結構

上面瞭解了"圖的基本概念",下面開始介紹圖的儲存結構。圖的儲存結構,常用的是"鄰接矩陣"和"鄰接表"。

1. 鄰接矩陣

鄰接矩陣是指用矩陣來表示圖。它是採用矩陣來描述圖中頂點之間的關係(及弧或邊的權)。 
假設圖中頂點數為n,則鄰接矩陣定義為:


下面通過來進行解釋。

圖中的G1是無向圖和它對應的鄰接矩陣。

圖中的G2是無向圖和它對應的鄰接矩陣。

通常採用兩個數組來實現鄰接矩陣:一個一維數組用來儲存頂點資訊,一個二維數組來用儲存邊的資訊。 
鄰接矩陣的缺點就是比較耗費空間。

2. 鄰接表

鄰接表是圖的一種鏈式儲存表示方法。它是改進後的"鄰接矩陣",它的缺點是不方便判斷兩個頂點之間是否有邊,但是相對鄰接矩陣來說更省空間。

圖中的G1是無向圖和它對應的鄰接矩陣。

圖中的G2是無向圖和它對應的鄰接矩陣。

PHP演算法 《圖》 之 理論基礎

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.