圖
圖
圖是用來表示「事物以及它們之間的連接」的資料結構。事物稱為頂點(或節點),連接稱為邊。幾乎一切帶有關係的東西都能套進這個圖景:以道路相連的城市、互為好友的人、彼此連結的網頁、互相依賴的任務。每當你不自覺地畫一些點、再用線把它們連起來時,你畫的就是一張圖。
圖有不同的種類。在無向圖中,A 與 B 之間的邊是雙向的(好友關係:A 認識 B,則 B 也認識 A)。在有向圖中,每條邊都有方向,是從一個頂點指向另一個頂點的箭頭(單行道,或社群媒體上的「A 追蹤 B」)。邊還可以帶權,攜帶一個數值,例如距離、成本或容量;無權圖則只記錄連接是否存在。設有 V 個頂點、E 條邊,這兩個量決定了幾乎所有圖演算法的開銷。
圖比樹更一般:樹不過是沒有環的連通圖。圖可以有環、可以分成互不相連的數塊、同一對頂點之間也可以有多條路徑——這正是圖能很好地刻畫紛繁現實的原因,也正因如此,走訪時必須小心(以免永遠重複造訪同一個頂點)。
// 0 --- 1
// | /
// | /
// 2 -+
// vertices: {0, 1, 2}
// edges: {0-1, 0-2, 1-2}點是頂點,線是邊。同樣的形狀可以用多種方式儲存。
這裡頂點和節點是一回事;邊、連線、弧也常常混用。「有向圖」常簡稱為 digraph。
又稱
另見