跳轉至

建立 2026-11-12 更新 2026-11-12

圖論

圖論(graph theory)用「點」與「連線」描述網路關係,例如城市之間的道路、電腦網路、社群好友關係。IB Math AI HL 的圖論重點是三類最佳化問題:用最小生成樹以最低成本連接所有地點、用中國郵差問題找走遍每條路的最短路線、用旅行推銷員問題找拜訪每個地點的最短路線。本頁是 HL 限定內容(課綱 AHL 3.14~3.16)。

HL 限定單元

本頁全部內容只屬於 HL。圖論題目通常要求依演算法逐步作答,請把每一步寫清楚。

圖的基本名詞

名詞 英文 意義
頂點、邊 vertex, edge 圖的點與連線
度數 degree 連到某頂點的邊數
簡單圖 simple graph 沒有自環、沒有重複邊
完全圖 complete graph 每兩個頂點之間都有邊;\(K_n\) 有 \(\frac{n(n-1)}{2}\) 條邊
加權圖 weighted graph 每條邊有權重(距離、時間、成本)
有向圖 directed graph 邊有方向;分「入度」與「出度」
連通圖 connected graph 任兩頂點之間都有路徑
樹 tree 連通且沒有迴路的圖;\(n\) 個頂點的樹有 \(n - 1\) 條邊

握手定理:所有頂點的度數總和 \(= 2 \times\) 邊數,所以奇數度頂點的個數一定是偶數。

走法、路徑與迴路

  • 走法(walk):沿著邊依序經過頂點,可重複。
  • 路徑(path):不重複頂點的走法;迴路(cycle):回到起點的路徑。
  • Euler 路線:每條邊恰好走一次。所有頂點都是偶數度時,存在回到起點的 Euler 迴路;恰有兩個奇數度頂點時,存在 Euler 路徑(從一個奇點走到另一個)。
  • Hamilton 迴路:每個頂點恰好經過一次並回到起點。

鄰接矩陣

鄰接矩陣(adjacency matrix)\(A\) 的第 \(i\) 列第 \(j\) 行,記錄頂點 \(i\) 到頂點 \(j\) 的邊數。

  • \(A^k\) 的第 \(i\) 列第 \(j\) 行 \(=\) 從 \(i\) 到 \(j\)、長度為 \(k\) 的走法數目。
  • 把鄰接矩陣每一行除以該行總和,得到轉移矩陣,可用來模擬在圖上隨機走動(與 Markov 鏈 相同概念)。

最小生成樹

最小生成樹(minimum spanning tree, MST)是連接所有頂點、總權重最小的樹。適用情境:以最低成本鋪設連接所有建築的電纜。

Kruskal 演算法:

  1. 把所有邊依權重由小到大排序。
  2. 依序選邊,若加入後不會形成迴路就保留,否則跳過。
  3. 選到 \(n - 1\) 條邊時停止。

Prim 演算法:從任一頂點出發,每次加入「連接已選頂點與未選頂點」的最小邊,直到所有頂點都被納入。Prim 可直接在權重表格上操作,適合題目給距離表時使用。

中國郵差問題

中國郵差問題(Chinese postman problem,也叫 route inspection problem):找一條走遍每一條邊、回到起點的最短路線。適用情境:郵差送信、掃街車、道路巡檢。

  1. 找出所有奇數度頂點。
  2. 若沒有奇點:答案就是所有邊的權重總和。
  3. 若有兩個奇點:找它們之間的最短路徑,這段路要重複走。答案 = 總權重 + 該最短路徑長。
  4. 若有四個奇點:列出三種兩兩配對方式,各自計算重複距離,取最小的一種。

旅行推銷員問題

