Représentation de la Connaissance. Complément Pratique 7 novembre 2006



Documents pareils
Cours de Master Recherche

Baccalauréat ES Antilles Guyane 12 septembre 2014 Corrigé

MATH ELEMENTS DU CALCUL DES PROBABILITES

Francis BISSON ( ) Kenny CÔTÉ ( ) Pierre-Luc ROGER ( ) IFT702 Planification en intelligence artificielle

Conception et Développement d un moteur d intelligence artificielle pour un jeu d échecs multiplateformes

Arithmétique binaire. Chapitre. 5.1 Notions Bit Mot

Jade. Projet Intelligence Artificielle «Devine à quoi je pense»

LES OUTILS D ALIMENTATION DU REFERENTIEL DE DB-MAIN

MapReduce. Malo Jaffré, Pablo Rauzy. 16 avril 2010 ENS. Malo Jaffré, Pablo Rauzy (ENS) MapReduce 16 avril / 15

Apprentissage par renforcement (1a/3)

ÉPREUVE COMMUNE DE TIPE Partie D

introduction Chapitre 5 Récursivité Exemples mathématiques Fonction factorielle ø est un arbre (vide) Images récursives

Arbres binaires de recherche

Jeux sous forme extensive (Jeux dynamiques)

Suivant les langages de programmation, modules plus avancés : modules imbriqués modules paramétrés par des modules (foncteurs)

Big Data et Graphes : Quelques pistes de recherche

1 de 46. Algorithmique. Trouver et Trier. Florent Hivert. Mél : Florent.Hivert@lri.fr Page personnelle : hivert

Travaux pratiques. Compression en codage de Huffman Organisation d un projet de programmation

Economie de l Incertain et des Incitations

Analyse Combinatoire

ARBRES BINAIRES DE RECHERCHE

Poker. A rendre pour le 25 avril

Baccalauréat ES/L Métropole La Réunion 13 septembre 2013 Corrigé

Formula Negator, Outil de négation de formule.

Algorithmes de recherche

Le Seven Card Stud. Club Poker 78

La fonction exponentielle

Prénom : Matricule : Sigle et titre du cours Groupe Trimestre INF1101 Algorithmes et structures de données Tous H2004. Loc Jeudi 29/4/2004

PROBABILITÉS CONDITIONNELLES

Les structures de données. Rajae El Ouazzani

TD 1 - Structures de Traits et Unification

Big Data et Graphes : Quelques pistes de recherche

I4 : Bases de Données

I. Cas de l équiprobabilité

Fonction de hachage et signatures électroniques

Introduction à la théorie des graphes. Solutions des exercices

LE PROBLEME DU PLUS COURT CHEMIN

IFT785 Approches Orientées Objets. FINAL Été Remise : Jeudi 19 août 2002 à 9h00 am

Rapport d activité. Mathieu Souchaud Juin 2007

UEO11 COURS/TD 1. nombres entiers et réels codés en mémoire centrale. Caractères alphabétiques et caractères spéciaux.

MIS 102 Initiation à l Informatique

Développement mobile MIDP 2.0 Mobile 3D Graphics API (M3G) JSR 184. Frédéric BERTIN

Algorithmes d'apprentissage

TP 2 Réseaux. Adresses IP, routage et sous-réseaux

Calculabilité Cours 3 : Problèmes non-calculables.

ANICOTTE Guillaume GUFFROY Matthieu LIMA Juliette SALLOUH Chamsseddine CAHIER DES CHARGES SI 28

Initiation à la Programmation en Logique avec SISCtus Prolog

The impacts of m-payment on financial services Novembre 2011

Résolution d équations non linéaires

TP : Shell Scripts. 1 Remarque générale. 2 Mise en jambe. 3 Avec des si. Systèmes et scripts

Code de franc-jeu. du joueur LE FRANC-JEU, C EST L AFFAIRE DE TOUS

Chapitre 5 : Flot maximal dans un graphe

Rappels d architecture

