(Local 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) زیادہ سے زیادہ ہے۔ ہم مقامی تلاش کا طریقہ استعمال کر سکتے ہیں تا کہ ہر قدم سے دور تک تلاش کر سکیں۔

C++ میں کوڈ کی مثال

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

اس مثال میں، ہم فنکشن کو بہتر بنانے کے لیے لوکل سرچ کا طریقہ استعمال کرتے ہیں Fibonacci ۔ ہم x کی مختلف اقدار کے ذریعے اعادہ کرتے ہیں اور Fibonacci ہر x پر قدر کا حساب لگاتے ہیں۔ جب کوئی بہتر قدر مل جاتی ہے، تو ہم بہترین قدر اور اس کے متعلقہ x کو اپ ڈیٹ کرتے ہیں۔