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 :

Algorithme du plus court chemin


Sujet :

Algorithmes et structures de données

  1. #1
    Futur Membre du Club
    Inscrit en
    Avril 2005
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 9
    Points : 7
    Points
    7
    Par défaut Algorithme du plus court chemin
    Bonjour à toutes et à tous!!!

    Je viens a vous car j'ai un petit soucis.

    Je souhaiterais arriver a calculer un trajet de métro.

    Je m'explique: j'ai un fichier texte qui comprends les ligne de métro avec les differentes stations.

    Je voudrais permettre à l'utilisateur d'entrer ces deux stations (départ et arrivée) et ensuite que le programme calcul les routes pour le trajet avec les changement de lignes.

    Mon problème en ce moment est que je n'arrive pas à imaginer l'algorithme me permettant de calculé la route de mon trajet.


    Si quelqu'un pourrais m'éclairer ce serais très aimable.

    Cordialement,

    Greg3105

    PS: Je vais faire mon programme en JAVA

  2. #2
    Rédacteur

    Avatar de Matthieu Brucher
    Profil pro
    Développeur HPC
    Inscrit en
    Juillet 2005
    Messages
    9 810
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur HPC
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2005
    Messages : 9 810
    Points : 20 970
    Points
    20 970
    Par défaut

    Y'a pleins de sujets dans ce forum là-dessus !

  3. #3
    Membre averti Avatar de piff62
    Inscrit en
    Décembre 2003
    Messages
    431
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Décembre 2003
    Messages : 431
    Points : 417
    Points
    417
    Par défaut
    Pour information, l'algorithme du plus court chemin s'appelle l'algorithme de dijkstra
    En utilisant je pense que tu peux trouver toute la documentation necessaire

  4. #4
    Membre habitué Avatar de larnicebafteur
    Inscrit en
    Mai 2006
    Messages
    133
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 133
    Points : 131
    Points
    131
    Par défaut
    Il faut s'interesser à la théorie des graphes pour ce genre de problèmes.
    On peut trouver un document interessant sur le net :
    http://www4.ac-lille.fr/~math/classe...es/Graphes.pdf

    On y trouve l'algorithme de dijkstra, mais il en existe d'autres ...

  5. #5
    Membre chevronné
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    949
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 949
    Points : 1 856
    Points
    1 856
    Par défaut
    L'algirtithme A* est plus performant que l'algorithme de Dijkstra mais aussi bien plus complexe.

  6. #6
    Membre expérimenté

    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2006
    Messages
    450
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2006
    Messages : 450
    Points : 1 630
    Points
    1 630
    Par défaut
    Je ne vois pas où l'algorithme A* est bien plus complexe que l'algorithme Dijkstra. Si je ne m'abuse, ce n'est qu'un rajout d'une fonction heuristique. Corrigez-moi si je me trompe.

  7. #7
    Rédacteur

    Avatar de Matthieu Brucher
    Profil pro
    Développeur HPC
    Inscrit en
    Juillet 2005
    Messages
    9 810
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur HPC
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2005
    Messages : 9 810
    Points : 20 970
    Points
    20 970
    Par défaut
    Tu ne te trompes pas.

  8. #8
    Membre chevronné
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    949
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 949
    Points : 1 856
    Points
    1 856
    Par défaut
    Certes, ce n'est "que" l'ajout d'une heuristique.

    C'est plus complexe pour plusieurs raisons. D'abord, c'est plus difficile à comprendre. L'algorithme de Disktra est immédiat, pas A*. Ensuite, il faut trouver une bonne heuristique. Ca peut être trivial tout comme ça peut être très difficile. Enfin, le débogage est compliqué par le fait que même avec une heuristique défailllante l'algorithme peut fonctionner normalement la plupart du temps.

  9. #9
    Membre expérimenté

    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2006
    Messages
    450
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2006
    Messages : 450
    Points : 1 630
    Points
    1 630
    Par défaut
    Ouais... je ne vois pas en quoi la notion de vol d'oiseau comme heuristique soit compliquée à comprendre... même un gamin de maternelle la comprend. Et je ne vois pas en quoi l'algorithme dijkstra est immédiat alors que passer de dijkstra à A* est immédiat.

    Enfin, le débogage est compliqué par le fait que même avec une heuristique défailllante l'algorithme peut fonctionner normalement la plupart du temps.
    Du moment qu'une heuristique donne de meilleurs résultats "statistiquement" (j'entends par là dans la plupart des cas), qu'elle soit "fausse" ou "vraie" n'a aucune importance, elle est meilleure point final.

  10. #10
    Membre régulier
    Inscrit en
    Décembre 2004
    Messages
    150
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 150
    Points : 121
    Points
    121
    Par défaut
    et l'avantage avec l'algo A* c'est que tu ne traites pas nécessairement toutes les données du problème alors que Disktra traite toutes les données

    Conclusion A* est optimal!!

  11. #11
    Rédacteur

    Avatar de Matthieu Brucher
    Profil pro
    Développeur HPC
    Inscrit en
    Juillet 2005
    Messages
    9 810
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur HPC
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2005
    Messages : 9 810
    Points : 20 970
    Points
    20 970
    Par défaut
    Sauf que le pire des cas arrive fréquemment dans un jeu, et là ça peut ramer comme un rat mort.

  12. #12
    Membre expérimenté

    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2006
    Messages
    450
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2006
    Messages : 450
    Points : 1 630
    Points
    1 630
    Par défaut
    et l'avantage avec l'algo A* c'est que tu ne traites pas nécessairement toutes les données du problème alors que Disktra traite toutes les données
    Ce n'est pas vrai, si le noeud d'arrivé est distant de N du noeud de départ, dijkstra va parcourir tous les noeuds d'une distance inférieure à N du noeud de départ. S'il existe des noeuds d'une distance supérieure à N, dijkstra ne les parcourra pas. MAIS A* ne parcourt pas forcément tous les noeuds d'une distance inférieure à N (sauf dans le pire des cas).

    Sauf que le pire des cas arrive fréquemment dans un jeu, et là ça peut ramer comme un rat mort.
    Je pense que c'est très peu fréquent pour le problème du plus court chemin dans les jeux vidéos et même quasi inexistant (sauf peut-être dans les labyrinthes et encore...).

  13. #13
    Membre chevronné
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    949
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 949
    Points : 1 856
    Points
    1 856
    Par défaut
    Citation Envoyé par TanEk
    Du moment qu'une heuristique donne de meilleurs résultats "statistiquement" (j'entends par là dans la plupart des cas), qu'elle soit "fausse" ou "vraie" n'a aucune importance, elle est meilleure point final.
    Attention, l'heuristique doit toujours sous-estimer ou égaler la distance réelle faute de quoi on ne trouve pas un chemin optimal.

  14. #14
    Membre éclairé
    Avatar de panda31
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Juin 2003
    Messages
    670
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : Conseil

    Informations forums :
    Inscription : Juin 2003
    Messages : 670
    Points : 848
    Points
    848
    Par défaut
    et IDA* ? J'ai travaillé sur un projet de jeu SOKOBAN et pour ma part, mon travail consistait à l'implémentation de A* et un autre groupe était chargé de l'algorithme IDA*, son concurrent. D'après tout ce que j'ai vu dessus, il est plus adapté à de gros volumes de données que A* qui grossit très vite.

Discussions similaires

  1. [PHP 5.0] [Algorithme] Dijkstra : plus court chemin
    Par Opheodrys dans le forum Langage
    Réponses: 8
    Dernier message: 05/11/2012, 11h45
  2. Recherche algorithme de plus court chemin
    Par WileECoyote dans le forum Intelligence artificielle
    Réponses: 1
    Dernier message: 20/02/2011, 15h44
  3. Algorithme du plus court chemin
    Par ndjeur dans le forum Débuter
    Réponses: 2
    Dernier message: 29/12/2009, 15h00
  4. Algorithme du plus court chemin
    Par Didier77 dans le forum C
    Réponses: 4
    Dernier message: 24/05/2007, 20h54
  5. Algorithme du plus court chemin
    Par greg3105 dans le forum Langage
    Réponses: 6
    Dernier message: 29/04/2006, 20h02

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