
出典:公益社団法人 日本技術士会「技術士第一次試験 過去問題」
非負の移動コストをもつ有向グラフで、Dijkstraのアルゴリズムを用いて始点ノードSから各ノードへの最短経路が確定していく順序を求める問題。
Dijkstra法を実際に手順どおり実行し、最短距離が確定する順序を求める問題。
① Dijkstra法: 未確定のノードのうち距離が最小のものを確定し、そこから隣の距離を更新する
② S(0)→B(5)確定: A=8、C=14、D=7に更新 → D(7)確定: C=13 → A(8)確定: C=9 → C(9)確定
③ S B D A C(④)
Dijkstra法は、未確定ノードのうち始点からの暫定距離が最小のものを順に確定し、その隣接ノードの暫定距離を更新する。初期状態でSは0。S→A=10、S→B=5なので、最小のBが確定(5)。Bから、A=5+3=8(更新)、C=5+9=14、D=5+2=7。次に最小のD(7)が確定。DからC=7+6=13に更新。次にA(8)が確定し、AからC=8+1=9に更新。最後にC(9)が確定する。確定順はS、B、D、A、Cとなり、④が正しい。
Dijkstra法は、暫定距離が最小の未確定ノードを1つずつ確定し、隣接ノードの距離を緩和(更新)する。確定順は、始点からの最短距離の昇順になる。
キーワード: Dijkstra、最短経路問題、グラフ、有向グラフ、最短経路の確定順、アルゴリズム、情報工学部門