C++ のランダム検索 (Random Search) アルゴリズム- 説明、例、コード

ランダム検索アルゴリズムは、検索空間から一連の解をランダムに選択し、それらが問題を解決できるかどうかを確認することに基づく検索方法です。 このアプローチは、検索の指針となる特定の情報や戦略がない場合によく使用されます。

使い方

  1. 初期化: ランダムに生成された初期解のセットから開始します。
  2. 評価: 目的関数または評価基準に基づいて、各ソリューションの品質を評価します。
  3. 選択: 確率またはランダムな選択に基づいて、セットから最適なソリューションのサブセットを選択します。
  4. テスト: 選択したソリューションが問題を解決できるかどうかをテストします。
  5. 繰り返し: 満足のいく結果が得られるか、事前に定義された反復回数に達するまで、ステップ 2 ~ 4 を繰り返します。

例: Fibonacci 関数の最適化

Fibonacci F(0) = 0、F(1) = 1 の関数 F(x) = F(x-1) + F(x-2) の最適化問題を考えます 。 F(x) が最大化されます。 ランダム検索方法では、x の値をランダムに選択し、各 x での値を計算し、 得られた最大値 Fibonacci に対応する x の値を選択できます。 Fibonacci

C++ のコード例

#include <iostream>  
#include <cstdlib>  
#include <ctime>  
  
int fibonacci(int n) {  
    if(n <= 0) return 0;  
    if(n == 1) return 1;  
    return fibonacci(n- 1) + fibonacci(n- 2);  
}  
  
int randomSearchFibonacci(int maxIterations) {  
    int bestX = 0;  
    int bestValue = 0;  
  
    srand(time(0));  
  
    for(int i = 0; i < maxIterations; ++i) {  
        int x = rand() % maxIterations;  
        int value = fibonacci(x);  
        if(value > bestValue) {  
            bestValue = value;  
            bestX = x;  
        }  
    }  
  
    return bestX;  
}  
  
int main() {  
    int maxIterations = 20;  
    int result = randomSearchFibonacci(maxIterations);  
  
    std::cout << "Optimal x for maximum Fibonacci value: " << result << std::endl;  
  
    return 0;  
}  

この例では、ランダム検索方法を使用して関数を最適化します Fibonacci。 x の値をランダムに選択し、各 x での値を計算し、 計算した Fibonacci 最大値に対応する x の値を選択します。 Fibonacci