31
Algoritmi pentru jocuri Minimax, α-β Proiectarea Algoritmilor

Alg Jocuri

Embed Size (px)

DESCRIPTION

algjocuri

Citation preview

  • Algoritmi pentru jocuri

    Minimax, -

    Proiectarea Algoritmilor

  • Problema

  • Cum gndim noi?

    Analizm posibilitile i evalum fiecare mutare n funcie de consecine

    Am pierdut :( Egal :(

  • Cum gndim noi?

    Analizm posibilitile i evalum fiecare mutare n funcie de consecine

    Am pierdut :( Egal :(

    Chiar aa gndim?

  • Cum gndim noi?

    Ne dm seama instinctiv c avem o singur opiune pentru a nu pierde partida i mutm n consecin

    Egal :(

  • Cum gndim noi?

    http://www.dwheeler.com/chess-openings/#Sicilian%20Defense

    Aprarea sicilian!

    Varianta Najdorf Varianta Dragon

    Cnd avem foarte multe posibiliti la dispoziie ncercm s folosim poziii (pattern-uri) cunoscute

  • Cum gndim noi?

    Albul la mutare -11 posibiliti de mutare - le putem ncerca pe toate s vedem ce se ntmpl

    Numrul mutrilor posibile se reduce la 6

    Doar 4 mutri posibile Remiz asigurat

    Maxim 11*64 mutri de analizat circa 15.000 de mutri uor pentru calculator Noi eliminm mutrile ce ni se par fr sens (mai mult de jumtate)

  • Cum gndim noi?

    Cam 35 de mutri posibile

    Varianta ctigtoare presupune sacrificarea unei piese valoroase

  • Cum gndim noi?

    Evalum ameninrile cutm mutri care s minimizeze pierderile

    cutm mutri care s maximizeze ctigul

    Alegem mutrile ce ni se par cele mai bune pe moment

    explorm n adncime mutrile

    Numrul de niveluri = minim dintre Terminarea jocului

    Obinerea unui avantaj consistent fr pericol aparent de a-l pierde

    Nivelul maxim al capacitii noastre de calcul

  • Abordri posibile pentru calculator

    abloane pentru poziii standard

    Cutare n spaiul de poziii

    Utilizare euristici pentru evaluarea poziiei curente

    Ne vom concentra asupra cutrilor

  • Metoda minimax

    2 juctori Max si Min

    Fiecare mut pe rnd

    Max urmrete s-i maximizeze ctigul

    Min urmrete s-i minimizeze pierderea

    Se construiete un arbore and/or

    Pe nivelele impare (pornind de la 1 ) se gsesc mutrile juctorului Max

    Pe nivelele pare se gsesc mutrile juctorului Min

  • Exemplu (I)

    MAX (firefox) trebuie s mute

  • Exemplu (II)

    MAX

    MIN

  • Exemplu (III)

    MAX

    MIN

    MAX -1

  • Exemplu (IV)

    http://mouserunner.com/MozllaTicTacToe/Mozilla_Tic_Tac_Toe.htm

    MAX

    MIN

    MAX

    MIN

    +1 0

    -1

    ...-1 ...0 ...0

  • Minimax

    Dup ce se construiete arborele se evalueaz frunzele i se propag rezultatele spre rdcin astfel:

    Nivelul MIN alege cea mai mic valoare dintre cele ale copiilor

    Nivelul MAX alege cea mai mare valoare dintre cele

    ale copiilor

  • Exemplu (V) MAX

    MIN

    MAX

    MIN

    +1 0

    -1

    ...-1 ...0 ...0

    +1 0 0

    -1 -1 0

    0

    Deci poziia conduce la remiz

  • Probleme Dimensiunea arborelui pentru X i 0 este < 9! Pentru ah fiecare nod are n medie 35 copii

    Pentru go ramificarea este de cca. 150-250

    Complexitatea arborelui pentru ah - 10123

    pentru go 10360

    =>nu putem ajunge de fiecare dat la strile finale

  • Optimizri minimax

    Limitarea adncimii cutrii Trebuie s construim o funcie euristic care s

    estimeze ansele de ctig pentru o poziie dat Ex: pentru ah Regin:10p Turn: 5p Cal, nebun: 3p Pion: 1p Ex Funcie de evaluare a poziiei = suma pieselor proprii

    suma pieselor adversarului

    Ne oprim dup un numr maxim de nivele i estimm valoarea funciei de evaluare la nivelul respectiv

    Apoi propagm valorile conform principiului enunat anterior

  • Exemplu i contraexemplu

    Eval: 36-34=2 Eval: 36-37=-1 Eval: 26-34=-8

    Funcia nu ine cont de poziie albul are o poziie net superioar dar funcia de evaluare o ignor

    Dac se oprete cutarea la acest nivel atunci aparent albul iese n ctig material ignorndu-se faptul c la mutarea urmtoare se pierde dama

    Dac cutarea se oprete la acest nivel aparent albul iese in dezavantaj deoarece a pierdut dama

  • Exemplu funcie euristic X i 0 F=numrul de linii/coloane/diagonale posibil

    ctigtoare pentru MAX-numrul de linii/coloane/diagonale posibil ctigtoare pentru MIN

    Dac MAX poate s mute i s ctige atunci F=+; dac MIN poate s mute i s ctige F=-

  • Exemplu funcie euristic X i 0

    MAX

    MIN

    MAX

    - 2-2=0 2-1=1 1-1=0

    - 0

    0

  • Minimax funcii de evaluare Funcia euristic trebuie s cuantifice poziia

    Chiar n dauna avantajului material

    Trebuie s ia n calcul potenialele ameninri

  • Algoritm MINIMAX w(n)=cost(n) dac n=frunz w(n)=euristica(n) dac n>=nivel_limita w(n)=min{w(n)|nsuccs(n)} dac juctorul

    MIN este la mutare

    w(n)=max{w(n)|nsuccs(n)} dac juctorul MAX este la mutare

    MINIMAX(n) Pentru fiecare nsuccs(n) Fie m=mutarea corespunztoare arcului (n,n) VAL(m)=w(n)

    Return m a.. VAL(m)= max{VAL(x)|xmutri(n)}

    Cristian Giumale Introducere n Algoritmi

  • Tiere -

    ncercm s limitm spaiul de cutare prin eliminarea variantelor ce nu au cum s fie alese

    Idee

    Dac V21

  • Tiere - = max dintre valorile gsite pentru MAX

    = min dintre valorile gsite pentru MIN

    tiem o ramur dac

    am gsit un nod pe nivelul MAX cu valoare = ricare din valorile calculate anterior

  • MAX

    MIN

    MAX

    MIN

    +1 0

    -1

    ...-1 ...0 ...0

    +1 0

    0

    -1 -1 0

    0

    Min va alege ntotdeauna -1 Indiferent de ce alte opiuni mai sunt

  • Algoritm - -(n, limit)

    w=eval_max(n,-,,0,limit) return m=mutri(n) a.i. VAL(m)=w

    eval_max(n,,,nivel,limit) if(tip(n)==terminal)

    return cost(n)

    if (nivel>=limita) return euristica(n) a=- //valoarea curenta a nodului de tip max pentru fiecare (nsuccs(n)){

    a=max(a,eval_min(n,max(,a), ,nivel+1,limita); if (a>= ) break; }

    return a

    similar eval_min

    https://www.youtube.com/watch?v=xBXHtz4Gbdo

    Cristian Giumale Introducere n Algoritmi

  • Observaii - Reduce complexitatea minimax n cazul ideal de la

    Numr_ramificrinumr_nivele la Numr_ramificrinumr_nivele/2

    Conteaz foarte mult ordinea n care analizm mutrile

    se folosesc euristici pentru a alege mutarile examinate mai intai ex: la sah se aleg intai mutarile in care se iau piese

    sau se aleg mai intai mutarile cu scor bun in parcurgeri precedente

    sau se aleg mutarile care au mai generat taieri

    sortarea mutarilor dupa un criteriu dat nu este costisitoare comparativ cu costul exponential al algoritmului

  • Observaii MINIMAX i - algoritmi de cutare n adncime

    pot cauza probleme cnd avem un timp limit

    => soluie posibil IDDFS

    cutare n adncime mrind iterativ adncimea maxim pn la care cutm

  • Concluzii

    algoritmi cu complexitate foarte mare

    soluii euristice pentru limitarea complexitii

    recomandabil s se combine cu alte strategii baze de date cu poziii, pattern-matching