Inteligenta Artificiala

(Deadline: -)

Daca nu sunteti logati exercitiile nu se mai afiseaza.

Algoritmul Minimax

In mod clasic, algoritmul minimax se foloseste pentru jocuri de 2 jucatori, turn based (fiecare executa o mutare cand ii vine randul), fara factori aleatori (precum miscari influentate de aruncarea unui zar), cu o stare finala bine determinata.

Calculatorul la fiecare pas face un arbore de mutari pentru a "prevedea" viitorul. La fiecare pas genereaza toate mutarile jucatorului curent, si apoi pentru fiecare dezvolta mai departe subarborele de mutari, pana ajunge la stari finale sau la o adancime maxima, moment in care evalueaza scorul acelei stari. Calculatorul, evident, vede scorul din perspectiva lui, astfel ca isi va calcula mereu propriul scor si va face mutarile astfel incat acest scor sa creasca. In rationamentul lui noteaza cei doi jucatori cu min si max.

In momentul in care pentru o stare are toti succesorii cu scorul cunoscut, seteaza scorul acestei stari cu:

Sa presupunem ca avem o stare curenta, in care e randul lui Max sa mute. Vom presupune in acest exemplu ca are doar doua mutari posibile (desi poate sa aiba orice alt numar de mutari, in functie de joc).
prima extindere
Luam succesorii generati si le calculam pe rand subarborii. Incepem cu cel mai din stanga:
a doua extindere
Vom presupune ca ambii succesori ai ultimului nod extins sunt noduri terminale, moment in care le evaluam scorul (reamintim ca scorul calculat e intotdeauna al lui Max, indiferent al cui e randul sa mute):
calculare scoruri
Cum succesorii sunt ai unei stari in care urma sa mute Min (cu alte cuvinte sunt mutarile posibile pentru Min), Min va alege mutarea care ofera scorul cel mai mic, prin urmare completam nodul parinte cu acel scor (cu sensul ca din acea mutare, daca ambii jucatori joaca perfect, se va ajunge la o stare in care scorul lui Max va avea valoarea respectiva)
completare scor
Extindem si al doilea succesor de sus in subarborele lui:
a treia extindere
Calculam scorurile in subarborele nou:
calculare scoruri
Ca si mai devreme, succesorii sunt al unei stari in care urma sa mute Min, deci se va alege mutarea cu scorul cel mai mic:
completare scor
Se completeaza acum si radacina. Fiind vorba de o stare in care muta Max, se va alege scorul cel mai mare:
arborele final
In momentul in care revenim la radacina putem spune care este mutarea aleasa, si e cea care ofera cel mai mare scor pentru Max (evident, de pe nivelul 2 al arborelui):
alegerea mutarii

Puteti citi pe wikipedia mai multe informatii despre algoritmul Minimax

Algoritmul Alpha-Beta

Alpha-Beta este doar o optimizare a algoritmului Minimax. Alpha si beta sunt capetele unui interval de scoruri. Se porneste initial cu scorul minim si scorul maxim posibil. In momentul in care se obtine un scor de la un descendent al starii curente, se actualizeaza intervalul de scoruri pentru frati in felul urmator:

Daca intalnim un interval invalid, ne oprim.

Puteti citi pe wikipedia mai multe informatii despre algoritmul Alpha-Beta