Feuille d exercices 2 : Espaces probabilisés

Les nombres entiers. Durée suggérée: 3 semaines

DOCM Solutions officielles = n 2 10.

Probabilités conditionnelles Loi binomiale

Joueur B Pierre Feuille Ciseaux Pierre (0,0) (-1,1) (1,-1) Feuille (1,-1) (0,0) (-1,1) Ciseaux (-1,1) (1,-1) (0.0)

Initiation à l algorithmique

chapitre 4 Nombres de Catalan

Cloud Computing: de la technologie à l usage final. Patrick CRASSON Oracle Thomas RULMONT WDC/CloudSphere Thibault van der Auwermeulen Expopolis

Théorie des Graphes Cours 3: Forêts et Arbres II / Modélisation

Quelques algorithmes simples dont l analyse n est pas si simple

1 Recherche en table par balayage

CHAPITRE 5. Stratégies Mixtes

SYSTÈME DE GAINES À SPIRALE ET RACCORDS TOURNANTS

Chapitre 2 : communications numériques.

Grandes lignes ASTRÉE. Logiciels critiques. Outils de certification classiques. Inspection manuelle. Definition. Test

Probabilités conditionnelles Exercices corrigés

Item 169 : Évaluation thérapeutique et niveau de preuve

Stratégie de recherche adaptative en programmation par contrainte

Programmation par contraintes. Laurent Beaudou

1. Étude réalisée par l AFOPE en Hellriegel D., Slocum J. W., Woodman R. W., Management des organisations, Bruxelles, De Boeck, 1992.

Chapitre 1 I:\ Soyez courageux!

Efficience des marchés et finance comportementale

Représentation des Nombres

SCC / QUANTUM Kickoff 2015 Data Protection Best Practices

Unix/Linux I. 1 ere année DUT. Université marne la vallée

Concevoir et déployer un data warehouse

TARDITI Richard Mise en place d une Haute Disponibilité

L apprentissage automatique

Bienvenue! Le webinaire commencera d ici quelques minutes

Machines virtuelles Cours 1 : Introduction

INF601 : Algorithme et Structure de données

Algorithmes récursifs

Architecture des ordinateurs TD1 - Portes logiques et premiers circuits

Modèles et simulations informatiques des problèmes de coopération entre agents

Partie 7 : Gestion de la mémoire

Licence Sciences et Technologies Examen janvier 2010

Gestion mémoire et Représentation intermédiaire

Exercices sur le chapitre «Probabilités»

L exclusion mutuelle distribuée

Texte Agrégation limitée par diffusion interne

Art. 18 Championnat de Belgique par équipes Messieurs, Dames et Vétérans

Canevas théoriques du projet sur le poker Partie A

Quelques Algorithmes simples

Table des matières. Introduction

Plus courts chemins, programmation dynamique

Transcription:

Représentation de la Connaissance Les jeux en Prolog Introduction Complément Pratique 7 novembre 2006 Nous nous intéressons aux jeux à deux joueurs pour lesquels la situation du jeu est connue des deux joueurs à tout instant. Un exemple classique est le jeu d échecs. Prenons le cas d un jeu ne pouvant avoir que deux issues : partie gagnée (G) ou perdue (P). On peut théoriquement représenter toutes les parties possibles de ce jeu par un arbre de jeu : chaque noeud correspond à l état du jeu à un instant donné, les arcs correspondent à des déplacements valides, le noeud racine représente la position initiale du jeu et les feuilles toutes les positions finales possibles. Les joueurs jouent tour à tour, la profondeur de l arbre détermine donc qui doit jouer ( nous ou eux ). G NOUS G P EUX G G P G NOUS P G P G P P G P Un tel arbre de jeu est un arbre AND/OR : Si c est à nous de jouer, il suffit qu un successeur soit gagnant pour gagner la partie (noeud OR). 1

