Vous êtes sur la page 1sur 57

Introduction Minimax lagage Projet

Algorithme Minimax et lagage


Gauthier Picard
SMA/G2I/ENS Mines Saint-Etienne gauthier.picard@emse.fr

9 novembre 2011

Algorithme Minimax et lagage

1 / 17

Introduction Minimax lagage Projet

. Sommaire

. 1 . 2 . 3 . 4

Introduction Algorithme Minimax lagage Instructions et prcautions pour le projet

Algorithme Minimax et lagage

2 / 17

Introduction Minimax lagage Projet

Contexte Thorme Exemples

. Introduction
. Contexte . Bas sur le thorme du Minimax de von Neumann

Rgle de dcision pour les jeux somme nulle, lorigine Objectif : minimiser la perte potentielle maximale (ou linverse) Initialement formul pour des jeux somme nulle deux joueurs jouant alternativement Des extensions existent pour couvrir des jeux plus complexes galement

Algorithme Minimax et lagage

3 / 17

Introduction Minimax lagage Projet

Contexte Thorme Exemples

. Introduction
. Contexte . Bas sur le thorme du Minimax de von Neumann

Rgle de dcision pour les jeux somme nulle, lorigine Objectif : minimiser la perte potentielle maximale (ou linverse) Initialement formul pour des jeux somme nulle deux joueurs jouant alternativement Des extensions existent pour couvrir des jeux plus complexes galement

. Objectifs . . Implmenter un algorithme Minimax pour un jeu bien connu 1

Algorithme Minimax et lagage

3 / 17

Introduction Minimax lagage Projet

Contexte Thorme Exemples

. Introduction
. Contexte . Bas sur le thorme du Minimax de von Neumann

Rgle de dcision pour les jeux somme nulle, lorigine Objectif : minimiser la perte potentielle maximale (ou linverse) Initialement formul pour des jeux somme nulle deux joueurs jouant alternativement Des extensions existent pour couvrir des jeux plus complexes galement

. Objectifs . . Implmenter un algorithme Minimax pour un jeu bien connu 1 . Adapter lalgorithme pour permettre une machine de jouer contre un joueur humain 2 .

Algorithme Minimax et lagage

3 / 17

Introduction Minimax lagage Projet

Contexte Thorme Exemples

. Introduction
. Contexte . Bas sur le thorme du Minimax de von Neumann

Rgle de dcision pour les jeux somme nulle, lorigine Objectif : minimiser la perte potentielle maximale (ou linverse) Initialement formul pour des jeux somme nulle deux joueurs jouant alternativement Des extensions existent pour couvrir des jeux plus complexes galement

. Objectifs . . Implmenter un algorithme Minimax pour un jeu bien connu 1 . Adapter lalgorithme pour permettre une machine de jouer contre un joueur humain 2
3

. Amliorer lalgorithme grce un lagage

Algorithme Minimax et lagage

3 / 17

Introduction Minimax lagage Projet

Contexte Thorme Exemples

. Thorme du Minimax

. Thorme . Pour tout jeu deux joueurs, somme nulle, avec un nombre fini de stratgies, il existe une valeur V et une stratgie mixte pour chaque joueur telle que (a) tant donne la stratgie du joueur 2, le meilleur gain possible pour le joueur A est V, et . (b) tant donne la stratgie du joueur B, le meilleur gain possible pour le joueur est V.

. Remarques . On est capable de borner ses propres bnfices et ceux de ladversaire

Chaque joueur minimise le gain maximum de ladversaire, et comme le jeu est somme nulle, il maximise galement son gain minimum

Algorithme Minimax et lagage

4 / 17

Introduction Minimax lagage Projet

Contexte Thorme Exemples

. Exemples

Algorithme Minimax et lagage

5 / 17

Introduction Minimax lagage Projet

Contexte Thorme Exemples

. Exemples

Algorithme Minimax et lagage

5 / 17

Introduction Minimax lagage Projet

Survol Dfinitions Heuristique Principe Algorithme Exemple

. Algorithme Minimax

. Survol . Thorie des jeux combinatoires (actions, sommes, choix finis)


Mouvements alterns (un joueur aprs lautre, jusqu la fin du jeu) A chaque coup, les joueurs tentent de maximiser leur gain minimum et donc de minimiser le gain maximal de leur adversaire On appelle Minimax la fois lalgorithme et la valeur obtenue par excution de cet algorithme

