平成20年 秋期 基本情報技術者 午後 問04
問04 最短距離を求めるアルゴリズム次のアルゴリズムの説明を読んで,設問1,2に答えよ。 〔アルゴリズムの説明〕 N 個( N >1)の地点から構成されるグラフにおいて,出発地点からそれ以外の地点までの 最短距離を求めるアルゴリズム ShortestLength である。 (1) 図1に示す地点数 N=6 のグラフを例として,ShortestLength を説明する。 図1において,丸は地点を,矢印の向きは進行方向を,矢印に付けた数字は地点間の距離を表す。
図1 グラフの例(地点数 N=6 ) (2) ShortestLength では,次の配列を用いる。要素番号は 1,2,…,N で, 地点と対応している。配列の添字は1から始まる。
(3) 最短距離を求める手を,図1の例を使って示す。
図2 手順@の結果 A 未処理の地点のうち,地点1からの仮最短距離が最も短い地点2(2は Pe[k]=false かつ Sd[k] が最小となる添字 k の値)を選択し,Pe[2] を true にする。 この時点で,Sd[2]=10 が地点1から地点2の間の最短距離として確定する。 次に,地点2から直接行ける地点3と地点5の仮最短距離 Sd[i] を更新する。 ただし,Sd[i] の値が小さくならない場合は置き換えない。 (更新前) (更新後) Sd[3]=∞ → Sd[3]=Sd[2]+Dt[2][3]=50 Sd[5]=30 → Sd[5]=Sd[2]+Dt[2][5]=20 〔プログラムの一部〕 ・Sd[i] ← min(Sd[i], ) この結果を図3に示す。
図3 手順Aの結果 B 未処理の地点のうち,仮最短距離が最も短い地点は,地点4と地点5の二つである。 このように複数ある場合は,要素番号の小さい地点4を選択し,処理済とする。 この時点で,Sd[4] が地点1から地点4の間の最短距離として確定する。 次に,地点4から直接行ける地点の仮最短距離を更新する。 Sd[4]+Dt[4][5]=40 となり,現在の Sd[5] の値より大きいので,更新しない。 この結果を図4に示す。
図4 手順Bの結果 C 未処理の地点のうち,仮最短距離が最も短い地点5を選択し,処理済とする。 この時点で,Sd[5] が地点1から地点5の間の最短距離として確定する。 次に,地点5から直接行ける地点の仮最短距離を更新する。
Sd[3]=50 → Sd[3]=Sd[5]+Dt[5][3]=30 この結果を図5に示す。
図5 手順Cの結果 D 未処理の地点のうち,仮最短距離が最も短い地点3を選択し,処理済とする。 この時点で,Sd[3] が地点1から地点3の間の最短距離として確定する。 次に,地点3から直接行ける地点6の仮最短距離を更新する。 手順Bと同様に計算し,地点6の仮最短距離 Sd[6] の値は となる。 この結果を図6に示す。
図6 手順Dの結果 E 未処理の地点のうち,仮最短距離が最も短い地点6を選択し,処理済とする。 この時点で,Sd[6] が地点1から地点6の間の最短距離として確定する。 すべての地点が処理済となったので終了となる。この結果を図7に示す。
図7 手順Eの結果
a に関する解答群 ウ Sd[k]+Dt[i][k] エ Sd[k]+Dt[k][i]
設問2 次の記述中の に入れる正しい答えを, 解答群の中から選べ。 図8のグラフの場合,出発地を地点1としてアルゴリズム ShortestLength を実行したとき, 最短距離が確定する順番は,次のとおりになる。 また,配列 Sd の要素 Sd[3],Sd[5] 及び Sd[6] の値は, それぞれ , 及び となる。
図8 グラフ c に関する解答群 イ 地点2,地点4,地点5,地点3 ウ 地点4,地点2,地点3,地点5 エ 地点4,地点2,地点5,地点3
d〜f に関する解答群 オ 70 カ 80 キ 190 ク 100
[←前の問題] [次の問題→] [問題一覧表] [分野別] [基本情報技術者試験TOP ]
©2004-2024 情報処理試験.jp
|
プライバシーポリシー・著作権・リンク
|
お問合わせ
| ||||||