平成29年春期午後問8  誤植?について

午前試験免除制度対応!基本情報技術者試験のeラーニング【独習ゼミ】
わーくまんさん  
(No.1)
https://www.fe-siken.com/kakomon/29_haru/pm08.html

33行目の<は≦が正しいのではないでしょうか?
<だと2<2、4<4、8<8となってpDist[]とpRoute[]の更新作業が行われません
pDistとpRouteの更新作業が行われないのでおかしいと思いました。
2022.03.28 16:31
FE受かりたいマンさん 
(No.2)
結論から言えばどちらも正しく機能します。そして誤植ではありません。

恐らく一週目の処理の話の事だと思います。
まず最初にpDistの要素はすべて∞が挿入されます。
最初から2、8、4の情報が入ってるのは配列Distanceの方です。
なので2<∞、8<∞、4<∞となりpDistとpRouteが更新されます。
その後の処理なのですが既にpRouteには1から3の地点の直前の経路情報が入っており
これより短い経路がない限り更新する必要はありません。

ここからは余談です。興味があれば読んでください。
先ほどどちらも正しく機能すると言いましたが、"<" と "≦"では結果が異なります。
どちらも最短経路を表示するのですが、経路情報次第では最短距離は複数存在します。
例えばこの問題の4-6間の距離が8だったとします。
その場合最短ルートは0-1-4-6と0-1-4-2-5-6の2パターンが最短経路となります。
"<" の場合0-1-4-6となるのですが"≦"の場合は0-1-4-2-5-6のルートを通ります。
何故このような差が生まれるかというとスタート地点からの距離が同じ経路情報の場合
"<" だと最初に計算した経路情報が記録され、"≦" だと後から計算された経路情報が
上書きされていくので一番最後に計算されたルートが最短経路となります。
"≦"の場合、アルゴリズムが若干複雑になりますので"<"の方が直感的でわかりやすいですね。
2022.03.28 18:15
chihiroさん 
FE プラチナマイスター
(No.3)
行番号30~38(イ)の説明に、
>その距離が既に算出してある pDist[j] よりも短ければ,pDist[j] 及び pRoute[j] を更新する。
とあるので、"<"が正しいですね(=はつきません)。最短経路の探索自体は≦でも可能なのですが。
2022.03.28 19:05
わーくまんさん  
(No.4)
ありがとうございます
2022.03.29 10:32

返信投稿用フォーム

スパム防止のためにスレッド作成日から30日経過したスレッドへの書込みはできません。

その他のスレッド


Pagetop