25
Algoritmy pro hraní tahových her Klasické deskové hry pro dva hráče: Šachy Dáma Go Piškvorky Reversi Oba hráči mají úplnou znalost pozice (na rozdíl např. od Pokeru). 1

Algoritmy pro hraní tahových her

  • Upload
    others

  • View
    9

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Algoritmy pro hraní tahových her

Algoritmy pro hraní tahových herKlasické deskové hry pro dva hráče:• Šachy• Dáma• Go• Piškvorky• Reversi

Oba hráči mají úplnou znalost pozice (na rozdíl např. od Pokeru).

1

Page 2: Algoritmy pro hraní tahových her

Základní principHraní tahových her je zcela přirozeně spojováno s představou prohledávání stavového prostoru, tj. jakéhosi zkoušení možných tahů.

Téměř všichni lidé tímto způsobem hrají, přemýšlejí, co by soupeř mohl udělat, pokud provedou zvažovaný tah.

2

Nejčastěji používané algoritmy jsou ty, které prohledávají stavový prostor systematicky do určité hloubky.

Page 3: Algoritmy pro hraní tahových her

Stavový prostor

3

(Konečný) strom, kde• vrcholy jsou pozice hry• hrany odpovídají všem možným tahům v dané pozici• potomek je pozice vzniklá provedením jednoho tahu• listy jsou koncové pozice

. . . . .

Pozice, ve které je na tahu 1. hráč

Pozice, ve kterých jena tahu 2. hráč

Page 4: Algoritmy pro hraní tahových her

Existence vítěze (první hráč)

4

V P R P P VRRPV V

R

Page 5: Algoritmy pro hraní tahových her

Existence vítěze (druhý hráč)

5

V P P P P VPRPP P

R

Page 6: Algoritmy pro hraní tahových her

Optimální strategie pro klasické hryPiškvorky- klasická varianta, cílem jevytvořit souvislý pás 5-ti značek

Existuje neprohrávající strategie pro začínajícího hráče.Důkaz sporem:• první tah můžeme zahodit• následně „ukradnout“ vítěznou strategii druhého hráče

15x15 – dokázáno, že pro začínajícího hráče existuje vítězná strategie

6

Page 7: Algoritmy pro hraní tahových her

Optimální strategie pro klasické hryDáma

Optimální hra obou hráčů vede k remíze• Dokázáno v roce 2007 za použití velké výpočetní síly• Chinook – nejsilnější počítačový program na dámu• Nebylo zanalyzováno, jakým způsobem hrát, pokud se

protihráč odchýlí od optimální strategie

7

Page 8: Algoritmy pro hraní tahových her

Optimální strategie pro klasické hryReversi8x8: otázka optimální strategie dosud nevyřešena

hypotéza: opt. strategie vede k remíze4x4, 6x6: nezačínající hráč vyhraje

Nejlepší počítačové programy na Reversi snadno porážejí lidské soupeře.

Šachy, Go: velmi komplexní hry, příliš mnoho pozic, výsledek optimální strategie neznámý

8

Page 9: Algoritmy pro hraní tahových her

Stavový prostor omezený hloubkou

9

05.2

Nelze prohledat kompletní stavový prostor.• Omezíme se na určitou hloubku• Zavedeme ohodnocení pozic reprezentovaných v listech

-3

ohodnocení pozice jereálné číslo :

… pozice je výhodnější pro prvního hráče

… pozice je výhodnější pro druhého hráče

… pozice je nerozhodná

r

0>r

0<r

0=r

Page 10: Algoritmy pro hraní tahových her

Algoritmus minimaxu

10

0

2 5 7 3 0 -4 -3 -6-812-5

MAX

MIN

MAX

2 1 7 3 0 -3

1 0 -3

1

Page 11: Algoritmy pro hraní tahových her

Je nutné procházet všechny vrcholy?

11

6

MIN

MAX

9 8 2 8 0 -3

7 6 8

7

7 9

0

Page 12: Algoritmy pro hraní tahových her

Algoritmus alfa-beta ořezávání

12

V průběhu prohledávání stavového prostoru udržujeme dvě hodnoty: alfa – reprezentuje ohodnocení garantované pro prvního

hráčebeta – ohodnocení garantované pro druhého hráče

Na počátku je alfa = -∞, beta = +∞

Funkce (s návratovou hodnotou ohodnocení pro ‘node’):alphabeta(node, depth, α, β, player)

Iniciální volání:alphabeta(root, max_depth, -∞, +∞, MAX_PLAYER);

Page 13: Algoritmy pro hraní tahových her

Algoritmus alfa-beta ořezávání

13

alphabeta(node, depth, α, β, player):

if depth = 0 || node is leaf

return score(node);

if player = MAX_PLAYER

for each child of node do

α := max(α, alphabeta(child, depth-1, α, β, not(player)));

if β ≤ α break; // β-ořezání

return α;

else

for each child of node do

β := min(β, alphabeta(child, depth-1, α, β, not(player)));

if β ≤ α break; // α-ořezání

return β;

Page 14: Algoritmy pro hraní tahových her

Jaké je zlepšení oproti minimaxu

14

1. V nejhorším případě neořežeme nic.2. V nejlepším případě prohledáme ve stejném čase strom

