1. 程式人生 > >圖論演算法:圖論基礎介紹

圖論演算法:圖論基礎介紹

圖論相關定義

一個(graph) G = (V, E) 由頂點(vertex)的集合 V 和 (edge)的集合E組成,有時也把邊稱作(arc)。如果圖中的邊是帶方向的,那麼圖就是有向圖(directed),否則就是無向圖。如果有一條邊從頂點v到頂點w,則稱頂點v和w鄰接(adjacent)。如果圖中有一條從一個頂點到它自身的邊,那麼圖是帶的,無向圖中的環意義不大(無向圖中很容易出現還),當我們討論圖中的環時,通常是針對有向圖中的環,比如常見的有向無環圖(DAG, Directed Acyclic Graph)。對於圖的邊,有時會賦予其權值(weight),例如用權值表示從從一個城市(頂點v)到另一個城市(頂點w)的距離。

如果一個無向圖中從每一個頂點到其他每個頂點都存在一條路徑,則稱該無向圖是連通的(connected)。具有這樣性質的有向圖稱為是強連通的(strongly connected),如果一個有向圖不是強連通的,但是去掉其邊上的方向後形成的圖是連通的,則稱該有向圖是弱連通的(weakly connected)。完全圖(complete graph)是其每一對頂點間都存在一條邊的圖。

圖的表示

圖的常用表示法有:鄰接表表示法鄰接矩陣表示法
直接上圖:
在這裡插入圖片描述
分別用上述兩種表示法表示上圖如下:
在這裡插入圖片描述

鄰接表在表示稀疏圖(邊的條數|E|遠遠小於V2|V|^2的圖)時非常緊湊而成為通常的選擇,在表示稠密圖

(邊的條數|E|接近於V2|V|^2的圖)時,更傾向於使用鄰接矩陣。另外,對於權重圖,我們可以在鄰接矩陣中表示各個邊的權值,而不僅僅是用0或者1表示兩個頂點之間是否有邊。

以上就是圖論演算法基礎簡單介紹,該系列後面會介紹相關具體圖論演算法。