MinMax et Alpha-Beta.

Slides:



Advertisements
Présentations similaires
Modèle des jeux et des mécanismes
Advertisements

Sensibilisation à l’Algorithmique
Introduction à l’Algorithmique
Sensibilisation à l’Algorithmique et structure de données
Calculs de complexité d'algorithmes
Cours d’Algorithmique
Cours d’Algorithmique
Cours d'algorithmique 4 - Intranet 1 16 novembre 2006 Cours dAlgorithmique Lalgorithme alpha-beta. Sous-arbres alpha et beta dun arbre minimax et propriétés.
Cours d’Algorithmique
Modèle de coût algorithmique intégrant des mécanismes de tolérance aux pannes Samir Jafar, Thierry Gautier, Jean Louis Roch Laboratoire ID-IMAG Equipe.
Chapitre VI. Arbres (définition, parcours, représentation)
Traitement Co-Séquentiel: Appariment et Fusion de Plusieurs Listes
Cours 8 Arbres équilibrés
ALGORITHMES RECURSIFS
Structures de données linéaires
Les jeux (méthodes min-max et -)
LOGO Responsable du cours Mlle Amina GHRAB : 1 ère année IAG Institut Supérieur de Gestion de Tunis.
Les structures de données arborescentes
Arbre binaire de recherche
Algorithmes Branch & Bound
II. Chaînage, SDD séquentielles
Les algorithmes: complexité et notation asymptotique
Chapitre VII. Tri Tri par tas Tri rapide.
Heuristiques A. Introduction B. Recherche d ’une branche
Projet d’Algorithmique et Programmation
RECURSIVITE ARBRES BINAIRES
Methode de Tri efficace
IFT-2000: Structures de Données Listes chaînées Dominic Genest, 2009.
Recherche adversiale (Jeux à 2 joueurs) Chapter 6 Section 1 – 4.
Les fichiers indexés (Les B-arbres)
LES ARBRES IUP 2 Génie Informatique
Franck Cappello CNRS, LRI, Université Paris-sud
Éric Beaudry Département d’informatique Université de Sherbrooke
Gei 431 Architecture des ordinateurs II – Frédéric Mailhot Et maintenant, où allons-nous? Après toutes les techniques vues jusquici: Que peut-on faire.
Froduald Kabanza Département d’informatique Université de Sherbrooke
Présentation Structures de Données et TDA
CSI 4506: Introduction à l'intelligence artificielle La recherche aveugle.
CSI 4506: Introduction à l’intelligence artificielle
1 CSI 4506: Introduction à lintelligence artificielle La recherche adversairiale.
Parallel Programming in C with MPI and OpenMP
GPA750 – Gestion de Projets
IV. Arbres  Arbre binaire (AB) Représentation SDD d’un AB
Structures de données IFT-2000
Structures de données IFT-2000 Abder Alikacem Semaine 11 Gestion des arbres binaires de tri et de recherche. Les arbres cousus. Les arbres n-aires Département.
PHP 2° PARTIE : FONCTIONS ET FORMULAIRE
Structures de données IFT-2000
Heuristiques C. Recherche de la meilleure branche . Branch And Bound
Graphes 1. Introduction 2. Définition 3. Représentation mémoire
Méthodes de tri.
Algorithmes Branch & Bound
Arbres binaires et tables de hachage
I.A. Session 2009/2010 E.P.S.I. Bordeaux – C.S.I.I – 2 ème Année – Cours n°6.
CSI 4506: Introduction à l’Intelligence Artificielle
Exploration systématique de graphes
La Récursivité.
Laboratoire Informatique de Grenoble Réunion BGPR/SafeScale 06 / 07 / Paris / Jussieu Kaapi dans Safescale 1.Une application Safescale sur Grid’5000.
1 UMLV  FICHIERS Mémoire de masse découpée en blocs Fichier :liste chaînée de blocs, ou arbre de blocs (répertoires - fichiers)‏ Bloc d’éléments Bloc.
Structures de données avancées : Arbres B+ avec expansion partielle D. E ZEGOUR Institut National d ’Informatique.
Structures de données IFT-2000
Structures de données IFT-2000 Abder Alikacem Semaine 10 Les algorithmes de recherche Les structures arborescentes Département d’informatique et de génie.
VI. Tri par tas.
Les monceaux (Heap) Monceaux Propriétés des Monceaux
Arbres AVL - Hauteur d’un arbre AVL - Insertion et restructuration
CSI25101 Tri Plus efficace. CSI25102 Tri récursif Le tri récursif divise les données de grande taille en deux presque moitiés et est appelé récursivement.
1 CSI 4506: Introduction à l’Intelligence Artificielle La Recherche Adversariale.
. Le B-Arbre.
1 A. Cornuéjols Introduction à l’intelligence artificielle Introduction à l’Intelligence Artificielle (Cours n°3) Recherche informée dans les graphes Antoine.
Techniques d'Optimisation Master
1 UE Intro. Optimisation L3 INFO UPSud II. Programmation linéaire en variables entières (ou mixtes)
Transcription de la présentation:

