近似検索について
近似検索は、厳密な単調性制約なしで二分探索の効率を模倣します。実数 (倍精度) など、指定された領域内の値またはパラメーターの近似が可能になります。
アルゴリズムの説明:
関数 y=f(x を指定すると、 ) と目的の y 値 (y0) を使用すると、アルゴリズムは f(x0) が近づくように範囲 [a0, a1] 内で x0 を見つけようとします。 y0。定義されたステップ サイズ (da) でこの範囲内の点 x(i) を繰り返し評価し、誤差 |f(x(i)) - y0| を最小化する点 aa を選択します。
再帰的精度の向上:
精度を高めるために、アルゴリズムは aa の周囲の検索範囲を再帰的に絞り込み、da を減らします。 0.1 倍です。このプロセスは、必要な精度または再帰の最大数に達するまで継続されます。
実装:
「about」と呼ばれる C クラスがこのアルゴリズムを実装します。検索パラメーター (a0、a1、da、n、e) を使用した初期化が可能です。n は再帰の回数を指定し、e はエラー変数へのポインターです。 「step()」メソッドは、点 x(i) を反復処理し、最適解 aa を更新し、再帰的絞り込みのための検索パラメーターを調整します。
使用例:
approx aa; double ee, x, y, x0, y0; // Input parameters and solution for (aa.init(0.0, 10.0, 0.1, 6, &ee); !aa.done; aa.step()) { x = aa.a; y = f(x); // Evaluate the function ee = fabs(y - y0); // Calculate the error }
注:
この近似は入れ子にすることができます多次元アプリケーション向け。ただし、効率を最適化するには、検索間隔を慎重に定義し、適切なステップ サイズを選択することが重要です。
以上が近似検索で単調性を持たずに近似解を効率的に見つけるにはどうすればよいでしょうか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。