問2 2 分法の繰返し回数

応用情報​技術者試験 令和7年度 春期 午前、全80問のうちの問2。

出典:令和7年度 春期 応用情報技術者試験 午前 問2(分数は「/」を使って 1 行で書いた。添字は x₀,x₁ のように小さい数字で書いた)

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.0⁠0⁠1 ならば x の値を近似値として終了する。

(4) f(x) ≧ 0 ならば x₁ ← x として,そうでなければ x₀ ← x とする。

(5) (2) に戻る。

  1. ア1⁠0
  2. イ2⁠0
  3. ウ1⁠0⁠0
  4. エ1,0⁠0⁠0
答えと解説を開く

正解はアです。

このアルゴリズムは、区間の真ん中 x を求め、f(x) の符号で答えのある側の半分を残す 2 分法です。最初の区間の幅 x₁ − x₀ は 1 です。(2) の 1 回目では x = 0.5 で、x₁ − x = 0.5 です。(4) で区間が半分になるので、2 回目は 0.2⁠5、3 回目は 0.1⁠2⁠5 と、(2) を k 回目に実行したときの x₁ − x は 1/2ᵏ になります。(3) で終わるのは 1/2ᵏ < 0.0⁠0⁠1、つまり 2ᵏ > 1,0⁠0⁠0 のときです。2⁹ = 5⁠1⁠2 では足りず、2¹⁰ = 1,0⁠2⁠4 で初めて超えます。だから (2) は 1⁠0 回実行されます。正解はアです。

ほかの選択肢が違う理由

  • イ2⁠0 回なら幅は 1/2²⁰ でおよそ 1⁠0⁠0 万分の 1 です。0.0⁠0⁠1 を下回るのはもっと早く、1⁠0 回目です。
  • ウ幅が 1 回で 0.0⁠1 ずつ減ると考えると 1⁠0⁠0 回になりますが、2 分法では幅が毎回半分になるので、ずっと早く終わります。
  • エ0 から 1 を 0.0⁠0⁠1 刻みで端から順に調べる場合の回数です。2 分法は毎回半分に絞るので、1⁠0 回で済みます。

仕組み

2 分法は、符号が変わる区間を半分ずつ狭めて、f(x) = 0 の点を追い詰める方法です。並んだデータから値を探す 2 分探索と同じ考え方です。

1 回ごとに幅が半分になるので、必要な回数は精度の対数で増えます。精度を 1⁠0 倍細かくしても、増える回数は 3〜4 回だけです。

この問に出る言葉