天天看點

資料結構(七):圖

資料結構(七):圖

定義

圖是由若幹給定的頂點及連接配接兩頂點的邊所構成的圖形,這種圖形通常用來描述某些事物之間的某種特定關系。頂點用于代表事物,連接配接兩頂點的邊則用于表示兩個事物間具有這種關系。

定義來自維基百科: 圖論

結構

圖中隻包含兩種類型的元素:頂點(vertex)和邊(edge),是以圖可以由頂點集合和邊集合進行表示,即:

資料結構(七):圖

。根據邊是否具有方向,可以将圖分為有向圖和無向圖兩種。

無向圖

資料結構(七):圖

graph

有向圖

資料結構(七):圖

digraph

上面兩張圖 graph 和 digraph 具有相同的頂點集合

資料結構(七):圖

,但是邊集合

資料結構(七):圖

不同,是以屬于不同的兩個圖。

權重

上述圖定義中提到,邊的作用是用來描述兩個頂點之間的關系,圖 graph 和 digraph 兩個示例中的邊僅能表示兩個頂點之間是連通的,可達的,并不能代表别的意義。可以給邊設定大小值,即權重,表示兩個頂點之間連通的程度。例如當圖中頂點表示城市的坐标時,則可以設定連接配接兩個頂點的邊的權重為距離,或某種交通方式消耗的時間。

資料結構(七):圖

從一個頂點出發,到相鄰頂點的邊的個數稱為該頂點的出度,以該頂點為終點的邊的個數稱為該頂點的入度。因為無向圖的邊不具有方向性,是以無向圖中頂點的出度與入度相等。

路徑與回路

從頂點集合

資料結構(七):圖

中選擇

資料結構(七):圖

作為起點,

資料結構(七):圖

作為終點,從起點出發到達終點的過程中,經過的邊的集合稱為路徑,路徑中邊的個數稱為路徑長度。若路徑中不重複經過一個頂點,則稱為簡單路徑。若起點和終點是同一個頂點,則該路徑也稱之為回路。

連通圖、連通分量與生成樹

對于無向圖,若圖中任意兩個頂點之間存在路徑,則該無向圖為連通圖;對于有向圖,若圖中任意兩個頂點之間存在路徑,則該有向圖為強連通圖。

對于無向圖,其極大連通子圖稱為該無向圖的連通分量;對于有向圖,其極大強連通子圖稱為該無向圖的強連通分量。

根據連通分量定義可知,對于連通圖,極大連通子圖是其自身,是以圖的連通分量就是其自身。對于非連通圖,因為可以存在多個極大連通子圖,是以可以具有多個連通分量。

連通圖的極小連通子圖也稱之為生成樹,即包含頂點集合

資料結構(七):圖

,但是邊的個數為

資料結構(七):圖

。生成樹可以有多個,經常提到的最小生成樹,也就是帶權連通圖中權值之和最小的生成樹。

圖相關的概念較多,再次強調一點,就像在介紹二叉樹時所說,概念隻是起到輔助說明的角色,為了友善了解和傳播事物而誕生的産物,不應該過分糾結概念而忽略了真正的目的。

github

連結:

繼續閱讀