組合せとグラフの理論(塩田)第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 人の子を結ぶ道が存在しません。(証明終)

他にも

 非連結なグラフでも幅優先探索・深さ優先探索を行うことができて、 こんな応用もあります:
この3つのアルゴリズムでは探索は幅優先でも深さ優先でも構いませんが、 道の探索では幅優先の方が最短路が見つかって嬉しいです。