Algorithme Minimax et lagage

6 / 17

Introduction Minimax lagage Projet

Survol Dfinitions Heuristique Principe Algorithme Exemple

. Algorithme Minimax

. Survol . Thorie des jeux combinatoires (actions, sommes, choix finis)


Mouvements alterns (un joueur aprs lautre, jusqu la fin du jeu) A chaque coup, les joueurs tentent de maximiser leur gain minimum et donc de minimiser le gain maximal de leur adversaire On appelle Minimax la fois lalgorithme et la valeur obtenue par excution de cet algorithme Lordinateur va calculer la valeur Minimax de chaque coup possible un instant donn et choisir celui qui maximise le gain minimum

Lalgorithme Minimax est utilis pour dcider du prochain coup jouer

Algorithme Minimax et lagage

6 / 17

Introduction Minimax lagage Projet

Survol Dfinitions Heuristique Principe Algorithme Exemple

. Algorithme Minimax
. Quelques dfinitions . Le joueur A est appel le joueur maximisant (ou joueur), le joueur B est appel le joueur minimisant (ou adversaire)

par ex : lordinateur est le joueur maximisant puisquil va excuter lalgorithme Minimax afin de jouer contre le joueur humain

On appelle tat du jeu une configuration du jeu

par ex : ltat dun jeu dchec est lenregistrement de toutes les positions des pices sur lchiquier

On appelle tat initial ltat de jeu avant que les joueurs aient jou, et tat final un tat mettant fin au jeu (gagn, perdu, galit) On appelle gain dun tat la valeur gagne par un joueur sil atteint ltat donn On appelle coup une action permettant de passer le jeu dun tat un autre

par ex : dplacer un pion de X en Y

On appelle fils dun tat ei , nots f(ei ) les tats atteignables depuis ltat ei exploration dun arbre de jeu

Algorithme Minimax et lagage

7 / 17

Introduction Minimax lagage Projet

Survol Dfinitions Heuristique Principe Algorithme Exemple

. Algorithme Minimax
. Heuristique . Pour dterminer les gains, on dfinit une fonction heuristique, note h, qui attribue une valeur un tat du jeu

empirique (donc souvent la partie la plus complexe dfinir) non gnrique ( dfinir pour chaque jeu)

Comment interprter une heuristique ?

Cest la valeur que lon peut esprer gagner en jouant le coup

Quand utiliser une heuristique ?


impossible de dterminer les gains rels dun tat trop coteux de calculer les gains dun tat (combinatoire) Si ltat ei est gagnant pour le joueur valuant, h(ei ) = + Si ltat ei est perdant pour le joueur valuant, h(ei ) = Sinon, donner une valeur entire dtermine de manire empirique

Comment dfinir une heuristique ?


par ex : aux checs une heuristique simpliste consiste calculer la diffrence entre le nombre de pices blanches et le nombre de pices noires

Algorithme Minimax et lagage

8 / 17

Introduction Minimax lagage Projet

Survol Dfinitions Heuristique Principe Algorithme Exemple

. Algorithme Minimax
. Principe . On visite larbre de jeu pour faire remonter la racine la valeur Minimax La valeur est calcule rcursivement comme suit Minimax(e) = h(e), si e est une feuille de larbre Minimax(e) = max(Minimax(e1 ), . . . , Minimax(en )), si e est un nud Joueur (maximisant) avec les fils f(e) = {e1 , . . . , en } Minimax(e) = min(Minimax(e1 ), . . . , Minimax(en )), si e est un nud adversaire (minimisant) avec les fils f(e) = {e1 , . . . , en } . . Profondeur limite . Pour limiter les calculs, on dfinit une profondeur limite au calcul (ou horizon)

Les nuds ne sont plus dvelopps partir de cette profondeur, on calcule alors leur valeur heuristique une feuille de larbre est donc soit un tat final (gagn, perdu, galit), soit un tat non final mais une profondeur limite

Algorithme Minimax et lagage

9 / 17

Introduction Minimax lagage Projet

Survol Dfinitions Heuristique Principe Algorithme Exemple

. Algorithme Minimax

