Algorithm ya Utafutaji wa Karibu (Local Search) ndani Java

Kanuni ya Utafutaji wa Ndani ni mbinu ya utafutaji katika Java upangaji programu ambayo inalenga katika uboreshaji wa suluhu kwa kutafuta ndani ya eneo la suluhisho la sasa. Badala ya kutafuta nafasi nzima ya suluhisho, algorithm inazingatia kutafuta suluhisho katika "kitongoji" kidogo.

Jinsi Algorithm ya Utafutaji wa Karibu Hufanya kazi

Algorithm huanza kutoka kwa suluhisho la awali na hujaribu mara kwa mara kuliboresha kwa kutafuta suluhu bora katika maeneo ya karibu. Algorithm inarudia kupitia suluhisho zilizo karibu na kuchagua suluhisho bora kati yao.

Manufaa na Hasara za Algorithm ya Utafutaji wa Ndani

Manufaa:

  • Ufanisi: Algorithm mara nyingi hufanya kazi haraka katika nafasi kubwa za shida kwa kutafuta majimbo ya karibu badala ya nafasi nzima.
  • Ujumuishaji: Inaweza kuunganishwa na mbinu zingine ili kuboresha utendaji wa utafutaji.

Hasara:

  • Optima ya Karibu: Algorithm inaweza kuungana hadi mahali pazuri zaidi bila kupata suluhisho la kimataifa.

Mfano na Ufafanuzi

Mfano halisi wa Kanuni za Utafutaji wa Ndani ni kuboresha njia ya trafiki. Wacha tuone jinsi algorithm hii inavyofanya kazi:

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;  
    }  
}  

Katika mfano ulio hapo juu, tunatumia Kanuni ya Utafutaji wa Ndani ili kuboresha suluhisho la nambari. Algorithm hutafuta ndani ya ujirani wa suluhisho la sasa kwa kubadilisha hatua isiyobadilika na kuangalia ikiwa suluhisho jipya ni bora. Matokeo yake ni kwamba algorithm hatua kwa hatua hupata suluhisho bora kwa wakati.