260 likes | 460 Views
Umjetna inteligencija – 3. Igranje igara. Alfabeta Podrezivanje. Goran Pogačić. Sadržaj. Alfabeta podrezivanje Alfabeta i minimax Alfa Beta Algoritam. Podrezivanje. Kada podrezujemo?. Alfa vs Beta.
E N D
Umjetna inteligencija – 3. Igranje igara Alfabeta Podrezivanje Goran Pogačić
Sadržaj • Alfabeta podrezivanje • Alfabeta i minimax • Alfa • Beta • Algoritam
Podrezivanje... • Kada podrezujemo?
Alfa vs Beta • Ako računalo (root player) pretražujući stablo otkrije da potez B koji trenutno istražuje ne može biti ni u kojem slučaju bolji od poteza A koji je prethodno istražio – podrezivanje! • Ako su A i B potezi računala – Beta podrezivanje • Ako su A i B potezi protivnika – Alfa podrezivanje
Alfa podrezivanje 0 X 1 X1 X2 Xi Xn ... ... 2 Xi1 Xi2 Xij ... ...
Alfa podrezivanje Privremena vrijednost α 0 X α 1 X1 X2 Xi Xn ... ... 2 Xi1 Xi2 Xij ... ...
Alfa podrezivanje Privremena vrijednost α 0 X α m 1 X1 X2 Xi Xn ... ... m 2 Xi1 Xi2 Xij ... ...
Alfa podrezivanje m <= alfa α 0 X α m 1 X1 X2 Xi Xn ... ... m 2 Xi1 Xi2 Xij ... ...
Čvor Xij – preuzimač odgovornosti Potez Xi na Xij – obarajući potez (refutation move) Alfa podrezivanje α 0 X α m 1 X1 X2 Xi Xn ... ... m 2 Xi1 Xi2 Xij ... ...
beta podrezivanje 0 X 1 X1 X2 Xi Xn ... ... 2 Xi1 Xi2 Xij ... ...
beta podrezivanje m >= beta β 0 X β m 1 X1 X2 Xi Xn ... ... m 2 Xi1 Xi2 Xij ... ...
Općenito • Alfa podrezivanje se događa ispod MIN čvora y ako je njegova privremena vrijednost jednaka ili manja od α, gdje je αnajveća privremena vrijednost y-ovog, MAX, čvora pretka • Beta podrezivanje se događa ispod MAX čvora y ako je njegova privremena vrijednost jednaka ili veća od β, gdje je βnajmanja privremena vrijednost y-ovog, MIN, čvora pretka
Primjer Alfabeta podrezivanja – slika 0 X X2 1 X1 2 X11 X12 X21 X22 3 X111 X112 X121 X122 X123 X211 X212 X221 X222
Primjer Alfabeta podrezivanja – slika 0 X X2 1 X1 0 2 X11 X12 X21 X22 3 X111 X112 X121 X122 X123 X211 X212 X221 X222 0
Primjer Alfabeta podrezivanja – slika 0 X 1 X2 1 X1 1 0 2 X11 X12 X21 X22 3 X111 X112 X121 X122 X123 X211 X212 X221 X222 0 1
Primjer Alfabeta podrezivanja – slika 0 X 1 X2 1 X1 m >= beta 1 2 2 X11 X12 X21 X22 3 X111 X112 X121 X122 X123 X211 X212 X221 X222 0 1 2
Primjer Alfabeta podrezivanja – slika 1 0 X 1 X2 1 X1 m >= beta 1 2 2 X11 X12 X21 X22 3 X122 X123 X111 X112 X121 X211 X212 X221 X222 0 1 2
Primjer Alfabeta podrezivanja – slika 1 0 X 1 X2 1 X1 1 2 -3 2 X11 X12 X21 X22 3 X122 X123 X111 X112 X121 X211 X212 X221 X222 0 1 2 -3
Primjer Alfabeta podrezivanja – slika 1 0 X -3 1 X2 1 X1 1 2 -3 2 X11 X12 X21 X22 3 X122 X123 X111 X112 X121 X211 X212 X221 X222 0 1 2 -3 -5
Primjer Alfabeta podrezivanja – slika 1 0 X -3 1 m <= alfa X2 1 X1 1 2 -3 2 X11 X12 X21 X22 3 X122 X123 X111 X112 X121 X211 X212 X221 X222 0 1 2 -3 -5
Primjer Alfabeta podrezivanja – slika 1 0 X -3 1 X2 1 X1 1 2 -3 2 X22 X11 X12 X21 3 X122 X123 X221 X222 X111 X112 X121 X211 X212 0 1 2 -3 -5
Primjer Alfabeta podrezivanja – slika 1 0 X -3 1 X2 1 X1 1 2 -3 2 X22 X11 X12 X21 3 X122 X123 X221 X222 X111 X112 X121 X211 X212 0 1 2 -3 -5
Primjer Alfabeta podrezivanja – algoritam • funkcija alfabetaParni(x: čvor; alfa,beta: int): int; • i, m, n: int; • ako x je listondavrati heurističku vrijednost od x s obzirom na igrača(root player) • proširi x na x1, x2, ... xn • m := alfa • za i := 1 do n radi: • m := max(m, alfabetaNeparni(xi, m, beta)) • ako m >= beta onda vrati m //beta podrezivanje • vrati m • kraj
Primjer Alfabeta podrezivanja – algoritam • funkcija alfabetaNeparni(x: čvor; alfa,beta: int): int; • i, m, n: int; • ako x je listondavrati heurističku vrijednost od x s obzirom na igrača(root player) • proširi x na x1, x2, ... xn • m := beta • za i := 1 do n radi: • m := min(m, alfabetaParni(xi, alfa, m)) • ako m <= alfa onda vrati m //alfa podrezivanje • vrati m • kraj
Primjer Alfabeta podrezivanja – algoritam • Početni poziv: alfabetaParni(root,alfa,beta) • alfa, beta? • alfa < beta • alfabetaParni(root, -∞, + ∞)
kraj • Hvala!