Yerel Arama algoritması, mevcut durumun yakın çevresinde en iyi çözümü bulmak için kullanılan bir yöntemdir. Bu teknik genellikle, daha iyi durumları keşfetmek için bireysel bileşenleri yinelemeli olarak değiştirerek yaklaşık çözümleri iyileştirmek için kullanılır.
Nasıl çalışır
- Başlatma: Bir başlangıç durumuyla başlayın.
- Komşular Oluştur: Geçerli durumun bir bileşenini değiştirerek komşu durumlar oluşturun.
- Değerlendirme: Bir amaç fonksiyonu kullanarak komşu devletlerin kalitesini değerlendirin.
- En İyi Durumu Seçin: En iyi amaç değerine sahip komşu durumu seçin.
- Tekrarla: Daha iyi bir komşu durum bulunamayana kadar 2'den 4'e kadar olan adımları yineleyin.
Örnek: Fibonacci İşlevi Optimize Etme
Fibonacci F(0) = 0, F(1) = 1 ile F(x) = F(x-1) + F(x-2) fonksiyonunun optimizasyon problemini ele alalım. F(x) maksimize edilir. Her adımdan daha uzağa yinelemeli olarak keşfetmek için Yerel Arama yaklaşımını kullanabiliriz.
C++'da Kod Örneği
#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;
}
Bu örnekte, işlevi optimize etmek için Yerel Arama yöntemini kullanıyoruz Fibonacci. Farklı x değerlerini yineliyoruz ve Fibonacci her bir x'teki değeri hesaplıyoruz. Daha iyi bir değer bulunduğunda, en iyi değeri ve buna karşılık gelen x'i güncelleriz.