B16 アルゴリズム 努力目標 理解する 技術士試験の問題からは必要最小限の引用にとどめる。(問題)が記されている部分はその引用である。 問題および解答は日本技術士会のホームページより必要に応じて入手してください。 技術士第一次試験の問題 問題番号が赤字のものは、ボーナス問題 H28年 1−2−3 H26年 1−2−2 H24年 T−2−5 H16年 T−2−5 プログラムを組んだことのある人には簡単な問題ですが、そうでない人には難しい問題かもしれません。試験時間中にデータを追いかけるにも、時間がとられてしまいそうです。自信がなければパスもありですね。 なお、この問題攻略のポイントは、やはり極端なケースを想定して数字を回してみる、ということでしょうか。簡単なプログラムをExcelの裏で作り走らせてみると理解が進むのですが、時間との相談ですね。 H28年 T−2−3 正答: @ (解答)
H26年 1−2−2 正答: A (解答)
H24年 T−2−5 正答: A (解答) 左のアルゴリズムでわかるように、最初に最小値(min)には1000が、最大値(max)には0が与えられています。初期値として最小値に多いな値、最大値に小さな値を入れておくのは最大値、最小値を求める場合の常とう手段です。 さて、問題で与えられたアルゴリズムはうまく働くでしょうか? 極端な場合を想定してシミュレーションしてみれば、結果がわかります。 いま、最大値と最小値を知りたいデータセットは1000個の実数より構成されています。1000個の整数ではありません。 a1が999、a2が998.9、a3が999.8と規則的に999から0.1ずつ小さくなっていくデータセットを考えます。1000個目のデータは999−0.1×999=899.1となります。このデータセットをa1からa1000まで順番にコンピュータに通すと、最小値は毎回更新されていきますが、最大値判定のループには入れませんので、計算終了時には最大値は初期値である0のままとなります。最小値は反映するが、最大値については保証のないプログラム(アルゴリズム)ということになります。 これを改良しようとすれば、右のようなアルゴリズムに書き直す必要があります。すべてのaiについて、最大値も最小値も判定するループが付いています。 H16年 T−2−5 正答: C (解答)
問題一覧表へ戻る |