Partage
  • Partager sur Facebook
  • Partager sur Twitter

Algo minmax

Comment ça marche?

Anonyme
    27 février 2006 à 15:50:19

    Salut,

    j'ai fait plusieurs recherche sur google pour comprendre l'utilisation de l'algo minmax mais tous ce que j'ai trouvé c'est que de la théorie. donc niveaux théorie je c'est comment ça fonctionne mais je
    vois pas comment l'utilisé dans des codes.
    J'ai été voir sur le site cppfrance.com mais j'ai rien trouvé de bien.

    pour l'instant c'est juste pour faire une ia pour un morpion.

    donc si quelqu'un pouvait me passer des bons liens ou m'expliquer sa serait simpa.

    Merci d'avance.
    • Partager sur Facebook
    • Partager sur Twitter
      27 février 2006 à 16:07:29

      Sur google j'ai trouvé ça : http://www.cppfrance.com/codes/MORPION-IA-MINMAX-MINIMAX-/23851.aspx

      Sinon, perso sur le minimax, j'ai un papier qui m'avait beaucoup interessé (mais nettement plus technique) :
      http://www.ai.univ-paris8.fr/~cazenave/berder00.pdf
      • Partager sur Facebook
      • Partager sur Twitter
        27 février 2006 à 17:06:53

        Heu.. Il sert à faire quoi l'algo minmax ?
        • Partager sur Facebook
        • Partager sur Twitter
        Anonyme
          27 février 2006 à 17:21:20

          Merci bluestorm je vais voir de suite.

          Insomniak --> sa sert en quelque sorte à créer une ia intelligente pour les jeux à 2 joueurs comme le morpion, le jeu de dame, les écheques etc...
          • Partager sur Facebook
          • Partager sur Twitter
            27 février 2006 à 17:48:51

            Insomniak, c'était pas super utile :)
            Va voir sur la wikipédia, l'article est un peu succinct mais il détaille quand même le truc.

            Par ailleurs (il me semble bien que c'est toi), je vois que t'as enlevé ta signature, et je t'en félicite : elle me donnait envie de gerber à force, mais je voyais pas comment aborder poliment la question ;)
            • Partager sur Facebook
            • Partager sur Twitter
              27 février 2006 à 17:53:54

              Citation : bluestorm

              Par ailleurs (il me semble bien que c'est toi), je vois que t'as enlevé ta signature, et je t'en félicite : elle me donnait envie de gerber à force, mais je voyais pas comment aborder poliment la question ;)



              lol désolé si ça te faisiait gerber, c'était pas voulou... Mais en fait, je l'ai pas enlevée ma signature, alors je me demande bien ce qui ce passe... Je la remet ? ^^

              EDIT : J'ai vu ce à quoi ça servait, mais je n'y voit pas l'interet dans un morpion...
              • Partager sur Facebook
              • Partager sur Twitter
                27 février 2006 à 18:00:36

                Bah le minimax dans un morpion, c'est pareil que le truc normal, en gros dès qu'on fait une IA pour un morpion ca revient à faire un minimax ou un algo dynamique : on teste toutes les possibilités et on s'assure (c'est à ce moment là que la formulation peut changer si on a pris explicitement un minimax ou pas) que les choix qui remontent sont ceux qui garanatissent la victoire.
                • Partager sur Facebook
                • Partager sur Twitter
                Anonyme
                  27 février 2006 à 18:04:03

                  arf dur dur Image utilisateur

                  j'aurais quelques questions:


                  #define PROF_MAX 5
                  #define INFINI MAXLONG
                  #define odd(a) ((a)&1)

                  long minimax(char position,long profondeur)
                  {
                      long valeur ,best, i, n
                      char *position_suivante[100];

                      if ( profondeur == PROF_MAX )
                      {
                          return evaluation(position);
                      }

                      n = trouve_coup_possible(position,position_suivante)

                      best = - INFINI

                      for ( i=0; i<n; i++ )
                      {
                          valeur = minimax(position_suivante[i],profondeur+1);

                          if ( odd(profondeur) ) //niveau impaire on minimise
                          {
                              if ( valeur < best )
                              {
                                  best = valeur;
                              }
                          }
                          else if ( valeur > best ) //niveau paire on maximise
                          {
                              best = valeur;
                          }
                      }

                      return best;
                  }


                  le #define PROF_MAX 5 je suppose que pour un morpion je le met a 9? comme il y a 9 case

                  après pour le #define INFINI MAXLONG
                  il vaut quoi MAXLONG ?

                  et je ne comprend pas la partie #define odd(a) ((a)&1)

                  Merci :)
                  • Partager sur Facebook
                  • Partager sur Twitter
                    27 février 2006 à 18:31:11

                    La profondeur max, c'est le nombre maximum de coups à l'avance que tu dois prévoir. Donc 9 pour le morpion.

                    MAXLONG, c'est probablement dans limits.h (donc #include <limits.h>) le plus grand nombre représentable par un long. Déja je pense que c'est plutôt LONG_MAX, mais sinon tu peux mettre 1000000 à la place (un million), il veut juste un entier plus grand que tous ceux que ton programme va manipuler.

                    odd(a) c'est un macro qui renvoie 1 si le nombre passé en argument est impair (donc il renvoie 'vrai'), et 0 sinon. Pour ça il se sert de l'opérateur binaire & :
                    http://developpeur.journaldunet.com/tutoriel/theo/031126theo_bit1a.shtml
                    • Partager sur Facebook
                    • Partager sur Twitter
                    Anonyme
                      27 février 2006 à 19:13:09

                      ok merci.

                      je vais voir ce soir si j'arrive à me faire 1 bon ia pour mon morpion et si j'ai des problemes je les posteraient demain :)
                      • Partager sur Facebook
                      • Partager sur Twitter
                      Anonyme
                        28 février 2006 à 14:37:42

                        c'est plus dur que ce que je penssait >_<

                        J'arrive pas à comprendre comment faire pour que le programme trouve quelle est la meilleure solution.

                        Après tout, peut-être que j'ai pas encore le niveau pour réussir cet algo (Enfin je dit sa parce que c'est rare que je passe plusieurs heure sur un code et que je le comprenne toujours pas).
                        • Partager sur Facebook
                        • Partager sur Twitter
                        Anonyme
                          28 février 2006 à 14:44:59

                          Le meilleur moyen d'implémenter un algo, c'est d'abord d'avoir bien comprit la théorie. Une fois que tu le comrpend, tu doit d'abord te demender comment tu vas structurer tout sa(une fonction recursive apr ici, une boucle par la...)
                          Une fois que tu a tout sa, tu peut commancer a coder.

                          Nb: Si souvent on peut faire tout cela de tête, il arive qu'il soit parfois plus simple de rpendre une feuille et de gribouller des éssés.)
                          • Partager sur Facebook
                          • Partager sur Twitter

                          Algo minmax

                          × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                          × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                          • Editeur
                          • Markdown