. Fonction Minimax(e, d) . Entres : nud e, profondeur d Sorties : Valeur Minimax du nud e


si final ?(e) ou (d == 0) alors return h(e) sinon si joueur ?(e) alors return max{Minimax(ei , d 1) ei f(e)} sinon return min{Minimax(ei , d 1) ei f(e)}

Algorithme Minimax et lagage

10 / 17

Introduction Minimax lagage Projet

Survol Dfinitions Heuristique Principe Algorithme Exemple

. Algorithme Minimax

Algorithme Minimax et lagage

11 / 17

Introduction Minimax lagage Projet

Survol Dfinitions Heuristique Principe Algorithme Exemple

. Algorithme Minimax

Dveloppement f(e)

Algorithme Minimax et lagage

11 / 17

Introduction Minimax lagage Projet

Survol Dfinitions Heuristique Principe Algorithme Exemple

. Algorithme Minimax

Dveloppement f(e)

Algorithme Minimax et lagage

11 / 17

Introduction Minimax lagage Projet

Survol Dfinitions Heuristique Principe Algorithme Exemple

. Algorithme Minimax

Evaluation h(e)

12

10

5
11 / 17

Algorithme Minimax et lagage

Introduction Minimax lagage Projet

Survol Dfinitions Heuristique Principe Algorithme Exemple

. Algorithme Minimax

Rcupration min{Minimax(ei , d 1) ei f(e)}

min
10 3 5
11 / 17

12

Algorithme Minimax et lagage

Introduction Minimax lagage Projet

Survol Dfinitions Heuristique Principe Algorithme Exemple

. Algorithme Minimax

Dveloppement f(e)

12

10

5
11 / 17

Algorithme Minimax et lagage

Introduction Minimax lagage Projet

Survol Dfinitions Heuristique Principe Algorithme Exemple

. Algorithme Minimax

Evaluation h(e)

12

10

10
11 / 17

Algorithme Minimax et lagage

Introduction Minimax lagage Projet

Survol Dfinitions Heuristique Principe Algorithme Exemple

. Algorithme Minimax

Rcupration min{Minimax(ei , d 1) ei f(e)}

12

10

min
5 8

10
11 / 17

Algorithme Minimax et lagage

Introduction Minimax lagage Projet

Survol Dfinitions Heuristique Principe Algorithme Exemple

. Algorithme Minimax

Dveloppement f(e)

12

10

10
11 / 17

Algorithme Minimax et lagage

Introduction Minimax lagage Projet

Survol Dfinitions Heuristique Principe Algorithme Exemple

. Algorithme Minimax

Evaluation h(e)

12

10

10

13

11
11 / 17

Algorithme Minimax et lagage

Introduction Minimax lagage Projet

Survol Dfinitions Heuristique Principe Algorithme Exemple

. Algorithme Minimax

Rcupration min{Minimax(ei , d 1) ei f(e)}

min
10 3 5 5 8 10 13

12

11
11 / 17

Algorithme Minimax et lagage

Introduction Minimax lagage Projet

Survol Dfinitions Heuristique Principe Algorithme Exemple

. Algorithme Minimax

Rcupration max{Minimax(ei , d 1) ei f(e)}

. 5

max

12

10

10

13

11
11 / 17

Algorithme Minimax et lagage

Introduction Minimax lagage Projet

Survol Dfinitions Heuristique Principe Algorithme Exemple

. Algorithme Minimax

. 5

Minimax = 5

12

10

10

13

11

Algorithme Minimax et lagage

11 / 17

Introduction Minimax lagage Projet

Motivation Principe Algorithme Exemple

. lagage
. Problme . Lalgorithme Minimax dveloppe toutes les feuilles une profondeur limite

Il arrive pourtant quon sache pertinemment quune feuille sera inintressante

. Solution : les bornes et . Pour laguer certaines branches de larbre de jeu, on dfinit deux bornes, et est une approximation de la borne infrieure de la valeur du nud = h(e) sur les feuilles, et initialise = ailleurs

sur les nuds joueurs, elle est maintenue gale la plus grande valeur obtenue sur les fils visits jusque-l sur les nuds adversaires, elle est gale la valeur de son prdcesseur

est une approximation de la borne suprieure de la valeur du nud


