組合せとグラフの理論(塩田)第6回 (5) 幅優先探索・深さ優先探索の応用
幅優先探索・深さ優先探索を応用したいろんなグラフアルゴリズムを紹介します。
最短路
Th.19 幅優先探索木は、根から他の頂点への最短路を与える。
Ex.14 の幅優先探索木は
でした。根 $0$ から $1$, $2$ へは距離 $1$, $3$, $4$, $5$ へは距離 $2$ であることを表しています。
※ 辺の長さは1、と考えての話です。
辺ごとに「長さ」を設定しているグラフの最短路問題は後日やります。
カット点判定
Def.20 深さ優先探索木においては親子関係が考えられ、根に近い方の頂点を祖先、根から遠い方の頂点を子孫と定める。
Ex.18 の深さ優先探索木は
でした。根 $0$ の子は $1$、$1$ の子は $2$、$2$ の子は $3$ と $5$、$3$ の子は $4$ と考えます。
Th.21 深さ優先探索木に使われなかった辺は、必ず祖先と子孫をつなぐ。
証明 子孫同士が結ばれていれば祖先にバックトラックしていないはずなので。(証明終)
Th.22 連結グラフ $G$ の頂点 $v$ を根とする深さ優先探索木を $T$ とするとき、
$v$ が $G$ のカット点であること $\Leftrightarrow$ $T$ において $v$ の子が 2 人以上いること
証明 Th.21 より $v$ の子孫同士を結ぶ辺は存在せず、
$G-v$ においては $v$ の 2 人の子を結ぶ道が存在しません。(証明終)
他にも
非連結なグラフでも幅優先探索・深さ優先探索を行うことができて、
こんな応用もあります:
-
道の探索
$u$ を根とする探索で $v$ が探索できれば探索木の中に $u-v$ 道があり、そうでなければ $u-v$ 道は存在しません。
-
橋の判定
$e=uv$ を除去したグラフ $G-e$ で $u$ を根とする探索を実行し、
$v$ が探索できれば $e$ は橋でなく、そうでなければ $e$ は橋です。(
L'a 6 )
-
連結成分への分解
$u$ を根とする探索木に属する頂点たちと、それらを結ぶ辺たちが作る部分グラフが、$u$ の属する連結成分です。
未探索点から探索を始めれば次の連結成分がわかります。
この3つのアルゴリズムでは探索は幅優先でも深さ優先でも構いませんが、
道の探索では幅優先の方が最短路が見つかって嬉しいです。