Minimax
- Algoritmalar kursu
- Uzman seviye
- Ders 31/41
- 4 dk
Oyun ağacında minimax değerini öğrenirsin.
Minimax
Minimax, iki kişili sıfır toplamlı oyunlarda optimal hamleyi bulan algoritmadır. Oyun ağacında max oyuncusu kazancını büyütmeye, min oyuncusu rakibinin kazancını küçültmeye çalışır.
Yaprak düğümlerde değerler bilinir. İç düğümlerde, sıradaki oyuncu max ise çocukların en büyüğü, min ise en küçüğü seçilir.
Algoritma özyinelemelidir ve oyun derinliği d'e kadar tüm ağacı tarar; karmaşıklık O(b^d)'dir.
Minimax özyinelemesi
Minimax özyinelemeli çalışır: her iç düğümde, sıradaki oyuncuya göre çocuklardan en büyük veya en küçük değer seçilir.
minimax(node, is_max): eğer düğüm yapraksa değerini döndür; değilse, çocukların minimax değerlerini hesapla ve max veya min uygula.
İki oyuncu sırayla oynar; bu yüzden her seviyede is_max değişir.
Uygulama minimax fonksiyonu
minimax(node, is_max) yaz. node iç içe liste; yaprak değer tamsayı. Max oyuncu en büyüğü, min oyuncu en küçüğü seçer. print(minimax([[3, 5], [2, 9]], True)) ile 3 yazdır.
Başlangıç kodu
def minimax(node, is_max):
# Basit minimax değerÖrnek çözüm
def minimax(node, is_max):
# Basit minimax değer
if not isinstance(node, list):
return node
if is_max:
return max(minimax(child, False) for child in node)
return min(minimax(child, True) for child in node)
print(minimax([[3, 5], [2, 9]], True))Beklenen çıktı
3
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 Max oyuncusunun hedefi nedir?
if is_max:
return max(values)- Rakibi memnun etmek
- Ağacı küçültmek
- Hızı artırmak
- Kazancı büyütmek Doğru cevap
Açıklama: Max oyuncusu kazancı büyütmeyi hedefler.
2 max dalı
if is_max:
return ____(minimax(child, False) for child in node)
if is_max:
return max(minimax(child, False) for child in node)
Açıklama: Max oyuncusu en büyüğü seçer.
3 Minimax kavramları
| Kavram | Anlamı |
|---|---|
max oyuncu |
Büyüt |
min oyuncu |
Küçült |
yaprak |
Bilinen değer |
oyun ağacı |
Arama alanı |