Oyun Problemleri ve Minimax

BİM444 — Hafta 5 · Ders 2

Öğr. Gör. Oktay Cesur

2026-03-23

Pasif Ortamdan Rakipli Ortama

 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.”