= h(e) sur les feuilles, et initialise = + ailleurs sur les nuds adversaires, elle est maintenue gale la plus petite valeur obtenue sur les fils visits jusque-l, sur les nuds joueurs elle est gale la valeur de son prdcesseur

Algorithme Minimax et lagage

12 / 17

Introduction Minimax lagage Projet

Motivation Principe Algorithme Exemple

. lagage
. Principe . Lalgorithme est identique Minimax, de signature AlphaBeta(e, , , d)

On ajoute les paramtres et (initialement et +) Les nuds lagus sont ceux tels que h(e) [, ] et Les nuds non lagus sont ceux tels que :

. .

[, +] [, ] = [, b] [a, +]

ou avec b + ou avec a

Coupure
Algorithme Minimax et lagage

Coupure
13 / 17

Introduction Minimax lagage Projet

Motivation Principe Algorithme Exemple

. lagage
. Principe . Lalgorithme est identique Minimax, de signature AlphaBeta(e, , , d)

On ajoute les paramtres et (initialement et +) Les nuds lagus sont ceux tels que h(e) [, ] et Les nuds non lagus sont ceux tels que :

. .

[, +] [, ] = [, b] [a, +]

ou avec b + ou avec a

m
4

in

X
5

Coupure
Algorithme Minimax et lagage

Coupure
13 / 17

Introduction Minimax lagage Projet

Motivation Principe Algorithme Exemple

. lagage
. Principe . Lalgorithme est identique Minimax, de signature AlphaBeta(e, , , d)

On ajoute les paramtres et (initialement et +) Les nuds lagus sont ceux tels que h(e) [, ] et Les nuds non lagus sont ceux tels que :

. . 5
m

[, +] [, ] = [, b] [a, +]

ou avec b + ou avec a

.
ax
4

Coupure
Algorithme Minimax et lagage

Coupure
13 / 17

Introduction Minimax lagage Projet

Motivation Principe Algorithme Exemple

. lagage
. Principe . Lalgorithme est identique Minimax, de signature AlphaBeta(e, , , d)

On ajoute les paramtres et (initialement et +) Les nuds lagus sont ceux tels que h(e) [, ] et Les nuds non lagus sont ceux tels que :

. . 5

[, +] [, ] = [, b] [a, +]

ou avec b + ou avec a

ax

Coupure
Algorithme Minimax et lagage

Coupure
13 / 17

Introduction Minimax lagage Projet

Motivation Principe Algorithme Exemple

. lagage
. Principe . Lalgorithme est identique Minimax, de signature AlphaBeta(e, , , d)

On ajoute les paramtres et (initialement et +) Les nuds lagus sont ceux tels que h(e) [, ] et Les nuds non lagus sont ceux tels que :

. . 5

[, +] [, ] = [, b] [a, +]

ou avec b + ou avec a

. 4

in
5

Coupure
Algorithme Minimax et lagage

Coupure
13 / 17

Introduction Minimax lagage Projet

Motivation Principe Algorithme Exemple

. lagage
. Fonction Alphabeta(e, d, , ) .
si final ?(e) ou (d == 0) alors return h(e) sinon si joueur ?(e) alors v = pour fi f(e) faire v = max(v, Alphabeta(fi , d 1, , )) si v > alors return v = max(, v) sinon v = + pour tous les fi f(e) faire v = min(v, Alphabeta(fi , d 1, , )) si > v alors return v = min(, v)

return v

Algorithme Minimax et lagage

14 / 17

Introduction Minimax lagage Projet

Motivation Principe Algorithme Exemple

[, ] = [, +]

Algorithme Minimax et lagage

15 / 17

Introduction Minimax lagage Projet

Motivation Principe Algorithme Exemple

[, ] = [, +]

Algorithme Minimax et lagage

15 / 17

Introduction Minimax lagage Projet

Motivation Principe Algorithme Exemple

[, ] = [, +]

Algorithme Minimax et lagage

15 / 17

Introduction Minimax lagage Projet

Motivation Principe Algorithme Exemple

[, ] = [, +]

12

Algorithme Minimax et lagage

15 / 17

Introduction Minimax lagage Projet

Motivation Principe Algorithme Exemple

[, ] = [, +]

12

10

Algorithme Minimax et lagage

15 / 17

Introduction Minimax lagage Projet

