graph property
先看個圖片
圖片中省略了點的編號。
degree
一個點的「度」:一個點的邊數量。
有向圖,細分成入邊數量in-degree、出邊數量out-degree。
neighbor
一個點的「鄰居」:一個點連往的點。可能有許多個、零個。
無向圖,鄰居數量是邊數量。有向圖,鄰居數量是出邊數量。
順便補充幾個常見形容詞。
adjacent:相鄰、鄰接。只走一步,可以抵達。 connected:相連、連通。不限步數,可以抵達。
distance
兩個點的「距離」:從起點走到終點的邊數量,數量必須最低。
如果兩點之間不連通,距離是無限大。約定成俗。
指定起點,實施breadth-first search,就可以算出起點走到圖上各點的距離。利用這種方式,可以算出兩點之間的距離。大家可以試試看!
額外補充一下。當數量必須最低,改成了數量必須最高,則無法透過遍歷演算法求得答案,只能透過backtracking窮舉所有路線,一一判斷答案。數量必須最高,已被證明是NP-complete問題,目前沒有(以後大概也不會有)快速的演算法。
順便補充幾個罕見名詞。
eccentricity:偏心距。從一個點出發的最長距離。 diameter:直徑。一張圖(的每個起點之中)最長的偏心距。一張圖最長的距離。 radius:半徑。一張圖(的每個起點之中)最短的偏心距。
graph operation
intersection graph
圖用來表達兩兩之間的關係。例如一群人,我們可以建立「朋友關係」的圖,兩個人是朋友就連一條邊,兩個人不是朋友就沒有邊。只要是兩兩之間的關係,就得以轉化成圖,運用圖論知識來分析問題。
其中有個值得一提的關係是「交集關係」,是聯集交集的那個交集。兩個東西有交集就連一條邊(交集不是空集合)、沒交集就沒有邊(交集是空集合),最後得到的圖叫做「交集圖」。
例如一堆線段,把互相接觸的線段,表示成圖:
例如一堆集合,把有交集的集合,表示成圖:
比較特別的交集圖,數學家會特地取名。例如一堆硬幣,平鋪在桌上,把互相接觸的硬幣,表示成圖,稱作coin graph。數學家發現硬幣圖和平面圖兩者完全等價,每一種平面圖都可以利用硬幣接觸兜出來。
例如行程表,把撞期的行程,表示成圖,稱作interval graph,有著很特別的數學性質。
例如一張圖論的圖,把共用端點的邊,表示成圖,稱作line graph。
為什麼數學家特別重視交集圖呢?我也不知道。
很多人把交集圖看做是一個物品。但是交集圖其實是一種變換的概念,可以看做是一個函數。
dependency graph【尚無正式名稱】
除了「交集關係」之外,數學家也很重視「依賴關係」。把各個東西的仰賴對象表示成圖,最後得到的圖叫做「依賴圖」。
例如一堆不等式,把變數大小關係,表示成圖:
比較特別的依賴圖,數學家會特地取名。例如專案管理領域,把工作先後次序,表示成圖,稱作「activity network」。
例如2-SAT問題,把各個clause裡面的兩個變數的取捨關係,表示成圖,稱作「implication graph」。
交集圖是無向圖、依賴圖是有向圖,剛好一對。
UVa 10926
subgraph / supergraph
一張圖,刪除一些點、一些邊,得到的圖稱作「子圖」。
原圖(沒有刪除)、空圖(完全刪除),也算是「子圖」。
一張圖,增加一些點、一些邊,得到的圖稱作「父圖」。
原圖(沒有增加)也算是「父圖」。
subgraph和supergraph是相對的。如果A是B的子圖,那麼B就是A的父圖。我們習慣只講子圖,講一個就等於兩個都講了。
induced subgraph / induced supergraph
一張圖,保留一些點、以及這些點之間的所有邊,得到的圖稱作「導出子圖」。
一張圖,增加一些點、一些邊,但是不在原本的點之間增加邊,使得原本的圖是導出子圖,得到的圖稱作「導出父圖」。
induced subgraph和induced supergraph是相對的。如果A是B的導出子圖,那麼B就是A的導出父圖。我們習慣只講導出子圖,講一個就等於兩個都講了。
minor / subdivision
一張圖,收縮一些邊、合併一些點,得到的圖稱作minor。
收縮的邊,有人視情況刪除,也有人視情況不刪除、而變成連向自己的邊。
一張圖,在邊上植入點,得到的圖稱作subdivision。
minor和subdivision是相對的。一般只討論minor。
oriented graph / underlying graph
一張無向圖,無向邊改成有向邊,稱作「定向圖」。
一張有向圖,有向邊改成無向邊,稱作「底圖」。
定向圖和底圖是相對的。一般只討論定向圖。
complement graph(complement)
一張圖,兩點之間沒邊變有邊、有邊變沒邊,稱作「補圖」。
原圖暨補圖的所有邊,合起來是完全圖。
朋友變仇人、有關變無關,整個相反顛倒,就是補圖的用處。
reverse graph(transpose)
一張有向圖,邊的方向顛倒,稱作「反向圖」。
主動變被動、前進變後退,整個相反顛倒,就是反向圖的用處。
line graph
一張圖當中,觀察邊與邊關係,相鄰的邊表示成一張圖,稱作「線圖」。
UVa 10988 11175
dual graph
一張平面圖當中,觀察面與面關係,共邊的面表示成一張圖,稱作「對偶圖」。詳情請參考「planar graph」。
hypergraph
hypergraph
「圖」是談兩個東西之間的關係,「超圖」則是談多個東西之間的關係,例如三個東西之間的關係。
超圖的資料結構,不適合採用adjacency matrix,因為矩陣必須變成多個維度,浪費記憶體空間。比較好的方式是採用incidence matrix。
一般的圖就很夠用了,通常不會用到超圖。
graph theory
graph theory
本站僅介紹最基礎的圖論知識。讀者如果覺得不過癮,可以自行研究下述這些進階的圖論領域。
geometric graph theory
引入距離的概念。
topological graph theory
著重於點與邊。發掘特殊的圖,建立從屬關係。
minor containment problem 問一張圖是不是有某個minor。至少是NP-complete。 https://en.wikipedia.org/wiki/Graph_minor https://en.wikipedia.org/wiki/Robertson–Seymour_theorem https://en.wikipedia.org/wiki/Graph_structure_theorem https://en.wikipedia.org/wiki/Graph_sandwich_problem
extremal graph theory
著重屬性計量。
structural graph theory
研究圖的各種架構方式、描述方式。
本站僅提到兩種方式:用點和邊架構出圖、用交集架構出圖。
algebraic graph theory與spectral graph theory
以代數描述一張圖、分析一張圖。