A*’ın Garantileri ve Sınırları
Admissible, Consistent, Bellek Sorunu ve Heuristic Tasarımı
2026-02-23
A* ile Nerede Kalmıştık?
- A* düğümleri \(f(n)=g(n)+h(n)\) ile sıralıyordu
- \(g(n)\) geçmişte kat edilen gerçek maliyetti
- \(h(n)\) ise hedefe kalan tahmini maliyetti
- Bu sayede Greedy’den daha dengeli seçim yapabiliyordu
Peki A* Neden Güvenilir?
- A* yalnızca hızlı olmak için tasarlanmamıştır
- Uygun koşullar altında optimal çözüm de bulabilir
- Bunun anahtarı, kullanılan sezgisel fonksiyonun özellikleridir
Soru:
Her \(h(n)\) tahmini A* için güvenli midir?
Kabul Edilebilir Sezgisel (Admissible)
Bir sezgisel fonksiyon aşağıdaki koşulu sağlıyorsa kabul edilebilir denir:
\[ h(n) \leq h^*(n) \]
- \(h(n)\) : tahmini kalan maliyet
- \(h^*(n)\) : gerçek en düşük kalan maliyet
Yani sezgisel fonksiyon asla fazla tahmin yapmaz.
Neden Önemli?
- Eğer \(h(n)\) fazla tahmin yaparsa,
- bazı düğümler olduğundan daha kötü görünebilir
- algoritma optimal çözümü kaçırabilir
- Eğer \(h(n)\) admissible ise,
- A* çözüm yolunu gereksiz yere dışlamaz
Tree-Search A* ve Optimalite
- Eğer \(h(n)\) admissible ise
- tree-search A* optimal çözüm bulur
Yani:
- A* ilk bulduğu çözümü değil,
- gerçekten en düşük maliyetli çözümü döndürür
Tutarlılık (Consistency)
Bir sezgisel fonksiyon aşağıdaki koşulu sağlıyorsa tutarlı denir:
\[h(n) \leq c(n,a,n') + h(n')\]
- Bu, bir tür üçgen eşitsizliğidir
- Tahmini mesafe, bir adım gidip devam etme maliyetinden daha büyük olmamalıdır
Sezgisel Fonksiyon Düzenli Davranmalı
Tutarlılık sayesinde:
- \(f(n)\) değerleri yol boyunca azalmaz
- Yani A* arama sırasında daha öngörülebilir davranır
- Aynı düğümü daha iyi maliyetle tekrar tekrar açma ihtiyacı azalır
Graph-Search A* ve Optimalite
| Tree-search A* |
Admissible |
Optimal |
| Graph-search A* |
Consistent |
Optimal |
- Tutarlı her sezgisel aynı zamanda admissible’dır
- Ama her admissible sezgisel mutlaka tutarlı değildir
Kuş Uçuşu Mesafe Neden İyi Bir Örnek?
- Bir şehirden Ankara’ya kuş uçuşu mesafe
- gerçek yol maliyetinden küçük veya eşit olur
- Bu yüzden genelde admissible bir sezgiseldir
- Ayrıca çoğu durumda üçgen eşitsizliğini de sağladığı için consistent davranır
A*’ın Asıl Problemi
- A* iyi seçim yapar
- Ama bunun bir bedeli vardır:
- çok sayıda düğüm üretir
- frontier’ı bellekte tutar
Sonuç:
A* çoğu zaman zamandan önce bellek sınırına takılır.
Zaman ve Bellek Karmaşıklığı
- Zaman: \(O(b^d)\)
- Yer: \(O(b^d)\)
Burada:
- \(b\) : dallanma faktörü
- \(d\) : çözüm derinliği
Yani problem büyüdükçe hem zaman hem bellek üstel büyür.
Bellek Sorunu İçin Bir Fikir: IDA*
- IDA* = Iterative Deepening A*
- Derinlik sınırı yerine \(f\)-maliyeti sınırı kullanır
- DFS benzeri çalışır
- Bellek kullanımı yaklaşık \(O(bd)\) düzeyine iner
IDA* Ne Kazandırır, Ne Kaybettirir?
Kazandırır: * Çok daha düşük bellek kullanımı
Kaybettirir: * Aynı düğümleri tekrar tekrar üretme * Bazı durumlarda daha fazla çalışma süresi
Yani:
- A* → güçlü ama pahalı
- IDA* → daha hafif ama tekrar üretim maliyeti var
İyi Bir Heuristic Nereden Gelir?
- Güçlü bir sezgisel fonksiyon aramayı ciddi biçimde hızlandırabilir
- Ama bunu tasarlamak her zaman kolay değildir
- Bir yöntem: gevşetilmiş problem kurmak
Gevşetilmiş Problem Fikri
- Orijinal problemin bazı kısıtlarını kaldır
- Daha kolay bir problem elde et
- Bu kolay problemin çözüm maliyetini sezgisel olarak kullan
Bu fikir genelde:
- hesaplaması daha kolay
- ama yine de anlamlı bir alt sınır üreten bir \(h(n)\) verir
8-Puzzle Örneği
İki klasik sezgisel:
- Yanlış yerde taş sayısı
- Manhattan mesafesi
Manhattan mesafesi genelde daha güçlüdür; çünkü hedefe kalan hareket ihtiyacını daha ayrıntılı yansıtır.
Bu Bölümün Özeti
- A* yalnızca hızlı değil, uygun koşullarda optimaldir
- Bunun için sezgisel fonksiyonun özellikleri önemlidir
- A* güçlüdür ama bellek maliyeti yüksektir
- IDA* ve benzeri yaklaşımlar bu soruna cevap arar
- İyi heuristic tasarımı performansı belirleyen ana unsurdur
Sonraki Adım
Şimdiye kadar gördüğümüz tüm arama yöntemlerinde amaç, tek bir ajanın hedefe ulaşmasıydı.
Sıradaki soru:
Eğer ortamda bir rakip varsa ne olur?
Bir sonraki konu: Çekişmeli Arama * minimax * oyun ağacı * alpha-beta budama