Motivation Principe Algorithme Exemple

[, ] = [, +]

12

10

Algorithme Minimax et lagage

15 / 17

Introduction Minimax lagage Projet

Motivation Principe Algorithme Exemple

[, ] = [, +]

12

10

Algorithme Minimax et lagage

15 / 17

Introduction Minimax lagage Projet

Motivation Principe Algorithme Exemple

[, ] = [3, +]

min
10 3 5

12

Algorithme Minimax et lagage

15 / 17

Introduction Minimax lagage Projet

Motivation Principe Algorithme Exemple

[, ] = [3, +]

12

10

Algorithme Minimax et lagage

15 / 17

Introduction Minimax lagage Projet

Motivation Principe Algorithme Exemple

[, ] = [3, +]

12

10

Algorithme Minimax et lagage

15 / 17

Introduction Minimax lagage Projet

Motivation Principe Algorithme Exemple

[, ] = [3, +]

12

10

Algorithme Minimax et lagage

15 / 17

Introduction Minimax lagage Projet

Motivation Principe Algorithme Exemple

[, ] = [3, +]

12

10

10

Algorithme Minimax et lagage

15 / 17

Introduction Minimax lagage Projet

Motivation Principe Algorithme Exemple

[, ] = [5, +]

12

10

min
5 8

10

Algorithme Minimax et lagage

15 / 17

Introduction Minimax lagage Projet

Motivation Principe Algorithme Exemple

[, ] = [5, +]

12

10

10

Algorithme Minimax et lagage

15 / 17

Introduction Minimax lagage Projet

Motivation Principe Algorithme Exemple

[, ] = [5, +]

12

10

10

13

Algorithme Minimax et lagage

15 / 17

Introduction Minimax lagage Projet

Motivation Principe Algorithme Exemple

[, ] = [5, +]

12

10

10

13

Algorithme Minimax et lagage

15 / 17

Introduction Minimax lagage Projet

Motivation Principe Algorithme Exemple

[, ] = [5, +]

min
12 10 3 5 5 8 10 13 2
Algorithme Minimax et lagage

X X
15 / 17

Introduction Minimax lagage Projet

Motivation Principe Algorithme Exemple

[, ] = [5, +]

X X

12

10

10

13

Algorithme Minimax et lagage

15 / 17

Introduction Minimax lagage Projet

Motivation Principe Algorithme Exemple

. 5

max

X X

12

10

10

13

Algorithme Minimax et lagage

15 / 17

Introduction Minimax lagage Projet

Motivation Principe Algorithme Exemple

. 5

Minimax = 5

X X

12

10

10

13

Algorithme Minimax et lagage

15 / 17

Introduction Minimax lagage Projet

. Instructions et prcautions pour le projet


. Mthodologie . . Dfinir la structure reprsentant les tats (donnes + fonctions) 1 . Implmenter laffichage de jeu et la sauvegarde/le chargement de partie 2 . Implmenter la boucle de jeu pour 2 joueurs humains . Implmenter lalgorithme Minimax basique 4
3

. Remplacer un joueur humain par lordinateur avec lalgorithme Minimax . Implmenter et intgrer llagage 6
5 7

. Amliorer les heuristiques et la difficult du jeu

. Implmenter lalgorithme Minimax, a revient implmenter... . la fonction f, pour dterminer les fils dun tat

la fonction h, pour valuer les tats la fonction final? pour dterminer si un tat est final ...

Algorithme Minimax et lagage

16 / 17

Introduction Minimax lagage Projet

. Instructions et prcautions pour le projet


. Prcautions en vrac . Penser gnrique

idalement la fonction Minimax est indpendante du jeu seules les fonctions f, h, final?, etc. sont dpendantes du domaine

Ne pas prendre le pseudo-code pour du code C


initialement Minimax renvoie une valeur entire MAIS il faut pouvoir galement renvoyer le coup jouer

La reprsentation des donnes est primordiale


La structure darbre nest pas directement manipule par le programme : ce sont des appels rcursifs Les listes (fils, coups, etc.) vont tre reprsentes par des pointeurs

tre rigoureux

Essayer dabord des heuristiques simples, puis les amliorer une fonction ds quelle est code jeux de tests Utiliser le debugger C

Algorithme Minimax et lagage

17 / 17