MinMax et Alpha-Beta

Min-Max Jeu à 2 joueurs: MAX  and MIN . L’arbre de jeux représente tous les coups possibles jusqu’à une certaine profondeur à partir de la position courante. Chaque feuille est évaluée avec une fonction d’évaluation. Un nœud MAX choisit un coup de score maximal parmi ses fils. Un nœud MIN choisit un coup de score minimal parmi ses fils.

Algorithme Min-Max Version deux fonctions Fonction ami Fonction ennemi

Algorithme Min-Max Version NegaMax

Coupure Alpha-Beta 3 6 4 2 9 5 7 4 8 Principe: si la valeur d’un fils f d’un nœud MAX  est supérieure à la valeur courante d’un nœud MIN  ancêtre, alors les frères de f n’ont pas besoin d’être explorés : coupure beta (beta cutoff).

Coupure Alpha-Beta 3 6 4 2 9 5 7 4 8 Principe: si la valeur d’un fils f d’un nœud MAX  est supérieure à la valeur courante d’un nœud MIN  ancêtre, alors les frères de f n’ont pas besoin d’être explorés : coupure beta (beta cutoff).

Coupure Alpha-Beta 3 6 4 2 9 5 7 4 8 Principe: si la valeur d’un fils f d’un nœud MAX  est supérieure à la valeur courante d’un nœud MIN  ancêtre, alors les frères de f n’ont pas besoin d’être explorés : coupure beta (beta cutoff).

Coupure Alpha-Beta 3 6 4 2 9 5 7 4 8 Principe: si la valeur d’un fils f d’un nœud MAX  est supérieure à la valeur courante d’un nœud MIN  ancêtre, alors les frères de f n’ont pas besoin d’être explorés : coupure beta (beta cutoff).

Coupure Alpha-Beta 3 3 6 4 2 9 5 7 4 8 Principe: si la valeur d’un fils f d’un nœud MAX  est supérieure à la valeur courante d’un nœud MIN  ancêtre, alors les frères de f n’ont pas besoin d’être explorés : coupure beta (beta cutoff).

Coupure Alpha-Beta 3 3 3 6 4 2 9 5 7 4 8 Principe: si la valeur d’un fils f d’un nœud MAX  est supérieure à la valeur courante d’un nœud MIN  ancêtre, alors les frères de f n’ont pas besoin d’être explorés : coupure beta (beta cutoff).

Coupure Alpha-Beta 3 6 3 6 4 2 9 5 7 4 8 Principe: si la valeur d’un fils f d’un nœud MAX  est supérieure à la valeur courante d’un nœud MIN  ancêtre, alors les frères de f n’ont pas besoin d’être explorés : coupure beta (beta cutoff).

Coupure Alpha-Beta 3 6 3 6 4 2 9 5 7 4 8 Principe: si la valeur d’un fils f d’un nœud MAX  est supérieure à la valeur courante d’un nœud MIN  ancêtre, alors les frères de f n’ont pas besoin d’être explorés : coupure beta (beta cutoff).

