Faire jouer l'ordinateur -...
Transcript of Faire jouer l'ordinateur -...
![Page 1: Faire jouer l'ordinateur - univ-lille.frjeia.fil.univ-lille1.fr/slides/ateliers/jouer/Comment...Faire jouer l'ordinateur synthèse – algorithme min-MAX 1) développer l'arbre de](https://reader033.fdocument.pub/reader033/viewer/2022052012/60286a0034e92940dd1b5216/html5/thumbnails/1.jpg)
Université Lille 1
Faire jouer l'ordinateur
Jean-Christophe [email protected]
Faire jouer l'ordinateur
![Page 2: Faire jouer l'ordinateur - univ-lille.frjeia.fil.univ-lille1.fr/slides/ateliers/jouer/Comment...Faire jouer l'ordinateur synthèse – algorithme min-MAX 1) développer l'arbre de](https://reader033.fdocument.pub/reader033/viewer/2022052012/60286a0034e92940dd1b5216/html5/thumbnails/2.jpg)
2Université Lille 1
Faire jouer l'ordinateur
que faut-il jouer ?
![Page 3: Faire jouer l'ordinateur - univ-lille.frjeia.fil.univ-lille1.fr/slides/ateliers/jouer/Comment...Faire jouer l'ordinateur synthèse – algorithme min-MAX 1) développer l'arbre de](https://reader033.fdocument.pub/reader033/viewer/2022052012/60286a0034e92940dd1b5216/html5/thumbnails/3.jpg)
3Université Lille 1
Faire jouer l'ordinateur
quels jeux ?
Jeux à 2 joueurs jouant en alternanceà information complèteles joueurs ont toute l'informationles joueurs ont la même informationà somme nulleles intérêts des joueurs sont opposésla somme des gains est nulle : ce qui est gagné par l'un est perdu par l'autre
les échecs, les dames, le go, awele, puissance 4, othello, tic-tac-toe, etc.
![Page 4: Faire jouer l'ordinateur - univ-lille.frjeia.fil.univ-lille1.fr/slides/ateliers/jouer/Comment...Faire jouer l'ordinateur synthèse – algorithme min-MAX 1) développer l'arbre de](https://reader033.fdocument.pub/reader033/viewer/2022052012/60286a0034e92940dd1b5216/html5/thumbnails/4.jpg)
4Université Lille 1
Faire jouer l'ordinateur
http://www.jeu.fr/jeu/tic-tac-toe
![Page 5: Faire jouer l'ordinateur - univ-lille.frjeia.fil.univ-lille1.fr/slides/ateliers/jouer/Comment...Faire jouer l'ordinateur synthèse – algorithme min-MAX 1) développer l'arbre de](https://reader033.fdocument.pub/reader033/viewer/2022052012/60286a0034e92940dd1b5216/html5/thumbnails/5.jpg)
5Université Lille 1
Faire jouer l'ordinateur
question
Comment faire jouer l'ordinateur ?Comment programmer l'ordinateur pour jouer ?
![Page 6: Faire jouer l'ordinateur - univ-lille.frjeia.fil.univ-lille1.fr/slides/ateliers/jouer/Comment...Faire jouer l'ordinateur synthèse – algorithme min-MAX 1) développer l'arbre de](https://reader033.fdocument.pub/reader033/viewer/2022052012/60286a0034e92940dd1b5216/html5/thumbnails/6.jpg)
6Université Lille 1
Faire jouer l'ordinateur
9 coups possiblesque faut-il jouer ?
××
× ×
× ××
××
× ×º
º
׺…
׺
׺׺×
××
×
19 683 situations différentes
255 168 parties différentes 131 184 victoires de x 77 904 victoires de o 46 080 égalités
comment gérer toutes ces situations ?
![Page 7: Faire jouer l'ordinateur - univ-lille.frjeia.fil.univ-lille1.fr/slides/ateliers/jouer/Comment...Faire jouer l'ordinateur synthèse – algorithme min-MAX 1) développer l'arbre de](https://reader033.fdocument.pub/reader033/viewer/2022052012/60286a0034e92940dd1b5216/html5/thumbnails/7.jpg)
7Université Lille 1
Faire jouer l'ordinateur
aux échecs :
entre 1043 et 1050 situations possibles
10123 parties possibles…1080 atomes dans l'univers
![Page 8: Faire jouer l'ordinateur - univ-lille.frjeia.fil.univ-lille1.fr/slides/ateliers/jouer/Comment...Faire jouer l'ordinateur synthèse – algorithme min-MAX 1) développer l'arbre de](https://reader033.fdocument.pub/reader033/viewer/2022052012/60286a0034e92940dd1b5216/html5/thumbnails/8.jpg)
8Université Lille 1
Faire jouer l'ordinateur
׺׺
×׺
º×׺ º
º
c'est à x de jouer
x peut-il gagner ?
quel est le meilleur coup à jouer ?
º
![Page 9: Faire jouer l'ordinateur - univ-lille.frjeia.fil.univ-lille1.fr/slides/ateliers/jouer/Comment...Faire jouer l'ordinateur synthèse – algorithme min-MAX 1) développer l'arbre de](https://reader033.fdocument.pub/reader033/viewer/2022052012/60286a0034e92940dd1b5216/html5/thumbnails/9.jpg)
9Université Lille 1
Faire jouer l'ordinateur
ºº
xx
x
calculer/développer l'arbre de jeu pour
activité
![Page 10: Faire jouer l'ordinateur - univ-lille.frjeia.fil.univ-lille1.fr/slides/ateliers/jouer/Comment...Faire jouer l'ordinateur synthèse – algorithme min-MAX 1) développer l'arbre de](https://reader033.fdocument.pub/reader033/viewer/2022052012/60286a0034e92940dd1b5216/html5/thumbnails/10.jpg)
10Université Lille 1
Faire jouer l'ordinateur
Situation initiale
coup 2coup 1 coup 3
1.1 1.2 1.3
1.2.31.2.21.2.1
3.1 3.2 3.3
3.2.33.2.23.2.1
1 partie1 autre partie
arbre de jeu
![Page 11: Faire jouer l'ordinateur - univ-lille.frjeia.fil.univ-lille1.fr/slides/ateliers/jouer/Comment...Faire jouer l'ordinateur synthèse – algorithme min-MAX 1) développer l'arbre de](https://reader033.fdocument.pub/reader033/viewer/2022052012/60286a0034e92940dd1b5216/html5/thumbnails/11.jpg)
11Université Lille 1
Faire jouer l'ordinateur
caractéristiques
une situation initialeà chaque tour les règles du jeu déterminent les situations suivantes possibles/atteignables
jouer c'est choisir la prochaine situation de jeuune partie = suite de coups de chacun des joueurs= suite des situations choisies par les joueurs
![Page 12: Faire jouer l'ordinateur - univ-lille.frjeia.fil.univ-lille1.fr/slides/ateliers/jouer/Comment...Faire jouer l'ordinateur synthèse – algorithme min-MAX 1) développer l'arbre de](https://reader033.fdocument.pub/reader033/viewer/2022052012/60286a0034e92940dd1b5216/html5/thumbnails/12.jpg)
12Université Lille 1
Faire jouer l'ordinateur
une branche =
déroulement d' une partie
problème :
choisir une branche qui mène à une victoireou
choisir un coup maintenant pour gagner plus tard ?
ºº
xx
x
![Page 13: Faire jouer l'ordinateur - univ-lille.frjeia.fil.univ-lille1.fr/slides/ateliers/jouer/Comment...Faire jouer l'ordinateur synthèse – algorithme min-MAX 1) développer l'arbre de](https://reader033.fdocument.pub/reader033/viewer/2022052012/60286a0034e92940dd1b5216/html5/thumbnails/13.jpg)
13Université Lille 1
Faire jouer l'ordinateur
1) calculer l'arbre de jeu
2) choisir la/les meilleures parmi les situations atteintes
solution :
calculer des coups « à l'avance »
![Page 14: Faire jouer l'ordinateur - univ-lille.frjeia.fil.univ-lille1.fr/slides/ateliers/jouer/Comment...Faire jouer l'ordinateur synthèse – algorithme min-MAX 1) développer l'arbre de](https://reader033.fdocument.pub/reader033/viewer/2022052012/60286a0034e92940dd1b5216/html5/thumbnails/14.jpg)
14Université Lille 1
Faire jouer l'ordinateur
1) comment comparer les situations atteintes ?
2) combien de « coups à l'avance » ?
problèmes :
![Page 15: Faire jouer l'ordinateur - univ-lille.frjeia.fil.univ-lille1.fr/slides/ateliers/jouer/Comment...Faire jouer l'ordinateur synthèse – algorithme min-MAX 1) développer l'arbre de](https://reader033.fdocument.pub/reader033/viewer/2022052012/60286a0034e92940dd1b5216/html5/thumbnails/15.jpg)
15Université Lille 1
Faire jouer l'ordinateur
à chaque situation atteinte on attribue une
valeur numérique croissante avec la qualité de la situation
principe :
![Page 16: Faire jouer l'ordinateur - univ-lille.frjeia.fil.univ-lille1.fr/slides/ateliers/jouer/Comment...Faire jouer l'ordinateur synthèse – algorithme min-MAX 1) développer l'arbre de](https://reader033.fdocument.pub/reader033/viewer/2022052012/60286a0034e92940dd1b5216/html5/thumbnails/16.jpg)
16Université Lille 1
Faire jouer l'ordinateur
activité
P < N < G
par exemple
P=-1 < N=0 < G=+1
attribuer des valeurs aux situations atteintespour l'arbre de
ºº
xx
x
quelles valeurs ?
![Page 17: Faire jouer l'ordinateur - univ-lille.frjeia.fil.univ-lille1.fr/slides/ateliers/jouer/Comment...Faire jouer l'ordinateur synthèse – algorithme min-MAX 1) développer l'arbre de](https://reader033.fdocument.pub/reader033/viewer/2022052012/60286a0034e92940dd1b5216/html5/thumbnails/17.jpg)
17Université Lille 1
Faire jouer l'ordinateur
principe :
bien choisir c'est...
viser la situation avec la plus grande valeur
propager les valeurs « vers le haut »maximiser la valeur de la situation atteinte
![Page 18: Faire jouer l'ordinateur - univ-lille.frjeia.fil.univ-lille1.fr/slides/ateliers/jouer/Comment...Faire jouer l'ordinateur synthèse – algorithme min-MAX 1) développer l'arbre de](https://reader033.fdocument.pub/reader033/viewer/2022052012/60286a0034e92940dd1b5216/html5/thumbnails/18.jpg)
18Université Lille 1
Faire jouer l'ordinateur
coup 2coup 1 coup 3
1.1 1.2 1.3
1.2.31.2.21.2.1
3.1 3.2 3.3
3.2.33.2.23.2.1
init
12 -5 45 22 34 -10 22 7 4 -3
-5 34 7
![Page 19: Faire jouer l'ordinateur - univ-lille.frjeia.fil.univ-lille1.fr/slides/ateliers/jouer/Comment...Faire jouer l'ordinateur synthèse – algorithme min-MAX 1) développer l'arbre de](https://reader033.fdocument.pub/reader033/viewer/2022052012/60286a0034e92940dd1b5216/html5/thumbnails/19.jpg)
19Université Lille 1
Faire jouer l'ordinateur
propager ?
la valeur d'une situationdépend des valeurs de ses
situations suivantes
× ×º
º
׺…valeur
1
× G
×
valeur2
valeurn...
valeurquelle valeur ?
![Page 20: Faire jouer l'ordinateur - univ-lille.frjeia.fil.univ-lille1.fr/slides/ateliers/jouer/Comment...Faire jouer l'ordinateur synthèse – algorithme min-MAX 1) développer l'arbre de](https://reader033.fdocument.pub/reader033/viewer/2022052012/60286a0034e92940dd1b5216/html5/thumbnails/20.jpg)
20Université Lille 1
Faire jouer l'ordinateur
à chaque fois que l'on doit choisir
sélectionner parmi les situations suivantes celle avec la plus grande valeur attribuer sa valeur à la situation actuelle
maximiser
× ×º
º
׺…P GN
× G
×
G
P < N < G
G = max(N,P,G)
![Page 21: Faire jouer l'ordinateur - univ-lille.frjeia.fil.univ-lille1.fr/slides/ateliers/jouer/Comment...Faire jouer l'ordinateur synthèse – algorithme min-MAX 1) développer l'arbre de](https://reader033.fdocument.pub/reader033/viewer/2022052012/60286a0034e92940dd1b5216/html5/thumbnails/21.jpg)
21Université Lille 1
Faire jouer l'ordinateur
coup 2coup 1 coup 3
1.1 1.2 1.3
1.2.31.2.21.2.1
3.1 3.2 3.3
3.2.33.2.23.2.1
initpgme
pgme
pgme
advers.
advers.
valeurs
comment propager ?
il faut prendre en compte l'adversaire...
![Page 22: Faire jouer l'ordinateur - univ-lille.frjeia.fil.univ-lille1.fr/slides/ateliers/jouer/Comment...Faire jouer l'ordinateur synthèse – algorithme min-MAX 1) développer l'arbre de](https://reader033.fdocument.pub/reader033/viewer/2022052012/60286a0034e92940dd1b5216/html5/thumbnails/22.jpg)
22Université Lille 1
Faire jouer l'ordinateur
simuler l'adversaire ?
hypothèse : l'adversaire joue le mieux possiblerappel : les intérêts de l'adversaire sont opposés
c'est quoi le « mieux possible » pour le programme ?
c'est lui-même...
![Page 23: Faire jouer l'ordinateur - univ-lille.frjeia.fil.univ-lille1.fr/slides/ateliers/jouer/Comment...Faire jouer l'ordinateur synthèse – algorithme min-MAX 1) développer l'arbre de](https://reader033.fdocument.pub/reader033/viewer/2022052012/60286a0034e92940dd1b5216/html5/thumbnails/23.jpg)
23Université Lille 1
Faire jouer l'ordinateur
donc à chaque fois que l'on doit choisir à la place de l'adversaire
sélectionner parmi les situations suivantes celle avec la plus petite valeur attribuer sa valeur à la situation actuelle
× ×º
º
׺… P GN
× P
×
P
mais l'adversaire a un objectif opposé, il doit donc… minimiser
P < N < GP = min(N,P,G)
![Page 24: Faire jouer l'ordinateur - univ-lille.frjeia.fil.univ-lille1.fr/slides/ateliers/jouer/Comment...Faire jouer l'ordinateur synthèse – algorithme min-MAX 1) développer l'arbre de](https://reader033.fdocument.pub/reader033/viewer/2022052012/60286a0034e92940dd1b5216/html5/thumbnails/24.jpg)
24Université Lille 1
Faire jouer l'ordinateur
coup 2coup 1 coup 3
1.1 1.2 1.3
1.2.31.2.21.2.1
3.1 3.2 3.3
3.2.33.2.23.2.1
initpgme
pgme
pgme
advers.
advers.
MAX
MAX
MAX
min
min
valeurs
l'algorithme min-MAX
![Page 25: Faire jouer l'ordinateur - univ-lille.frjeia.fil.univ-lille1.fr/slides/ateliers/jouer/Comment...Faire jouer l'ordinateur synthèse – algorithme min-MAX 1) développer l'arbre de](https://reader033.fdocument.pub/reader033/viewer/2022052012/60286a0034e92940dd1b5216/html5/thumbnails/25.jpg)
25Université Lille 1
Faire jouer l'ordinateur
activité
propager les valeurs pour l'arbre de
ºº
xx
x
quel est le meilleur coup à jouer?
que peut-on dire de cette situation ?
![Page 26: Faire jouer l'ordinateur - univ-lille.frjeia.fil.univ-lille1.fr/slides/ateliers/jouer/Comment...Faire jouer l'ordinateur synthèse – algorithme min-MAX 1) développer l'arbre de](https://reader033.fdocument.pub/reader033/viewer/2022052012/60286a0034e92940dd1b5216/html5/thumbnails/26.jpg)
26Université Lille 1
Faire jouer l'ordinateur
synthèse – algorithme min-MAX
1) développer l'arbre de jeu2) attribuer des valeurs aux situations atteintes3) propager les valeurs du bas vers le haut :
c'est au tour du programme de jouer : on sélectionne la plus grande des valeurs suivantes on attribue cette valeur à la situation actuelle
c'est au tour de l'adversaire de joueron le simule : on sélectionne la plus petite des valeurs suivantes on attribue cette valeur à la situation actuelle
si on n'a pas fini on recommence avec le niveau « au dessus »
4) arrivé « en haut » on choisit la situation qui a obtenu la plus grande valeur
![Page 27: Faire jouer l'ordinateur - univ-lille.frjeia.fil.univ-lille1.fr/slides/ateliers/jouer/Comment...Faire jouer l'ordinateur synthèse – algorithme min-MAX 1) développer l'arbre de](https://reader033.fdocument.pub/reader033/viewer/2022052012/60286a0034e92940dd1b5216/html5/thumbnails/27.jpg)
27Université Lille 1
Faire jouer l'ordinateur
appel initial :minmax(situation_initiale,profondeur,MAX)
minmax(situation, prof, joueur) = si prof = 0 ou situation est une fin de partie retourner eval(situation) sinon situFilles = les situations filles légales de situation si joueur = MAX retourner max
fille∈situFilles{minmax(fille,prof-1,min)}
sinon // joueur = min retourner min
fille∈situFilles{minmax(fille,prof-1,MAX)}
fin si fin si
algorithme min-MAX
![Page 28: Faire jouer l'ordinateur - univ-lille.frjeia.fil.univ-lille1.fr/slides/ateliers/jouer/Comment...Faire jouer l'ordinateur synthèse – algorithme min-MAX 1) développer l'arbre de](https://reader033.fdocument.pub/reader033/viewer/2022052012/60286a0034e92940dd1b5216/html5/thumbnails/28.jpg)
28Université Lille 1
Faire jouer l'ordinateur
le plus souvent il n'est pas possible de calculer
l'arbre de jeu complet
choisir un nombre de coups calculés à l'avance et
définir une fonction d'évaluation
![Page 29: Faire jouer l'ordinateur - univ-lille.frjeia.fil.univ-lille1.fr/slides/ateliers/jouer/Comment...Faire jouer l'ordinateur synthèse – algorithme min-MAX 1) développer l'arbre de](https://reader033.fdocument.pub/reader033/viewer/2022052012/60286a0034e92940dd1b5216/html5/thumbnails/29.jpg)
29Université Lille 1
Faire jouer l'ordinateur
fonction d'évaluation
exemple : othello(max = noir)
1) valeur = nb noirs – nb blancs
2) donnez une valeur aux cases somme des valeurs des cases occupées par les noirs – somme des valeurs des cases occupées par les blancs
![Page 30: Faire jouer l'ordinateur - univ-lille.frjeia.fil.univ-lille1.fr/slides/ateliers/jouer/Comment...Faire jouer l'ordinateur synthèse – algorithme min-MAX 1) développer l'arbre de](https://reader033.fdocument.pub/reader033/viewer/2022052012/60286a0034e92940dd1b5216/html5/thumbnails/30.jpg)
30Université Lille 1
Faire jouer l'ordinateur
problème : l'effet d'horizon
qualité du jeu du programme : 1) nombre de coups calculés2) pertinence fonction d'évaluation
![Page 31: Faire jouer l'ordinateur - univ-lille.frjeia.fil.univ-lille1.fr/slides/ateliers/jouer/Comment...Faire jouer l'ordinateur synthèse – algorithme min-MAX 1) développer l'arbre de](https://reader033.fdocument.pub/reader033/viewer/2022052012/60286a0034e92940dd1b5216/html5/thumbnails/31.jpg)
31Université Lille 1
Faire jouer l'ordinateur
׺
×
ººMAX
××
º
×
ºº ××
º
×
ºº
××
º
×
ºº
××
º
×
ººmin
MAX
min
MAX
××
º
×
ºº
º
××
º
×
ºº
º
××
º
×
ºº º
××
º
×
ºº
º
××
º
×
ºº
º ××
º
×
ºº º ××
º
×
ºº
º××
º
×
ºº
º××
º
×
ºº
º
××
º
×
ºº º ××
º
×
ºº
º×׺
×
ºº
º
××
º
×
ºº
º×
××
º
×
ºº
º× ××
º
×
ºº
º
×
××
º
×
ºº
º×
º
××
º
×
ºº
º×
×׺
×
ºº
º
××׺
×
ºº
º ×
º×׺
×
ºº
º
××׺
×
ºº
º ×
º
exemple : tic-tac-toe
![Page 32: Faire jouer l'ordinateur - univ-lille.frjeia.fil.univ-lille1.fr/slides/ateliers/jouer/Comment...Faire jouer l'ordinateur synthèse – algorithme min-MAX 1) développer l'arbre de](https://reader033.fdocument.pub/reader033/viewer/2022052012/60286a0034e92940dd1b5216/html5/thumbnails/32.jpg)
32Université Lille 1
Faire jouer l'ordinateur
׺
×
ººMAX
××
º
×
ºº ××
º
×
ºº
××
º
×
ºº
××
º
×
ººmin
MAX
min
MAX
××
º
×
ºº
º
××
º
×
ºº
º
××
º
×
ºº º
××
º
×
ºº
º
××
º
×
ºº
º ××
º
×
ºº º ××
º
×
ºº
º××
º
×
ºº
º××
º
×
ºº
º
××
º
×
ºº º ××
º
×
ºº
º×׺
×
ºº
º
××
º
×
ºº
º×
××
º
×
ºº
º× ××
º
×
ºº
º
×
××
º
×
ºº
º×
º
××
º
×
ºº
º×
×׺
×
ºº
º
××׺
×
ºº
º ×
º×׺
×
ºº
º
××׺
×
ºº
º ×
º
victoire de MAX victoire de min
exemple : tic-tac-toe
![Page 33: Faire jouer l'ordinateur - univ-lille.frjeia.fil.univ-lille1.fr/slides/ateliers/jouer/Comment...Faire jouer l'ordinateur synthèse – algorithme min-MAX 1) développer l'arbre de](https://reader033.fdocument.pub/reader033/viewer/2022052012/60286a0034e92940dd1b5216/html5/thumbnails/33.jpg)
33Université Lille 1
Faire jouer l'ordinateur
exemple : tic-tac-toe
< <valeurs :
׺
×
ººMAX
min
MAX
min
MAX
= G victoire de MAX = P victoire de min = N match nulperdu
![Page 34: Faire jouer l'ordinateur - univ-lille.frjeia.fil.univ-lille1.fr/slides/ateliers/jouer/Comment...Faire jouer l'ordinateur synthèse – algorithme min-MAX 1) développer l'arbre de](https://reader033.fdocument.pub/reader033/viewer/2022052012/60286a0034e92940dd1b5216/html5/thumbnails/34.jpg)
34Université Lille 1
Faire jouer l'ordinateur
< <valeurs :
׺
×
ººMAX
min
MAX
min
MAX
exemple : tic-tac-toe
![Page 35: Faire jouer l'ordinateur - univ-lille.frjeia.fil.univ-lille1.fr/slides/ateliers/jouer/Comment...Faire jouer l'ordinateur synthèse – algorithme min-MAX 1) développer l'arbre de](https://reader033.fdocument.pub/reader033/viewer/2022052012/60286a0034e92940dd1b5216/html5/thumbnails/35.jpg)
35Université Lille 1
Faire jouer l'ordinateur
c'est à x de jouer
que dit l'algorithme ?
x peut-il gagner ?x peut-il gagner ?quel est le meilleur coup à jouer ?
à vous de jouer...
׺׺
×׺
º×׺ º
º
º