Si c est à l adversaire de jouer, il faut que tous les successeurs soient gagnants pour qu on soit sûr de gagner dans tous les cas (noeud AND). Un programme simple pour déterminer le meilleur coup : won( Pos) :- terminalwon( Pos). won( Pos) :- not terminallost( Pos), move( Pos, Pos1), not ( move( Pos1, Pos2), not won( Pos2)). Il va de soit que ce code est beaucoup trop naïf en pratique. Pour le jeu d échecs par exemple, le nombre de positions terminales est de l ordre de 10 120 et il est donc impossible d obtenir le meilleur coup absolu du jeu en construisant l arbre complet. De plus, ce code ne teste pas les cycles et va donc tourner en rond très rapidement (vu qu il recherche en profondeur d abord). Il est donc nécessaire de procéder de manière moins brutale. L algorithme minimax Dans les années 50, Shannon et Turing ont introduit un algorithme dont le principe de base est de limiter l arbre de jeu à une certaine profondeur. Dans ce cas, les feuilles de l arbre ne sont plus nécessairement des positions terminales. On utilise une fonction d évaluation f(n) qui prend comme argument un noeud de l arbre et retourne une valeur entière. Cette valeur représente une estimation de l état de la partie. Une valeur élevée indique que le joueur a plus de chances de gagner, dans le cas contraire c est le joueur MIN qui a l avantage. Etant donné que les joueurs veulent sans cesse améliorer leur position, le joueur va à tout moment vouloir obtenir des positions qui maximisent la valeur de la fonction d évaluation et le joueur MIN des positions qui la minimise. D où le nom de l algorithme : minimax. Illustrons la détermination du meilleur coup en partant d un arbre simple limité à une profondeur de trois coups dans une position où c est à de jouer. 2

4 a 4 b 1 c MIN 4 d 6 e 2 f 1 g 1 4 5 6 2 1 1 1 Le calcul de la fonction d évaluation ne se fait qu aux feuilles de l arbre. Ces valeurs sont ensuite propagées vers le haut jusqu à la racine. Les fils du noeud d par exemple ont respectivement comme étiquettes 1 et 4 et ce sera la valeur 4 qui sera attribuée à d vu qu on est à une hauteur paire par rapport à la racine et qu il s agit donc du tour de. Pour la même raison, les noeuds e, f et g seront respectivement étiquetés par 6, 2 et 1. Les noeuds b et c par contre seront respectivement étiquetés par les minimums des étiquettes de leurs fils, à savoir 4 et 1. Finalement la racine est étiquetée par 4 ce qui indique que à l avantage (en supposant que la valeur 0 représente une position égale) et que son meilleur coup consiste à rejoindre le noeud b. Remarques : Une bonne fonction d évaluation de complexité acceptable n est pas toujours facile à définir. La fonction d évaluation n est appliquée qu aux feuilles de l arbre. 3

Une implémentation en Prolog % minimax( Pos, BestSucc, Val): % Pos is a position, Val is its minimax value % best move from Pos leads to position BestSucc minimax( Pos, BestSucc, Val) :- moves( Pos, PosList),!, % Legal moves in Pos produce % PosList best( PosList, BestSucc, Val) staticval( Pos, Val). best( [ Pos], Pos, Val) :- minimax( Pos, _, Val),!. % Pos has no successors: % evaluate statically best( [Pos1 PosList], BestPos, BestVal) :- minimax( Pos1, _, Val1), best( PosList, Pos2, Val2), betterof( Pos1, Val1, Pos2, Val2, BestPos, BestVal). % Pos0 better than Pos1: betterof( Pos0, Val0, Pos1, Val1, Pos0, Val0) :- min_to_move( Pos0), % MIN to move in Pos0 Val0 > Val1,! % prefers the greater value max_to_move( Pos0), % to move in Pos0 Val0 < Val1,!. % MIN prefers the lesser value % Otherwise Pos1 better than Pos0 betterof( Pos0, Val0, Pos1, Val1, Pos1, Val1). 4

