Algoritma Carian Tempatan (Local Search) dalam Java

Algoritma Carian Tempatan ialah teknik carian dalam Java pengaturcaraan yang memfokuskan pada mengoptimumkan penyelesaian dengan mencari di sekitar penyelesaian semasa. Daripada mencari keseluruhan ruang penyelesaian, algoritma menumpukan pada mencari penyelesaian dalam "kejiranan" yang lebih kecil.

Cara Algoritma Carian Tempatan Berfungsi

Algoritma bermula daripada penyelesaian awal dan sentiasa cuba memperbaikinya dengan mencari penyelesaian yang lebih baik di kawasan berhampiran. Algoritma berulang melalui penyelesaian berdekatan dan memilih penyelesaian terbaik di antara mereka.

Kelebihan dan Kelemahan Algoritma Carian Tempatan

Kelebihan:

  • Kecekapan: Algoritma selalunya beroperasi lebih pantas dalam ruang masalah yang lebih besar dengan mencari keadaan berdekatan dan bukannya seluruh ruang.
  • Penyepaduan: Boleh digabungkan dengan kaedah lain untuk meningkatkan prestasi carian.

Kelemahan:

  • Optima Tempatan: Algoritma mungkin menumpu ke titik optimum tempatan tanpa mencari penyelesaian global.

Contoh dan Penerangan

Contoh sebenar Algoritma Carian Tempatan ialah mengoptimumkan laluan trafik. Mari lihat bagaimana algoritma ini berfungsi:

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

Dalam contoh di atas, kami menggunakan Algoritma Carian Setempat untuk mengoptimumkan penyelesaian berangka. Algoritma mencari dalam persekitaran penyelesaian semasa dengan mengubah langkah tetap dan menyemak sama ada penyelesaian baharu itu lebih baik. Hasilnya ialah algoritma secara progresif mencari penyelesaian yang lebih baik dari semasa ke semasa.