Algartam Cuardaigh Áitiúil (Local Search) i Java

Teicníc chuardaigh i Java ríomhchlárú is ea an t-algartam Cuardaigh Áitiúil a dhíríonn ar réitigh a bharrfheabhsú trí chuardach laistigh de chomharsanacht an réitigh reatha. In ionad an spás réitigh iomlán a chuardach, díríonn an algartam ar réitigh a aimsiú i "comharsanacht" níos lú.

Conas a Oibríonn Algartam Cuardaigh Áitiúil

Tosaíonn an algartam ó réiteach tosaigh agus déanann sé iarracht i gcónaí é a fheabhsú trí réitigh níos fearr a chuardach sa chomharsanacht in aice láimhe. Déanann an algartam atriall trí réitigh in aice láimhe agus roghnaíonn sé an réiteach is fearr ina measc.

Buntáistí agus Míbhuntáistí Algartam Cuardaigh Áitiúil

Buntáistí:

  • Éifeachtúlacht: Is minic a fheidhmíonn an algartam níos tapúla i spásanna fadhbanna níos mó trí chuardach a dhéanamh ar stáit in aice láimhe in ionad an spáis iomlán.
  • Comhtháthú: Is féidir é a chomhcheangal le modhanna eile chun feidhmíocht chuardaigh a fheabhsú.

Míbhuntáistí:

  • Optima Áitiúil: D'fhéadfadh an t-algartam teacht le chéile go pointe optamach áitiúil gan teacht ar an réiteach domhanda.

Sampla agus Míniú

Is sampla fíorshaoil ​​den Algartam Cuardaigh Áitiúil é bealach tráchta a bharrfheabhsú. Feicfimid conas a oibríonn an algartam seo:

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

Sa sampla thuas, úsáidimid an Algartam Cuardaigh Áitiúil chun réiteach uimhriúil a bharrfheabhsú. Déanann an t-algartam cuardach laistigh de chomharsanacht an réitigh reatha trí chéim sheasta a athrú agus seiceálann sé an bhfuil an réiteach nua níos fearr. Is é an toradh atá air ná go bhfaighidh an algartam réiteach níos fearr de réir a chéile le himeacht ama.