L algorithme alpha-beta La méthode alpha-beta de base a été introduite dans les années 60 et permet d obtenir exactement le même résultat que la méthode minimax mais sans construire complètement l arbre. La méthode fait intervenir deux nouvelles notions : Alpha : valeur minimale (garantie) Beta : valeur maximale (qu on ne dépassera jamais) 4 a 4 b 2 c MIN 4 d 5 e 2 f g 1 4 5 2 1 Lorsqu on évalue le noeud e, nous savons que le noeud b aura au maximum la valeur 4 (Beta = 4). Le premier successeur de e a la valeur 5. C est à de jouer, on choisira donc le successeur de valeure maximale, ce qui veut dire que e aura au minimum la valeur 5. La valeur de e n influencera donc pas celle de b puisqu elle sera d office plus grande que d et nous pouvons ignorer les successeurs restants. On appelle cela une coupure Beta. Par analogie, on constate facilement que le noeud c aura une valeur au maximum égale à 2. Comme le noeud b a une valeur de 4 il n est plus nécessaire de déterminer la vrai valeur du noeud c puisqu on sait déjà qu elle sera plus petite ou égale à 2 et donc à b. On appelle cela une coupure Alpha. Dans les années 70, on a même découvert que les coupures ne devaient pas se limiter à éliminer des noeuds du niveau directement inférieur au niveau courant mais pouvaient aussi éliminer en profondeur des noeuds de niveau impair par rapport au niveau courant. L efficacité de l algorithme dépend de l ordre dans lequel les positions sont évaluées. Dans le meilleur des cas, le facteur de branchement n de l arbre de recherche est réduit à n. 5

Une implémentation en Prolog alphabeta( Pos, Alpha, Beta, GoodPos, Val) :- moves( Pos, PosList),!, boundedbest( PosList, Alpha, Beta, GoodPos, Val) staticval( Pos, Val). % Static value of Pos boundedbest( [Pos PosList], Alpha, Beta, GoodPos, GoodVal) :- alphabeta( Pos, Alpha, Beta, _, Val), goodenough( PosList, Alpha, Beta, Pos, Val, GoodPos, GoodVal). % No other candidate goodenough( [], _, _, Pos, Val, Pos, Val) :-!. goodenough( _, Alpha, Beta, Pos, Val, Pos, Val) :- min_to_move( Pos), Val>Beta,! % Maximizer attained % upper bound max_to_move( Pos), Val<Alpha,!.% Minimizer attained % lower bound goodenough( PosList, Alpha, Beta, Pos, Val, GoodPos, GoodVal) :- newbounds( Alpha, Beta, Pos, Val, NewAlpha, NewBeta), boundedbest( PosList, NewAlpha, NewBeta, Pos1, Val1), betterof( Pos, Val, Pos1, Val1, GoodPos, GoodVal). % Maximizer increased lower bound newbounds( Alpha, Beta, Pos, Val, Val, Beta) :- min_to_move( Pos), Val > Alpha,!. % Minimizer decreased upper bound newbounds( Alpha, Beta, Pos, Val, Alpha, Val) :- max_to_move( Pos), Val < Beta,!. % Otherwise bounds unchanged newbounds( Alpha, Beta, _, _, Alpha, Beta). 6

% Pos better than Pos1 betterof( Pos, Val, Pos1, Val1, Pos, Val) :- min_to_move( Pos), Val > Val1,! max_to_move( Pos), Val < Val1,!. % Otherwise Pos1 better betterof( _, _, Pos1, Val1, Pos1, Val1). Améliorations : 1. Incrémenter progressivement la profondeur de l arbre de recherche (progressive deepening) : Permet de contrôler le temps Les résultats de l itération précédente permettent d ordonner les positions pour l itération suivante. On aide ainsi l algorithme alpha-beta en commençant la recherche par les déplacements plus prometteurs. 2. La fonction d évaluation peut retourner une valeur non représentative de l état du jeu pour certaines positions. Solution : prolonger le développement de l arbre de recherche pour ces positions. 7