題組內容

二、給定一個無向圖 G = (V, E) ,每個頂點代表一個地點,每條邊 e (e ∈ E) 代 表一條道路,邊的正整數權重 ω (e) 表示該道路的塞車程度,數值越大越 壅塞。對於一條從起點 s 到終點 t ( s, t ∈ V) 的路徑 P,其最大塞車程度 C(P) 定義為路徑上所有邊權重的最大值:

\[C(P) = \max_{e \in P} \omega(e)\]

本題透過修改 Dijkstra 最短路徑演算法中陣列 d 的定義與更新方式,求出 從 s 到 t 可行路徑所能達到的「最大塞車程度的最小值」 。修改後的演算法 流程與 Dijkstra 最短路徑演算法相同,差異僅在於 d [v](v ∈ V) 的定義與更新 規則,其中,新的 d [v] 表示目前已知從 s 到 v 的路徑中,最大邊權重的最小值。初始時令 d [ s ] = 0 ,其他頂點 v 的 d [v] = ∞(v ≠ s ) 。之後依照 Dijkstra 演算法,每一輪選出尚未被選定且 d 值最小的頂點 u,並將原本的更新方 式 d [v] = min(d [v], d [u ] + ω (u, v)) 改為 d [v] = min(d [v], max(d [u ], ω (u, v))) , 其中ω (u, v) 為邊 (u, v) (u, v ∈ V) 的權重。重複進行,直到終點 t 被選定為止。

(二)說明修改後演算法之正確性,是基於 d [v] 更新規則具有何種性質。 (5 分)