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

Algorithmes et structures de données Discussion :

Résolution de labyrinthes


Sujet :

Algorithmes et structures de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de cs_ntd
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Décembre 2006
    Messages
    598
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2006
    Messages : 598
    Par défaut Résolution de labyrinthes
    Bonjour tous le monde !

    Voila je m'ennuyais un peu et j'ai eu l'idée de créer un petit algorithme qui me permette de trouver la sortie d'un labyrinthe... (très très original me dirais vous)

    Alors du point de vue de l'algorithme, il est parfait, c'est à dire qu'il trouve la sortie ...

    Seulement voila, en fait il prend souvent les mauvais embranchements (bé 2 fois sur 3 vu que j'ai remis le choix de la direction au hasard ^^) et je me demandais si personne ne connaissais un petit algorithme d'évaluation des chemins...

    Je m'explique : je ne sais pas du tous où sont les noeuds, ni ce qu'il y a après le prochain tournant, mais comme je suis très fort, je peut parcourir mentalement le labyrinthe pendant que je le parcours (bé oui pas avant ce serai de la triche ^^). Ce que je veut rajouter, c'est une sorte d'algo "d'intuition" qui me dise : va pas par là ça craint... par exemple un algo qui évalue grosso modo la direction que l'on va prendre pour voir où l'on sera plusieures étapes après...

    Le seul truc c'est que c'est que les algos que j'ai fait en ce sens sont tous presques aussi long (voir plus) que de parcourir tous les mauvias embranchements

    Voila merci aux bonnes âmes qui voudront bien me répondre parceque la je sèche sur comment optimiser les choix...

  2. #2
    Expert confirmé

    Avatar de snake264
    Homme Profil pro
    Datascientist chez Leboncoin
    Inscrit en
    Novembre 2006
    Messages
    2 914
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Datascientist chez Leboncoin
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Novembre 2006
    Messages : 2 914
    Par défaut
    Pour trouvé la sortie d'un labyrinthe il y 2 algo que tu dois connaitre ce sont: Dijkstra et A*. D'ailleurs je te conseil leur version génétique bien plus efficace par rapport a la version gloutons.

  3. #3
    Membre éclairé Avatar de cs_ntd
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Décembre 2006
    Messages
    598
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2006
    Messages : 598
    Par défaut
    Merci de ta réponse snake, mais il me semble que tu doit connaître les noeuds intermédiaire pour le Djikstra comme pour le A*.

    Pour le A*, il me semble aussi qu'il n'est pas forcemment efficace dans tous les labyrinthes (notamment ceux qui doivent s'éloigner de l'arrivée pour y aller).

    Le Djikstra me pose également problème : comme je ne connais pas les noeuds à l'avance, il faut donc que je parcours tout mon labyrinthe pour les repèrer, puis ensuite définir des poids etc...
    Ce qui m'interesse n'est pas ici forcemment de parcourir le chemin le plus court, mais bien d'arriver au bout le plus rapidement possible (en effet si je connnais à l'avance le chemin le plus court, c'est lui que j'ai intéret à prendre, mais ce n'est pas le cas)

    Ma méthode de parcour aléatoire me permet alors de ne pas toujours parcourir le graphe en entier, ce qui me parrait alors mieux que le Djikstra ou le A*. A moins que je ne me trompe dans leur interprétation ?

    Et aurait tu de la doc concernant les versions gloutons et génétique ? car j'ai cherché sur internet, mais je n'ais rien trouvé de "didactique".

    Encore merci de ta réponse

  4. #4
    Expert confirmé

    Avatar de snake264
    Homme Profil pro
    Datascientist chez Leboncoin
    Inscrit en
    Novembre 2006
    Messages
    2 914
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Datascientist chez Leboncoin
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Novembre 2006
    Messages : 2 914
    Par défaut
    Pour des cours il y a un très bon tuto sur le A* sur dvp pour Dijkstra je ne sais pas je n'ai jamais chercher

    Ensuite c'est vrai tu n'as pas tord mais l'algo A* reprend les mêmes principes que Dijkstra mis à part que A* est de plus heuristique, c'est à dire que l'on se doute que dans la majorité des cas, la direction à prendre est en général la direction de la sortie, très très pratique notamment s'il n'y a aucun obstacle entre le point de départ et la sortie. Enfin une variante consiste à lancer l'algorithme du point de départ mais également, du point d'arrivé en alternant, mais cela n'a pas beaucoup d'intérêt pour ton problème, enfin c'est mon point de vue et en algo on a fait ce genre de petit exo et le résultat était bien au rendez-vous Après il est sur que tu peut te créer ton propre algo à partir de ceux-là

  5. #5
    Rédacteur/Modérateur
    Avatar de Trap D
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    4 942
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 4 942
    Par défaut
    Citation Envoyé par snake264 Voir le message
    Pour trouvé la sortie d'un labyrinthe il y 2 algo que tu dois connaitre ce sont: Dijkstra et A*. D'ailleurs je te conseil leur version génétique bien plus efficace par rapport a la version gloutons.
    Algo génétique ou simulant les colonies de fourmis ?
    "La haine seule fait des choix" - Koan Zen
    "Il ne faut pas être meilleur que les autres, il faut être meilleur que soi." Albert Jacquard
    "Ceux qui savent où ils ont posé leur parapluie ne sont pas alcooliques." - pgibonne.
    Faites du Prolog, ça vous changera les idées !
    Ma page Prolog
    Mes codes sources commentés

    Mon avatar : La Madeleine à la veilleuse de Georges de La Tour

  6. #6
    Expert confirmé

    Avatar de snake264
    Homme Profil pro
    Datascientist chez Leboncoin
    Inscrit en
    Novembre 2006
    Messages
    2 914
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Datascientist chez Leboncoin
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Novembre 2006
    Messages : 2 914
    Par défaut
    Génétique pour ce genre de chose car colonie de fourmi j'ai peur que le résultat ne soit pas optimal dans l'immédiat(faut dire aussi que je ne maitrise pas énormément ce genre d'algo qui est la coloni des fourmi, utiliser qu'une fois pour le PVC donc pas assé d'expérience dessus).

  7. #7
    Rédacteur/Modérateur
    Avatar de Trap D
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    4 942
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 4 942
    Par défaut
    Tu pourrais alors peut-être me donner quelques idées pour ce problème. Je sèche car je n'arrive pas à trouver quelque chose de vraiment satisfaisant.
    En fait je ne vois pas bien comment symboliser la population.
    Au cours de la discussion, quelqu'un a dit qu'il vallait mieux utiliser les colonies de fourmis pour ce genre de problème, c'est pour celà que je posais la question.
    As-tu des lectures à me conseiller ?
    "La haine seule fait des choix" - Koan Zen
    "Il ne faut pas être meilleur que les autres, il faut être meilleur que soi." Albert Jacquard
    "Ceux qui savent où ils ont posé leur parapluie ne sont pas alcooliques." - pgibonne.
    Faites du Prolog, ça vous changera les idées !
    Ma page Prolog
    Mes codes sources commentés

    Mon avatar : La Madeleine à la veilleuse de Georges de La Tour

  8. #8
    Expert confirmé

    Avatar de snake264
    Homme Profil pro
    Datascientist chez Leboncoin
    Inscrit en
    Novembre 2006
    Messages
    2 914
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Datascientist chez Leboncoin
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Novembre 2006
    Messages : 2 914
    Par défaut
    Voici déjà une petite solution toute simple qui marche dans tout les cas, quitte à ne pas prendre le chemin le plus court: c'est une exploration en profondeur qu'il faut faire d'abord.

    Concrètement, tu te trouve sur un sommet donné. Tu choisis le premier voisin venu et tu recommence. Si à un moment donné il n'y a plus de voisin, cette branche de l'exploration a échoué et tu remonte essayer une autre branche.

    Tu t'arrête bien sûr quand tu arrive sur la sortie. Cela se code simplement en utilisant la récursivité.

    Le plus simple est d'utiliser une fonction booléenne qui répond si elle a déjà trouvé la sortie ou pas. Tu aura besoin d'un tableau de booléen indiquant si tu as déjà visité un sommet ou pas.

    Voila j'espère que c'est assé clair

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Résolution d'un labyrinthe
    Par scienceapart dans le forum Algorithmes et structures de données
    Réponses: 52
    Dernier message: 09/05/2011, 14h36
  2. Résolution de labyrinthe avec l'algorithme A* (A Star)
    Par pottiez dans le forum Télécharger
    Réponses: 0
    Dernier message: 30/11/2010, 15h45
  3. Construction et résolution de labyrinthe
    Par pottiez dans le forum Télécharger
    Réponses: 0
    Dernier message: 30/11/2010, 15h44
  4. recuperer la résolution de l'écran
    Par florent dans le forum C++Builder
    Réponses: 11
    Dernier message: 07/06/2002, 15h01

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