アルゴリズムとプログラミング

基本情報技術者試験 科目A免除 修了試験 20200726 実施分 問4

0≦x≦1 の範囲で単調に増加する連続関数 f(x) が f(0)<0≦f(1) を満たすときに,区間内で f(x)=0 である x の値を近似的に求めるアルゴリズムにおいて,(2) は何回実行されるか。
〔アルゴリズム〕 (1) x_0←0,x_1←1 とする。 (2) x←(x_0+x_1)/2 とする。 (3) x_1−x<0.001 ならば x の値を近似値として終了する。 (4) f(x)≧0 ならば x_1←x として,そうでなければ x_0←x とする。 (5) (2) に戻る。
  • ア 10
  • イ 20
  • ウ 100
  • エ 1,000

出典:基本情報技術者試験 科目A免除 修了試験 20200726 実施分 問4

答えと解説を見る

正解:ア

覚える知識

2分探索法の計算量(log2 n)

区間を毎回半分にする探索の繰返し回数はlog2(区間幅/精度)程度である。

この問題で必要なこと

(2)を実行するたびに区間が半分になり、(3)で終了するのは1/2^k<0.001となるときで、2^10=1024より k=10回。

ひっかけ

20や100は半減ではなく別の増減を想定させる。

この知識の出題:本試験系 3 回・免除試験 13 回(公開問題での観測値)

この知識をアプリで解いて覚える レッスン「探索アルゴリズムと計算量」で学ぶ

同じ知識の過去問