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 :

Coder son pathdinfing : comment commencer ???


Sujet :

Algorithmes et structures de données

  1. #1
    Invité
    Invité(e)
    Par défaut Coder son pathdinfing : comment commencer ???
    Salut tout le monde,

    Bon, je ne sais pas si je devais poster ici mais étant donné que le sujet concerne surtout les algos de pathfinding et surtout A*, je pense que c'est le bon endroit...

    En fait je bosse depuis quelques jours là dessus, j'ai lu plusieurs docs à ce sujet, et je pense avoir bien saisi le fonctionnement de l'algo A*.... En revanche, je bloque complétement pour son codage : je ne sais pas vraiment par où commencer, ni comment organiser mon code, quelles structures de données utiliser...

    Par exemple, pour les Open et Closed Lists, quel type de données vaut-il mieux utiliser??? Tableau, liste chaînée, ...? Comment représenter l'espace : une matrice d'entiers, une matrice d'instances d'une classe point ???

    J'espère que vous pourrez m'aider, merci d'avance... Et puisqu'on est encore seulement le 3, bonne année à tous !!!


    PierreAd


    PS : j'aurais aimé coder ça en OO, mais si vous avez d'autres idées (peut être plus simples pour un premier jet) n'hésitez pas ;-)

  2. #2
    mat.M
    Invité(e)
    Par défaut
    Je n'arrive pas à comprendre ton problème ; pq veux-tu utiliser l'algorithme de A* ?
    Tout dépend ce que l'on veut faire....
    ce sujet a déja été abordé sur le forum.

    Sinon voir le site de Matt Buckland et autre comme Gamedev.net

    Chercher sur
    http://www.wordware.com/files/games/
    il ya des exemples de code source en anglais

  3. #3
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Points : 15 920
    Points
    15 920
    Par défaut
    Tu peux très bien représenter l'espace par une matrice de coordonnées.

    La structure de donnée à utiliser est une file de priorité, la meilleure complexité étant obtenue avec un tas de Fibonacci. Par contre c'est un peu délicat à implémenter, donc tu peux envisager plus simple je pense (genre une liste triée ?) . Note aussi que selon le langage utilisé, tu auras sûrement déjà en standard des structures de files de priorité.

    Enfin, personnellement je n'utilise pas de liste Closed (jamais compris quel était son intérêt, par rapport au fait de stocker cette info directement dans les noeuds).

  4. #4
    Invité
    Invité(e)
    Par défaut
    Je n'arrive pas à comprendre ton problème ; pq veux-tu utiliser l'algorithme de A* ?
    Tout dépend ce que l'on veut faire....
    ce sujet a déja été abordé sur le forum.
    Ce n'est pas pour faire quelque chose de particulier, simplement pour appréhender un peu mieux cet algo et apprendre toujours un peu plus, et par la même occasion coder un peu plus ... je sais que le sujet avait déjà été abordé, mais ce n'est pas tant le déroulement de l'algo à strictement parler qui me posait problème, mais la façon dont je devais représenter mes données

    Enfin, personnellement je n'utilise pas de liste Closed (jamais compris quel était son intérêt, par rapport au fait de stocker cette info directement dans les noeuds).
    C'est pas faux ! enfin quoiqu'il en soit, il faudra toujours une open list


    En tout cas merci de vos réponses, je vais essayer de regarder un peu ça si j'arrive à me bloquer une heure ou deux ce week end.

    Bon week end a vous,


    PierreAd

  5. #5
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Points : 15 920
    Points
    15 920
    Par défaut
    Comme je te l'ai dit, pour la liste Open il faut une file de priorité (triée). Si tu es en Java ou en C++ tu as des conteneurs standards style set ou priority_queue qui, sans être optimaux, font déjà bien le boulot.

  6. #6
    Membre averti Avatar de Linio
    Inscrit en
    Octobre 2005
    Messages
    431
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 431
    Points : 332
    Points
    332
    Par défaut
    Pour l'avoir codé et si tu recherches du pédagogique le fonctionnel serait mieux que l'OO, mais je suppose que ça peut s'appliquer à ce que tu veux.
    Tu peux englober le type que tu veux en A*, pourvu que tu puisse faire les traitements appropriés sur ce type.

    Moi non plus pas de closed list, mais j'avais une liste de noeuds déjà parcourus (c'est peut être la même chose?)

    (Moi je viens de finir un SSS*, c'est plus rigolo, mon puissance4 m'explose à chaque fois lol)
    Linio

Discussions similaires

  1. Réponses: 15
    Dernier message: 14/04/2006, 21h03
  2. [debutant] Comment commencer avec Perl?
    Par Murieyaya dans le forum Langage
    Réponses: 3
    Dernier message: 20/12/2005, 15h58
  3. Comment commencer ?
    Par cyrill.gremaud dans le forum Interfaces Graphiques en Java
    Réponses: 14
    Dernier message: 25/11/2005, 15h04
  4. [Wamp] Comment commencer ?
    Par mencaglia dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 5
    Dernier message: 11/11/2005, 18h34
  5. [JEU]Comment commencer
    Par mavina dans le forum Général Java
    Réponses: 7
    Dernier message: 04/11/2005, 08h39

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