応用情報技術者 2014年 秋期 午前2 問05
問題文
グラフに示される頂点からの各点への最短所要時間を求め、短い順に並べたものはどれか。ここで、グラフ中の数値は各区間の所要時間を表すものとし最短所要時間が同一の場合には添字の小さい順に並べるものとする。

選択肢
ア:
イ:(正解)
ウ:
エ:
🔒 解説は解答すると表示されます
単一始点の最短経路【午前2解説】
正解の理由
出発点 から各頂点への最短所要時間をダイクストラ法で求めると、 となり、短い順に並べると です。したがって選択肢は イ が正しいです。
具体的には、最短路の一例として
具体的には、最短路の一例として
- : ()
- : ()
- : ()
となります。これらが他の経路より短いため、イ が妥当です。
解法ステップ
- 初期化:、他は無限大とする。
- 未確定頂点の中で最小距離の頂点を選び確定する(ダイクストラの主手順)。
- その頂点から伸びる辺で隣接頂点の距離を緩和(改善)する。
- 全頂点が確定されるまで2-3を繰り返す。
具体的な更新過程(要点のみ):
- 初期: 、、、他は∞
- (1) を確定 → が に更新、 は 、 は
- (2) を確定 → が に更新、 は (変わらず)
- (3) を確定 → が 、 が
- 残りを確定して終了 結果:。
(同一距離の並べ方は問題の規定通り添字の小さい順だが、本問では全て異なるため影響なし)
選択肢別の誤答解説
- ア:
誤り。 の最短所要時間は で の より短く、 と の順序が逆になっている。 - イ:
正解。上記のダイクストラ手順で得られる距離に一致する。 - ウ:
誤り。 を最短とする根拠がない( がより短い)。 である。 - エ:
誤り。 を最後に置いているが、 が最短()であるため完全に逆順である。
よくある誤解
- 直接辺の重みだけで比較してしまう:例えば の重み を見て 経由を過小評価する誤り。中継を使うと合計が小さくなる場合がある(本問では が )。
- 経路の全パターンを検討しない:近接する選択肢(例: と )を比較せずに短絡的に決めてしまうミス。
- 同一距離の並べ替えルールを忘れる:等しい場合は添字の小さい順に並べるという条件を見落とすと誤答になる。
補足コラム
ダイクストラ法は非負の辺重みに対して単一始点最短路を効率的に求めるアルゴリズムです。本問のように小さなグラフでは手作業で各ステップを追えば確実に答えが出ます。大規模グラフでは優先度付きキューを用いると時間計算量が改善されます( 程度)。
簡単な検算用の Python による実装例(確認用):
import heapq
edges = {
'V1': [('V2',4),('V3',1)],
'V2': [('V1',4),('V3',1),('V4',1),('V5',4)],
'V3': [('V1',1),('V2',1),('V4',4),('V5',5)],
'V4': [('V2',1),('V3',4),('V5',2),('V6',1)],
'V5': [('V3',5),('V2',4),('V4',2),('V6',2)],
'V6': [('V4',1),('V5',2)],
}
def dijkstra(start):
d = {v: float('inf') for v in edges}
d[start] = 0
pq = [(0, start)]
while pq:
dist, v = heapq.heappop(pq)
if dist > d[v]: continue
for w, cost in edges[v]:
nd = dist + cost
if nd < d[w]:
d[w] = nd
heapq.heappush(pq, (nd, w))
return d
print(dijkstra('V1')) # 確認: V4=3, V6=4, V5=5
FAQ
Q. なぜ が になるのですか?
A. が 、 が 、 が で合計 となり、他の経路(直接 は 、 は )より短いためです。
A. が 、 が 、 が で合計 となり、他の経路(直接 は 、 は )より短いためです。
Q. 負の重みがあったらどうする?
A. ダイクストラ法は非負辺重みが前提です。負の重みがある場合はベルマン・フォード法など負辺を扱えるアルゴリズムを使います。
A. ダイクストラ法は非負辺重みが前提です。負の重みがある場合はベルマン・フォード法など負辺を扱えるアルゴリズムを使います。
Q. 同一距離があったら並べ替えはどうする?
A. 問題文の規定に従い、最短所要時間が同一の場合は添字(番号)の小さい順に並べます。本問では該当しません。
A. 問題文の規定に従い、最短所要時間が同一の場合は添字(番号)の小さい順に並べます。本問では該当しません。
関連キーワード: 最短経路、ダイクストラ法、グラフ理論、経路探索、辺重み、緩和操作

\ せっかくなら /
応用情報技術者を
クイズ形式で学習しませんか?
クイズ画面へ遷移する→
すぐに利用可能!

