Exemple de conception
Jeux `
a deux joueurs : algorithme mini-MAX
un exemple de conception sur un algorithme “g´
en´
erique”
le contexte
jeux `
a deux joueurs `
a information compl`
ete et `
a somme nulle
֒dames, puissance 4, ´
echecs, othello, etc.
les joueurs jouent un coup chacun leur tour,
on veut faire jouer le programme,
USTL http://www.lifl.fr/routier 1
Exemple de conception
Pr´
esentation du probl`
eme
Le d´
eroulement des parties d’un jeu peut ˆ
etre repr´
esent´
e par un arbre de jeu :
racine = situation initiale,
nœuds = une situation l´
egale du jeu
fils d’un nœud = situations filles, c-`
a-d que l’on peut atteindre `
a partir de
ce nœud en respectant les r`
egles du jeu
une branche = une s´
equence de coups (l´
egaux) dans une partie
Faire jouer le programme :
choisir parmi les fils de la racine le “meilleur” coup `
a jouer
cela se fait en anticipant sur le devenir des situations (pas de calcul `
a
court terme) : “on calcule des coups en avant”
USTL http://www.lifl.fr/routier 2
Exemple de conception
Le mini-MAX
Il faut disposer d’un fonction num´
erique φqui attribue une valeur
num´
erique `
a une situation de jeu
φ:Situation 7→ Nombre
cette fonction est croissante avec la qualit´
e de la situation.
Le but du programme est de maximiser la situation atteignable.
Le but de son adversaire est inverse : il cherche `
a minimiser la situation
atteignable
Il faut tenir compte du jeu de l’adversaire dans le calcul de l’anticipation
des coups jou´
es
le programme suppose que l’adversaire joue au mieux
et donc qu’il joue comme le programme (avec un objectif inverse)
USTL http://www.lifl.fr/routier 3
Exemple de conception
L’algorithme
minmax(situation, profondeur, joueur)
situation la situation courante (racine de l’arbre de jeu)
profondeur le nombre de coups d’anticipation
joueur min ou MAX
appel : minmax(situation initiale,profondeur,MAX)
minmax(situation, prof, joueur) =
si prof = profMax ou situation est terminale
retourner φ(situation)
sinon
Fils = les situations filles de situation
si joueur = MAX
retourner maxfF ils {minmax(f, prof 1, min)}
sinon // joueur = min
retourner minfF ils {minmax(f, prof 1, MAX)}
fin si
fin si
USTL http://www.lifl.fr/routier 4
Exemple de conception
Remarques
effet d’horizon (si arbre d´
evelopp´
e partiellement)
algorithme exponentiel
֒peut ˆ
etre am´
elior´
e en pratique par l’algorithme αβ
tel quel retourne la valeur esp´
er´
ee de la meilleure situation fille, doit ˆ
etre
adapt´
e pour retourner la situation
construction de l’arbre de jeu implicite
algorithme g´
en´
erique : pour tout jeu `
a deux joueurs `
a information
compl`
ete
difficult´
e (la seule restante) = fournir une fonction d’´
evaluation φpour
le jeu concern´
e
֒il existe plusieurs fonctions pour un mˆ
eme jeu (influencent la
strat´
egie de jeu)
USTL http://www.lifl.fr/routier 5
1 / 10 100%