خوارزمية البحث العشوائي (Random Search) في C ++- شرح ومثال ورمز

خوارزمية البحث العشوائي هي طريقة بحث تعتمد على اختيار عشوائي لمجموعة من الحلول من مساحة البحث والتحقق مما إذا كان بإمكانها حل المشكلة. غالبًا ما يستخدم هذا النهج في حالة عدم وجود معلومات أو استراتيجية محددة لتوجيه البحث.

كيف تعمل

  1. التهيئة: ابدأ بمجموعة عشوائية من الحلول الأولية.
  2. التقييم: قم بتقييم جودة كل حل بناءً على الوظيفة الموضوعية أو معايير التقييم.
  3. الاختيار: حدد مجموعة فرعية من أفضل الحلول من المجموعة بناءً على الاحتمالات أو الاختيار العشوائي.
  4. الاختبار: اختبر ما إذا كانت الحلول المختارة قادرة على حل المشكلة.
  5. التكرار: كرر الخطوات من 2 إلى 4 حتى يتم تحقيق نتيجة مرضية أو الوصول إلى عدد محدد مسبقًا من التكرارات.

مثال: تحسين Fibonacci الوظيفة

ضع في اعتبارك مشكلة التحسين للدالة Fibonacci F(x) = F(x-1) + F(x-2) مع F(0) = 0 ، F(1) = 1. نريد إيجاد قيمة x من أجلها تم تكبير F(x). يمكن لأسلوب البحث العشوائي تحديد قيم x عشوائيًا ، وحساب القيمة Fibonacci عند كل x ، واختيار قيمة 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 ، ونحسب القيمة Fibonacci عند كل x ، ثم نختار قيمة x المقابلة لأعلى Fibonacci قيمة قمنا بحسابها.