IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Intelligence artificielle Discussion :

IA de morpion : quelles structures de données ?


Sujet :

Intelligence artificielle

  1. #1
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2016
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2016
    Messages : 16
    Points : 13
    Points
    13
    Par défaut IA de morpion : quelles structures de données ?
    Bonjour à tous,

    Dans le cadre d'un projet pour mes études, je dois développer en C la machine MENACE, une IA capable d'apprendre à jouer au morpion. Voilà un site qui explique tout bien.

    Je suis en train de me poser la question de la bonne structure de donnée à utiliser pour stocker les "boîtes d'allumettes" (sur le site il est indiqué qu'il n'y a besoin que de 304 allumettes car c'est tout le temps la machine qui joue en premier. Sauf que dans mon cas, c'est au joueur de décider qui commence, ce qui fait exploser les différents cas possibles).


    Première idée : un tableau de 3^9 cases

    Si on code chaque format possible au morpion en base 3 (rien = 0 * 3^i, X = 1 * 3^i, O = 2 * 3^i, avec i le numéro de la case du plateau), le nombre donné, nous donne l'indice d'une case du tableau. Dès lors chaque case du tableau est une "boîte d'allumettes".
    Avantage : il est facile d'accéder à une case du tableau. Cela rend la recherche de symétrie très facile.
    Inconvénient : Beaucoup trop de mémoire gâchée à mon avis, car il existe indice qui ne correspondent pas à des cas possibles au morpion.


    Deuxième idée : une table de hachage

    Toujours en base 3, si on arrive à faire une fonction de hachage potable, on peut faire en sorte de supprimer l'inconvénient évoqué plus haut. En effet, à ce moment lorsque MENACE arrive sur un cas qu'il ne connait pas encore, il peut le créer en le rajoutant à une liste de la table de hachage.
    Avantage : Facilité de recherche de symétrie + le fait d'avoir le strict nécessaire en termes de mémoire.
    Inconvénient : trouver la bonne fonction de hachage, ce qui est loin d'être faisable x)


    Troisième idée : un arbre

    Cette structure de donnée se construirait au fur et à mesure que MENACE apprend. Un père aurait comme fils, tous les différents coups possibles en étant dans la position de jeu du père. Nous aurons alors toujours le strict nécessaire en termes de mémoire.
    Avantage : Pas de mémoire "en trop".
    Inconvénients : La recherche de symétrie devient beaucoup plus ardues, et lentes, comparée aux autres méthodes...


    Quatrième idée : une simple liste chainée

    C'est la méthode qui me convainc le moins, car la recherche serait trop lente dans ce type de structure de donnée. Mais je la mets quand même pour savoir ce que vous en pensait.



    Voilà voilà sur quoi j'hésite, que mon conseillerez-vous, ou avez-vous d'autres idées ? Je suis preneur de toutes propositions !

  2. #2
    Membre éclairé Avatar de Matthieu76
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Mars 2013
    Messages
    568
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2013
    Messages : 568
    Points : 890
    Points
    890
    Par défaut
    Pour le morpion il y a 9! combinaisons possible soit 362 880 (9*8*7*6*...).
    300 000 est un petit nombre tu peux juste calculer toutes les combinaisons et retirer celle qui te font perdre, ensuite l'IA choisi un chemin au hasard dans l'arbre.

Discussions similaires

  1. Quelle structure de données pour mon projet ?
    Par stallaf dans le forum Langage
    Réponses: 4
    Dernier message: 13/04/2010, 17h12
  2. Quelle structure de données ? Analyse des occurrences d'un trigramme
    Par Tidus159 dans le forum Algorithmes et structures de données
    Réponses: 46
    Dernier message: 12/04/2009, 19h35
  3. Quelle structure de données ?
    Par SebSplo dans le forum Développement 2D, 3D et Jeux
    Réponses: 5
    Dernier message: 27/01/2008, 03h52
  4. quelle structure de donnée par un arbre?
    Par rdh123 dans le forum C#
    Réponses: 1
    Dernier message: 31/12/2007, 15h27
  5. [C++] quelle structure de donnée utiliser pour stocker des vertices ?
    Par johnnyjohnny dans le forum Développement 2D, 3D et Jeux
    Réponses: 14
    Dernier message: 14/07/2007, 21h44

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo