alpha-beta pruning
Főnév
alpha-beta pruning (tsz. alpha-beta prunings)
A mesterséges intelligenciában, különösen a játékprogramozásban (mint sakk, dáma, tic-tac-toe), gyakran használunk játékfákat a lehetséges lépések modellezésére. Ezekben a fákban minden egyes csomópont egy játékállást, minden él egy lépést jelent. A klasszikus Minimax algoritmus segítségével egy gép képes „végiggondolni” az összes lehetséges lépést és ellenlépést, majd ez alapján dönteni a legjobb akcióról.
A probléma? A játékfák gyakran exponenciálisan nagyok. Például sakkban a lehetséges játékállások száma 10^40 körül van. Ilyen méretű fát lehetetlen teljes egészében bejárni. Az Alpha–Beta metszés (pruning) a Minimax algoritmus optimalizálása: lehetővé teszi a gép számára, hogy bizonyos ágakat kihagyjon anélkül, hogy befolyásolná a végső döntést.
A Minimax algoritmus röviden
A Minimax algoritmus feltételezi, hogy két játékos (Max és Min) váltakozva lép. A Max játékos célja a lehető legnagyobb pontszám elérése, míg a Min játékos célja a Max pontszámának minimalizálása. Az algoritmus rekurzívan értékeli a fa leveleitől felfelé haladva a csomópontokat, kiválasztva minden szinten a számára optimális értéket:
- Max lépéseinél: a maximális értéket választja a gyermekek közül.
- Min lépéseinél: a minimális értéket választja.
Alpha–Beta pruning – a fogalom lényege
Az Alpha–Beta metszés a Minimax során történő optimalizálás, amely korai megszakításokkal csökkenti a felesleges faágak vizsgálatát. A cél: nem kell kiszámolni a teljes fát, ha már biztosak vagyunk abban, hogy egy ágat nem fog választani az ellenfél.
Két változó:
- α (alpha): az eddigi legjobb érték, amit a Max játékos biztosítani tud.
- β (beta): az eddigi legrosszabb érték, amit a Min játékos elfogad.
A metszés akkor történik meg, ha:
- Egy Max csomópontban α ≥ β → Min nem fogja ezt az ágat választani.
- Egy Min csomópontban β ≤ α → Max nem fogja ezt az ágat választani.
Példa:
Képzeljük el az alábbi játékszituációt, egy egyszerű fával:
MAX
/ \
MIN MIN
/ \ / \
3 5 6 9
A Minimax szerint:
- Az első MIN csomópontban (3,5) a minimális: 3
- A második MIN csomópontban (6,9) a minimális: 6
- MAX ezek közül a maximálisat választja: max(3,6) = 6
Most nézzük, hogyan metszene az Alpha–Beta:
- MAX indul, α = –∞, β = +∞
- Belép az első MIN ágba
- MIN belép a 3-hoz → visszajön 3 → MIN frissíti β = 3
- MIN most a 5-öt nézné, de MAX még nem tud jobbat, tehát folytat
- MIN = min(3,5) = 3 → MAX α = 3
Most belépünk a második MIN ágba:
- MIN belép a 6-hoz, látja: 6 > α (3), de mivel Min játékos vagyunk, és 6 már rosszabb, mint amit eddig biztosítani tudott a másik ágon keresztül (3), a 9-es ágat nem kell megnézni, mert úgysem lesz jobb → metszés történik.
A metszés hatékonysága
Ha a csomópontokat ideálisan rendezzük (a legjobbakat vizsgáljuk meg először), akkor az Alpha–Beta pruning a keresési időt O(b^(d/2))-re csökkenti, ahol:
- b: az elágazási tényező (hány gyermek van egy csomópontnak),
- d: a fa mélysége.
Ez nagy előrelépés a sima Minimax O(b^d) bonyolultságához képest. Ezért az Alpha–Beta pruning használata nélkülözhetetlen minden gyakorlati játék-AI esetén.
Pszeudokód
function alphabeta(node, depth, α, β, maximizingPlayer):
if depth == 0 or node is terminal:
return evaluate(node)
if maximizingPlayer:
value := –∞
for each child of node:
value := max(value, alphabeta(child, depth – 1, α, β, FALSE))
α := max(α, value)
if α ≥ β:
break // β-metszés
return value
else:
value := +∞
for each child of node:
value := min(value, alphabeta(child, depth – 1, α, β, TRUE))
β := min(β, value)
if β ≤ α:
break // α-metszés
return value
Használati területek
- Sakk, dáma, go: minden olyan játék, ahol két játékos, tökéletes információval és váltakozó lépésekkel játszik.
- Mesterséges intelligencia: intelligens döntéshozatalhoz szűkített keresés.
- Robotika: döntés optimalizálás valós idejű környezetben.
- Gazdasági szimulációk: versengő felek viselkedésének modellezése.
Korlátai
- Nem alkalmazható jól nem determinisztikus játékokban (pl. kockadobás).
- Nem tökéletesen működik rejtett információs játékokban (pl. póker).
- A metszés hatékonysága érzékeny a vizsgálati sorrendre – ha rossz sorrendben nézzük a gyermekeket, kevés metszés történik.
Továbbfejlesztések
- Iterative Deepening: mélységi keresés fokozatosan mélyítve, időhatáros.
- Transposition Table: már kiszámolt állások eltárolása, így nem számítjuk újra.
- Move Ordering Heurisztika: valószínűleg legjobb lépések előre hozása a sorrendben (pl. előző lépés szerinti legjobb lépés először).
- Null Window / Aspiration Search: kis ablakú α–β keresés, gyorsabb metszésre optimalizálva.
Összegzés
Az Alpha–Beta metszés a mesterséges intelligencia és játékprogramozás egyik legfontosabb technikája. A Minimax algoritmus optimalizálása révén lehetővé teszi, hogy sokkal mélyebb kereséseket hajtsunk végre ugyanannyi erőforrással. Bár maga az algoritmus egyszerű, hatékonysága jelentősen függ az implementáció finomhangolásától és a játékfa sajátosságaitól. Mégis, a legtöbb professzionális sakkmotor és stratégiai játékalgoritmus szerves része, és évtizedek óta nélkülözhetetlen eszköze az AI-kutatásoknak.
- alpha-beta pruning - Szótár.net (en-hu)
- alpha-beta pruning - Sztaki (en-hu)
- alpha-beta pruning - Merriam–Webster
- alpha-beta pruning - Cambridge
- alpha-beta pruning - WordNet
- alpha-beta pruning - Яндекс (en-ru)
- alpha-beta pruning - Google (en-hu)
- alpha-beta pruning - Wikidata
- alpha-beta pruning - Wikipédia (angol)