旅行推銷員問題(travelling salesman problem, TSP):找一條拜訪每個頂點恰好一次並回到起點的最短迴路。這個問題沒有快速的精確解法,IB 只要求求出上下界。

  • 上界(upper bound)——最近鄰演算法(nearest neighbour):從起點出發,每次走向最近的未拜訪頂點,最後回到起點。這條迴路的長度是一個上界。
  • 下界(lower bound)——刪點演算法(deleted vertex):刪掉一個頂點,求剩下頂點的最小生成樹權重,再加上被刪頂點最短的兩條邊。

最佳解 \(L\) 滿足:下界 \(\le L \le\) 上界。若上下界相等,就找到了最佳解。

推薦影音

圖論完整講解

簡述:Revision Village 介紹圖論名詞、鄰接矩陣、最小生成樹、中國郵差與旅行推銷員問題,涵蓋本頁全部主題。

中國郵差問題考題解析

簡述:Maths with Lemon 用一道 IB 考題示範找奇點、配對與計算重複路線,對應本頁「中國郵差問題」。

練習題

練習 1~3 使用以下加權圖 \(G\)(權重單位為 km):

邊 AB AC BC BD CD CE DE
權重 4 3 2 5 7 6 3

練習 1

(a) 寫出 \(G\) 每個頂點的度數,並驗證握手定理。 (b) 寫出 \(G\) 的鄰接矩陣(不計權重),並求從 A 到 D、長度為 2 的走法數目。

參考解答

(a) A:2、B:3、C:4、D:3、E:2。總和 \(= 14 = 2 \times 7\) 條邊 ✓。

(b) 依 A、B、C、D、E 順序:

\[ M = \begin{pmatrix} 0 & 1 & 1 & 0 & 0 \\ 1 & 0 & 1 & 1 & 0 \\ 1 & 1 & 0 & 1 & 1 \\ 0 & 1 & 1 & 0 & 1 \\ 0 & 0 & 1 & 1 & 0 \end{pmatrix} \]

\(M^2\) 的 (A, D) 元素 \(=\) A 列與 D 行相乘 \(= 0 + 1 + 1 + 0 + 0 = 2\),即 A→B→D 與 A→C→D 兩種。

練習 2

用 Kruskal 演算法求 \(G\) 的最小生成樹與總權重。

參考解答

依權重排序:BC 2、AC 3、DE 3、AB 4、BD 5、CE 6、CD 7。

  1. BC(2)✓
  2. AC(3)✓
  3. DE(3)✓
  4. AB(4)✗:A、B、C 會形成迴路
  5. BD(5)✓:連接兩群,此時已有 4 條邊

最小生成樹 = {BC, AC, DE, BD},總權重 \(= 2 + 3 + 3 + 5 = 13\) km。

練習 3

一位巡檢員要從 A 出發,走遍 \(G\) 的每一條路再回到 A。求最短總距離,並說明哪一段要重複走。

參考解答

奇數度頂點:B、D。B 到 D 的最短路徑是直接走 BD \(= 5\)(B→C→D \(= 9\) 較長)。

最短總距離 \(=\) 所有邊總和 \(30 + 5 = 35\) km,BD 這條路要走兩次。

練習 4

五個城市之間的距離(km)如下表:

P Q R S T
P – 8 5 9 7
Q 8 – 6 4 10
R 5 6 – 7 8
S 9 4 7 – 5
T 7 10 8 5 –

(a) 從 P 出發,用最近鄰演算法求旅行推銷員問題的上界。 (b) 刪除 P,用刪點演算法求下界。 (c) 你能對最佳路線下什麼結論?

參考解答

(a) P→R(5)→Q(6)→S(4)→T(5)→P(7),上界 \(= 27\) km。

(b) 剩下 Q、R、S、T 的最小生成樹:QS 4、ST 5、QR 6,權重 \(15\)。P 最短的兩條邊:PR 5、PT 7。下界 \(= 15 + 5 + 7 = 27\) km。

(c) 下界 \(=\) 上界 \(= 27\),所以 P→R→Q→S→T→P 就是最佳路線,最短距離 \(27\) km。