令和7年度 春期 午前 問2
基礎理論
アルゴリズムに関する問題
0 ≦ x ≦ 1 の範囲で単調に増加する連続関数 f(x) が f(0) < 0 ≦ f(1) を満たすときに,区間内で f(x) = 0 である x の値を近似的に求めるアルゴリズムにおいて,(2) は何回実行されるか。
〔アルゴリズム〕
- (1) x₀ ← 0,x₁ ← 1 とする。
- (2) x ← (x₀+x₁)/2 とする。
- (3) x₁ − x < 0.001 ならば x の値を近似値として終了する。
- (4) f(x) ≧ 0 ならば x₁ ← x として,そうでなければ x₀ ← x とする。
- (5) (2) に戻る。
- ア10
- イ20
- ウ100
- エ1,000
答えと解説を見る
✓ これが正解ア10
解説
区間の幅が0.001未満になるまで半分にする回数を数えます。
このアルゴリズムは、初期区間 [0, 1] の中点を求め、関数の符号でどちらの半分に解があるかを判定して、区間を半分に絞り込む二分法です。手続きの (2) を 1 回実行するたびに (3) の判定に使う区間の幅 x1 − x が半分になり、n 回目までに 1/2ⁿ の値になります。停止条件は x1 − x < 0.001 なので、1/2ⁿ < 0.001 すなわち 2ⁿ > 1000 を満たす最小の n を求めればよく、2¹⁰=1024>1000、2⁹=512<1000 から n=10 と定まります。したがって (2) は 10 回実行されて条件を満たし、そこで終了します。
ほかの選択肢はなぜ違うのか
- イ20:20 を選ぶ肢は、区間が半分になる速さを取り違えている可能性があります。1 回の中点計算で幅は半分に縮むため、幅が 0.001 を下回るには 10 回で十分で、20 回まで繰り返す必要はありません。
- ウ100:100 を選ぶ肢は、区間の幅の縮み方を実際よりずっと遅く見積もっています。実際には反復ごとに 1/2 倍になる指数的な縮み方なので、100 回もかからずに停止条件を満たします。
- エ1,000:1,000 を選ぶ肢は、幅が反復ごとに 1/1000 ずつ減るかのような読み方です。実際は 1/2 ずつ縮む形なので、1,000 回に達するはるか手前で条件が満たされ、停止します。
この問題の用語
- アルゴリズム問題を解くための、決まった手順や考え方そのものです。同じ問題でも手順によって、処理にかかる時間や必要な記憶量が変わります。
出典:令和7年度 春期 応用情報技術者試験 午前 問2
この解説に誤りを見つけたら教えてください。直して、直した記録を残します。誤りを報告する(メールが開きます)