Yerel aramada ortam pasifti — siz optimize ediyordunuz, çevre bekliyordu.
Şimdi yeni bir senaryo:
- Her hamlenizden sonra rakip en kötü karşılığı veriyor
- “İyi durum bulmak” yetmiyor → rakibin stratejisine rağmen iyi kalmak gerekiyor
—
Oyunlar Neden Ayrı Bir Problem?
- Kendi hamlelerimizin değeri rakibin cevabına bağımlı
- “Bu iyi görünüyor” yetmez → “Rakip buna nasıl cevap verir?” sorusu zorunlu
- Rakibi modellememiz gerekiyor: o da rasyonel, o da ileriye bakıyor
Odak: deterministik, tam bilgili, sıfır toplamlı, iki oyunculu oyunlar
—
Formal Tanım
Unsur
Açıklama
Oyuncular
MAX (ajan), MIN (rakip)
Başlangıç durumu
Oyunun ilk konfigürasyonu
Eylemler(s)
O durumda geçerli hamleler
Geçiş modeli
RESULT(s, a)
Terminal testi
Oyun bitti mi?
Fayda fonksiyonu
Terminal durumda MAX için sayısal skor
—
Sıfır Toplamlı Oyun
MAX +1 kazanırsa MIN −1 alır. Bir tarafın kazancı diğerinin tam kaybı.
Bu varsayım minimax mantığını temizler:
- MIN’in hedefi → fayda fonksiyonunu minimize et
- MAX’ın hedefi → fayda fonksiyonunu maksimize et
- İki hedef tamamen zıt — MIN için ayrı model kurmaya gerek yok
—
Oyun Ağacı
- Kök: başlangıç durumu · Katmanlar: MAX → MIN → MAX → …
- Yapraklar: terminal durumlar + fayda değerleri
Oyun
Dallanma b
Derinlik m
Durum sayısı
Tic-tac-toe
~5
9
~10^5
Satranç
~35
~100
~10^120
Go
~250
~150
~10^360
Örneğimizde: kök (MAX) · 3 MIN çocuğu · 6 yaprak
—
Minimax Varsayımı
MIN rasyonel ve düşmanca oynuyor: MAX için en kötü sonucu üretecek hamleyi seçiyor.
MAX bu varsayımla karar veriyor:
> “Rakibim her adımda benim için en kötüyü yapacak.
> Ben bunu bilerek — o en kötüyü yapsa bile — en iyi sonucu sağlayan hamleyi seçmeliyim.”
—
Minimax Tanımı
MINIMAX(s):
eğer TERMINAL(s) → UTILITY(s) döndür
eğer MAX sırası → max { MINIMAX(RESULT(s,a))| a ∈ ACTIONS(s) }
eğer MIN sırası → min { MINIMAX(RESULT(s,a))| a ∈ ACTIONS(s) }
- Terminal değerlerden başlanır, yapraktan köke yayılır
- MAX katmanlar en büyüğü · MIN katmanlar en küçüğü seçer
—
Geri Yayılım — Adım 1: MIN Seçiyor
> [Görsel: 3 katmanlı oyun ağacı, MIN seçimleri vurgulanmış]
> Kök: MAX · Üç MIN çocuğu (sol, orta, sağ) · Her MIN’in iki yaprağı
> Yaprak değerleri: sol [3, 5] · orta [6, 9] · sağ [1, 7]
> Gösterim: MIN düğümlerinin seçtiği değerler kutucuk içinde; diğer yapraklar soluk
MIN her dalda en küçük değeri seçiyor:
Dal
Yapraklar
MIN seçimi
Sol
3, 5
3
Orta
6, 9
6
Sağ
1, 7
1
—
Geri Yayılım — Adım 2: MAX Seçiyor
> [Görsel: Aynı ağaç, MAX kök seçimi vurgulanmış]
> MIN katmanı değerleri [3, 6, 1] sabitlenmiş · Kök MAX bu değerleri görüyor
> Gösterim: Orta dal kalın çizgi ile kökten aşağıya; sol ve sağ dallar soluk
MAX en büyük değeri seçiyor:
max(3, 6, 1) = 6 → orta hamle optimal
Minimax kararı: Orta hamleyi seç — rakip ne yaparsa yapsın, en az 6 elde edersin.
—
Özellikler ve Sınır
- DFS traversal: O(b^m) zaman · O(bm) yer
- Tam ve optimal — rakip de optimal oynuyorsa
- Satranç: b≈35, m≈100 → 10^120 durum → tam arama imkânsız
—
Sıradaki Adım
Tam minimax büyük oyunlar için imkânsız. İki temel araç:
1. Alpha-beta budaması → kararı değiştirmeden gereksiz dalları kes
2. Değerlendirme fonksiyonu + kesme → terminale kadar gitme, belli derinlikte dur
“Tam minimax ile budamalı minimax aynı kararı veriyor. Budama hesaplamayı kısaltıyor, sonucu değiştirmiyor.”