Coupure Alpha-Beta 3 6 3 6 4 2 9 5 7 4 8 Principe: si la valeur d’un fils f d’un nœud MAX  est supérieure à la valeur courante d’un nœud MIN  ancêtre, alors les frères de f n’ont pas besoin d’être explorés : coupure beta (beta cutoff).

Coupure Alpha-Beta 6 6 3 3 6 4 2 9 5 7 4 8 Principe: si la valeur d’un fils f d’un nœud MAX  est supérieure à la valeur courante d’un nœud MIN  ancêtre, alors les frères de f n’ont pas besoin d’être explorés : coupure beta (beta cutoff).

Coupure Alpha-Beta 6 6 3 3 6 4 2 9 5 7 4 8 Principe: si la valeur d’un fils f d’un nœud MAX  est supérieure à la valeur courante d’un nœud MIN  ancêtre, alors les frères de f n’ont pas besoin d’être explorés : coupure beta (beta cutoff).

Coupure Alpha-Beta 6 6 3 3 6 4 2 9 5 7 4 8 Principe: si la valeur d’un fils f d’un nœud MAX  est supérieure à la valeur courante d’un nœud MIN  ancêtre, alors les frères de f n’ont pas besoin d’être explorés : coupure beta (beta cutoff).

Coupure Alpha-Beta 6 6 3 2 3 6 4 2 9 5 7 4 8 Principe: si la valeur d’un fils f d’un nœud MAX  est supérieure à la valeur courante d’un nœud MIN  ancêtre, alors les frères de f n’ont pas besoin d’être explorés : coupure beta (beta cutoff).

Coupure Alpha-Beta 6 6 3 2 3 6 4 2 9 5 7 4 8 Principe: si la valeur d’un fils f d’un nœud MAX  est supérieure à la valeur courante d’un nœud MIN  ancêtre, alors les frères de f n’ont pas besoin d’être explorés : coupure beta (beta cutoff).

Coupure Alpha-Beta 6 3 6 2 ¸6 5  3 6 4 2 9 5 7 4 8 Principe: si la valeur d’un fils f d’un nœud MAX  est supérieure à la valeur courante d’un nœud MIN  ancêtre, alors les frères de f n’ont pas besoin d’être explorés : coupure beta (beta cutoff).

Coupure Alpha-Beta 6 3 6 2 ¸6 5  3 6 4 2 9 5 7 4 8 Principe: si la valeur d’un fils f d’un nœud MAX  est supérieure à la valeur courante d’un nœud MIN  ancêtre, alors les frères de f n’ont pas besoin d’être explorés : coupure beta (beta cutoff).

Coupure Alpha-Beta 6 3 6 2 ¸6 5  3 6 4 2 9 5 7 4 8 Principe: si la valeur d’un fils f d’un nœud MAX  est supérieure à la valeur courante d’un nœud MIN  ancêtre, alors les frères de f n’ont pas besoin d’être explorés : coupure beta (beta cutoff).

Coupure Alpha-Beta 6 3 6 2 ¸6 5  3 6 4 2 9 5 7 4 8 Principe: si la valeur d’un fils f d’un nœud MAX  est supérieure à la valeur courante d’un nœud MIN  ancêtre, alors les frères de f n’ont pas besoin d’être explorés : coupure beta (beta cutoff).

Coupure Alpha-Beta 3   6 6 2 ¸6 ¸6 5 3 6 4 2 9 5 8 3 6 4 2 9 5 7 4 8 Principe: si la valeur d’un fils f d’un nœud MAX  est supérieure à la valeur courante d’un nœud MIN  ancêtre, alors les frères de f n’ont pas besoin d’être explorés : coupure beta (beta cutoff).

Coupure Alpha-Beta 3   6 6 2 ¸6 ¸6 5 3 6 4 2 9 5 8 3 6 4 2 9 5 7 4 8 Principe: si la valeur d’un fils f d’un nœud MAX  est supérieure à la valeur courante d’un nœud MIN  ancêtre, alors les frères de f n’ont pas besoin d’être explorés : coupure beta (beta cutoff).

