C++ मा अनियमित खोज (Random Search) एल्गोरिथ्म- व्याख्या, उदाहरण र कोड

अनियमित खोज एल्गोरिथ्म एक खोज विधि हो जुन अनियमित रूपमा खोज स्थानबाट समाधानहरूको सेट चयन गरेर र तिनीहरूले समस्या समाधान गर्न सक्छन् कि भनेर जाँच गर्नमा आधारित छन्। यो दृष्टिकोण प्रायः प्रयोग गरिन्छ जब त्यहाँ कुनै विशेष जानकारी वा खोजलाई मार्गदर्शन गर्न रणनीति छैन।

यो कसरी काम गर्दछ

  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 को मानहरू चयन गर्न सक्छ, प्रत्येक x मा मान गणना गर्न सक्छ Fibonacci, र प्राप्त गरेको उच्चतम Fibonacci मूल्यसँग सम्बन्धित x को मान छनोट गर्न सक्छ।

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, र त्यसपछि हामीले गणना गरेको उच्चतम Fibonacci मूल्यसँग सम्बन्धित x को मान छान्छौं।