35
Université Lille 1 Faire jouer l'ordinateur Jean-Christophe Routier [email protected] Faire jouer l'ordinateur

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

  • Upload
    others

  • View
    1

  • Download
    0

Embed Size (px)

Citation preview

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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...

׺׺

×׺

º×׺ º

º

º