do dvojnásobné hloubky.3. V průměrném případě zvětšíme hloubku o jednu třetinu.

6

MIN

MAX

1 3 2 7 0 -3

-1 2 7

7

-1 2

Page 15: Algoritmy pro hraní tahových her

Další možnosti pro vylepšení

15

Heuristiky:Přednostně je dobré procházet ty části stromu, které co nejdříve vynutí alfa-beta ořezání.• Tahy, ve kterých se berou figury.• Pozice, které získaly vysoké ohodnocení v předchozím

kole.• Tah, který v předchozím kole způsobil β-ořezání.

Jiné algoritmy:• Negascout – závislý na vhodném uspořádání vrcholů, v

průměrném případě zlepšení o 10%, šachové algoritmy jej používají nejčastěji

• SCOUT, MTD-f

Page 16: Algoritmy pro hraní tahových her

Jak ohodnotit poziciŠachy:• Koncová pozice: výhra , prohra , remíza• Jinak kombinace následujícího

1. Hodnota všech figur hráče (mínus hodnota soupeře)2. Počet ohrožovaných polí3. Speciální konfigurace (dvojpěšec, volný pěšec,

ovládnutý volný sloupec)

16

∞+ ∞− 0

13

53

9

=

Page 17: Algoritmy pro hraní tahových her

Vyladění algoritmuJakým způsobem kombinovat faktory při ohodnocování pozice?• zavedení vah:

Kolik času přidělit na prohledávání do hloubky a kolik na ohodnocování?

Můžeme vytvořit několik verzí algoritmu, nechat je hrát proti sobě a vybrat vítěze.

Lze i hledat optimální nastavení parametrů automaticky, například s využitím genetických algoritmů.

17

332211 FFF ααα ++

Page 18: Algoritmy pro hraní tahových her

Kdy je potřeba „dohledávat“Situace: List minimaxového stromu reprezentuje pozici, ve které 1. hráč v posledním tahu sebral dámou soupeřova střelce.

18

Takováto pozice získá dobré ohodnocení.

Střelec byl ale pravděpodobně krytý a v následujícím tahu může 1. hráč přijít o dámu.

Řešení: z uvedené pozice provedeme opět prohledání do omezené hloubky a zjistí, jakým způsobem se výměna figur může vyvíjet.

Page 19: Algoritmy pro hraní tahových her

Jaké tahy lze předpočítat1. Zahájení – knihovna několika prvních tahů, které

nevedou k nevýhodné pozici

Sicilská obrana (Najdorfova varianta)

1. e4 c5 2. Jf3 d6 3. d4 cxd4 4. Jxd4 Jf65. Jc3 a6

19

Page 20: Algoritmy pro hraní tahových her

Jaké tahy lze předpočítat2. Koncovky – jak hrát optimálně v poslední fázi hry

• Šachy, dáma: zbývá několik málo figur• Reversi: zbývá položit posledních pár kamenů

Nemá smysl uvažovat pozice, které rychle dořešíme do konce minimaxním stromem.

20

Page 21: Algoritmy pro hraní tahových her

Šachové koncovkyNěkteré klasické situace• král a věž proti králi• král a dáma proti králi• král a pěšec proti králi

21

Postup k vítězství může být zdlouhavý, prohledávání do omezené hloubky jej nemusí vůbec odhalit, je proto lepší aplikovat patřičnou strategii.

pravidlo opozice:

Page 22: Algoritmy pro hraní tahových her

Tabulky šachových koncovek• Endgame tablebase – optimální tahy pro všechny

situace, kdy na šachovnici zbývá maximálně 6 figur• Vygenerováno pomocí retrográdní analýzy, postupuje

se od koncové pozice zpět

Nalimovovy tabulky:5 a méně figur: 7.05 GB (použita speciální komprese)6 figur: 1.2 TB7 figur: více paměti, než je na světě k dispozici

Shredder – bitová varianta tabulek pro 5 a méně figur, má velikost 157 MB

22

Page 23: Algoritmy pro hraní tahových her

Šachy - člověk proti počítači

• 1996, výsledek 4-2 (3 výhry, 2 remízy, 1 prohra)• 1997, výsledek 2½-3½ (1 výhra, 3 remízy, 2 prohry)

- světový šampion poprvé poražen v zápase se strojem

- ohodnoceno 200 mil. pozic za sekundu

23

vs.

G.Kasparov Deep Blue (IBM)

Page 24: Algoritmy pro hraní tahových her

Šachy - člověk proti počítačiV.Kramnik vs. Deep Fritz• 2002, 4-4 (2 výhry, 4 remízy, 2 prohry)• 2006, 2-4 (0 výher, 4 remízy, 2 prohry)

- ohodnoceno 8 mil. pozic za sekundu

2006, 2. partie – černý natahu (Kramnik) zahrál De3

24

Page 25: Algoritmy pro hraní tahových her

Srovnání předností člověka a programuProgram:+ je silný v komplikovaných situacích s množstvím

kombinací+ obrovská znalost zahájení a koncovek+ nevnímá hluk, stres, únavu, psychický tlak- malá znalost strategie - neodhalí plán na několik kol dopředu, efekt horizontu- obvykle zaměřen na materiální výhodu, neobětuje

figuru, pokud se mu to brzy nevyplatí

25