タグ

三分探索に関するnyamappのブックマーク (3)

  • 実数探索三種類解説 - nodchipの日記

    自分がよく使う実数上の探索アルゴリズム「三分探索」「黄金分割探索」「二分探索」のメモです。 三分探索 三分探索は凸関数の極値を求めるために使うアルゴリズムです。このアルゴリズムは関数が微分不可能な場合にも使えます。やり方は探索領域を三分割し、真ん中二の境界のうちどちらの値が大きいかを調べ、それとは逆の方の境界を新たな探索領域の端にするというものです。一回のイテレーションで関数の計算を2回行い、探索領域が2/3になります。 double search(double left, double right) { for (int loop = 0; loop < maxLoop; ++loop){ if (f((left * 2 + right) / 3) > f((left + right * 2) / 3)){ right = (left + right * 2) / 3; } else

    実数探索三種類解説 - nodchipの日記
  • 3分探索 - ICPC突破専用ザク

    凸関数の極値を求める方法を知りたくなってググってみたところid:nodchipさんのエントリがヒットした. 以下,個人的なまとめ. 実数探索三種類解説 - nodchipの日記 http://d.hatena.ne.jp/nodchip/20090303/1236058357 単調関数の零点を求めるのには2分探索が使われるけど,凸関数の極値を求めるのには3分探索が使われるらしい. 三分探索は凸関数の極値を求めるために使うアルゴリズムです。このアルゴリズムは関数が微分不可能な場合にも使えます。やり方は探索領域を三分割し、真ん中二の境界のうちどちらの値が大きいかを調べ、それとは逆の方の境界を新たな探索領域の端にするというものです。一回のイテレーションで関数の計算を2回行い、探索領域が2/3になります。 3分探索がうまくいく理由は以下のとおり. f : [a,b]→R : 上に凸な関数とし,区

    3分探索 - ICPC突破専用ザク
  • 1