Coupure Alpha Coupure Beta 7 V 3 V   4 4 Coupe α Élagage fils d’un noeud MIN  Coupe β Élagage fils d’un noeud MAX  NB Les coupes peuvent être pronfondes.

Algorithme alpha-beta

Arbre ordonné optimal Alpha-beta est très séquentiel Pour maximiser les coupures, l’idéal serait que les fils d’un nœud MAX soient triés par ordre décroissant A priori, l’arbre optimal est inconnu: tri « a priori » Lors de l’évaluation par alpha beta de l’arbre optimal: Si le premier fils d’un MAX est coupé par le père MIN: le nœud MAX est coupé; les autres fils ne sont pas évalués Sinon, tous les fils sont évalués (et on garde « le vrai » MAX)

Alpha-beta parallèle Rappel MIN-MAX et alpha-beta séquentiel Arbre optimal pour les coupures alpha-beta Parallélisation d’alpha-beta Implantation du tri des fils Parallélisation: Utilisation de Intel-TBB Ref: [Multithreaded programming in Cilk] Charles Leiserson, Avril 2007 Intel Thread Building Block (version limitée à la parallélisation de for)

Alpha-Beta Parallèle OBSERVATION: dans un arbre optimal, le degré de tout nœud interne est soit 1 soit maximal. Heuristique de la parallélisation: [Feldman-Mysliwietz-Monien 91] Si le premier fils f d’un nœud ne permet pas de le couper, alors on spécule que tous les coups frères de f peuvent être explorés en parallèle, en espérant ne pas explorer trop de nœuds supplémentaires par rapport à un alpha-beta séquentiel.

Parallélisation de alpha-beta Réduction parallèle (produit itéré) ParABEval (n) { 1 Si (profondeur limite atteinte) 2 return Eval(n); 3 Soit f[0, .., m-1] les m fils de n ; 4 res = ParABEval( f[0] ) ; 5 si ( n n’est pas élagué ) alors // EN PARALLELE 6 res = MAX/MIN (res, ParABEval(f[i]), i=1.. m-1) ; 7 return res ; Parallélisation de la boucle 6: de type « produit itéré » L’arbre est dynamique et d’arité variable Découpe récursive de la boucle (1 .. m-1) jusqu’à un « certain » seuil (granularité) Ordonnancement de type « glouton » / work-stealing

Comment trier les fils Stocker les coups possibles dans un tableau/vector, triés par ordre de priorité: plusieurs choix possibles (de difficulté croissante): simple: utilisation de la fonction d’évaluation des fils utiliser une évaluation plus précise (mini alpha-beta) coupler avec iterative deepening … … Remarque: On peut aussi arrêter l’alpha-beta parallèle à une profondeur donnée, où le nœud est évalué avec un Alpha-beta séquentiel.

Implantation de la parallélisation Au choix: Soit « à la main » avec threads Posix par exemple: découpe statique de l’arbre en sous-arbre; ou découpe récursive dynamique de la boucle 6 [cf SEPC] Soit en utilisant une bibliothèque qui intégre un ordonnancement par work-stealing en C++: Cilk Arts (… en 2008 …) INRIA Kaapi: en contexte distribué cluster / grille avec nœuds hétérogènes SMP/multicore http://kaapi.gforge.inria.fr/ Le plus simple: Intel TBB http://threadingbuildingblocks.org/ contexte SMP/multicore

Parallélisation boucle 6 en TBB Intel TBB : librairie C++ qui fournit un interface parallèle intégrant la plupart des fonctions de la STL ainsi que du parallélisme « fonctionnel » Ici: boucle 6 = produit itéré = « parallel_reduce » Impléménté par Intel TBB : cf doc section 3.3 le tutorial sur TBB est sur le kiosk (p.21/68) et aussi accessible http://threadingbuildingblocks.org http://pages.cs.wisc.edu/~gibson/tbbTutorial.html Attention: ne pas installer Intel TBB la librairie a dû être modifiée pour ensibm