स्थानीय खोज (Local Search) एल्गोरिदम में Java

स्थानीय खोज एल्गोरिदम Java प्रोग्रामिंग में एक खोज तकनीक है जो वर्तमान समाधान के आसपास खोज करके समाधानों को अनुकूलित करने पर केंद्रित है। संपूर्ण समाधान स्थान की खोज करने के बजाय, एल्गोरिदम एक छोटे "पड़ोस" में समाधान खोजने पर ध्यान केंद्रित करता है।

स्थानीय खोज एल्गोरिथम कैसे काम करता है

एल्गोरिथम एक प्रारंभिक समाधान से शुरू होता है और आस-पास के क्षेत्र में बेहतर समाधान खोजकर लगातार इसे बेहतर बनाने का प्रयास करता है। एल्गोरिथम आस-पास के समाधानों के माध्यम से पुनरावृत्त करता है और उनमें से सर्वोत्तम समाधान का चयन करता है।

स्थानीय खोज एल्गोरिथम के फायदे और नुकसान

लाभ:

  • दक्षता: एल्गोरिथ्म अक्सर संपूर्ण स्थान के बजाय आस-पास के राज्यों की खोज करके बड़े समस्या वाले स्थानों में तेजी से काम करता है।
  • एकीकरण: खोज प्रदर्शन को बढ़ाने के लिए अन्य तरीकों के साथ जोड़ा जा सकता है।

नुकसान:

  • स्थानीय ऑप्टिमा: एल्गोरिदम वैश्विक समाधान ढूंढे बिना स्थानीय इष्टतम बिंदु पर परिवर्तित हो सकता है।

उदाहरण एवं स्पष्टीकरण

स्थानीय खोज एल्गोरिथम का एक वास्तविक उदाहरण ट्रैफ़िक मार्ग को अनुकूलित करना है। आइए देखें कि यह एल्गोरिदम कैसे काम करता है:

import java.util.*;  
  
public class LocalSearchExample {  
    static double evaluateSolution(double[] solution) {  
        // Function to evaluate the quality of a solution  
        // Lower value indicates a better solution  
        return 1.0 /(1.0 + solution[0] + solution[1]);  
    }  
  
    static double[] localSearch(double[] initialSolution, double stepSize, int maxIterations) {  
        double[] currentSolution = Arrays.copyOf(initialSolution, initialSolution.length);  
        double currentEvaluation = evaluateSolution(currentSolution);  
  
        for(int i = 0; i < maxIterations; i++) {  
            double[] nextSolution = Arrays.copyOf(currentSolution, currentSolution.length);  
            nextSolution[0] += stepSize;  
            double nextEvaluation = evaluateSolution(nextSolution);  
  
            if(nextEvaluation < currentEvaluation) {  
                currentSolution = nextSolution;  
                currentEvaluation = nextEvaluation;  
            } else {  
                stepSize /= 2;  
            }  
        }  
  
        return currentSolution;  
    }  
}  

उपरोक्त उदाहरण में, हम संख्यात्मक समाधान को अनुकूलित करने के लिए स्थानीय खोज एल्गोरिदम का उपयोग करते हैं। एल्गोरिदम एक निश्चित चरण को बदलकर वर्तमान समाधान के आसपास खोज करता है और जांचता है कि नया समाधान बेहतर है या नहीं। इसका परिणाम यह होता है कि एल्गोरिदम समय के साथ उत्तरोत्तर बेहतर समाधान ढूंढता है।