令和3年度 III-4

科目: 専門科目 / 分野: 情報工学部門 / 年度: 令和3年度

III-4 問題画像

出典:公益社団法人 日本技術士会「技術士第一次試験 過去問題」

非負の移動コストをもつ有向グラフで、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、最短経路問題、グラフ、有向グラフ、最短経路の確定順、アルゴリズム、情報工学部門