C++ ਵਿੱਚ ਸਥਾਨਕ ਖੋਜ (Local 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) ਵੱਧ ਤੋਂ ਵੱਧ ਹੈ। ਅਸੀਂ ਹਰ ਪੜਾਅ ਤੋਂ ਦੂਰ ਦੀ ਪੜਚੋਲ ਕਰਨ ਲਈ ਸਥਾਨਕ ਖੋਜ ਪਹੁੰਚ ਦੀ ਵਰਤੋਂ ਕਰ ਸਕਦੇ ਹਾਂ।

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 ਨੂੰ ਅੱਪਡੇਟ ਕਰਦੇ ਹਾਂ।