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 :

chemin le plus court


Sujet :

Algorithmes et structures de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 21
    Par défaut chemin le plus court
    Bonjour,
    J'essaie de trouver le chemin le plus court dans un labyrinthe. Mon labyrinthe ressemble à ça :
    111111111111111
    101010101000001
    101010101010111
    100010101000021
    111011101010111
    100003100010001
    101011101010101
    101010001000101
    101011101010101
    101000000010001
    101110101010111
    100010001010001
    101010101010111
    100000101000001
    111111111111111

    Les 1 sont des murs, et les 0 des passages. Et je veux aller du point 2 au point 3 (par le chemin le plus court). (les deux est sur la droite, et le trois vers le milieu.
    La je regarde pour le faire avec l'algorithme de Dijkstra, mais j'ai quelques petits problèmes pour commencer. Car mon tableau ne ressemble pas beacoup aux exemples que j'ai pu voir qui contennaient des graphes. Si quelqun pouvait me dire comment commencer.
    Merci.

    PS : C'est une pour une programmation en C.

  2. #2
    Expert confirmé Avatar de Graffito
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    5 993
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 5 993
    Par défaut
    Bonjour,

    Voir la routine Delphi (pas en C ) dans un post précédent, ca devrait répondre à ton problème.

    http://www.developpez.net/forums/sho...ghlight=chemin

    la fonction Map_isPathOK(i,j) vaudra true quand la case (i,j) est à 0.

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 21
    Par défaut
    Je ne comprends pas tout dans ton algo.

    Sinon, la j'ai trouvé une explication de "A*" sur le net mais je n'arrive pas à trouver l'algo. Car je ne vois pas comment créer la liste ouverte et la liste fermée. Quels doit être leur type ?

    Merci

  4. #4
    Expert confirmé Avatar de Graffito
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    5 993
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 5 993
    Par défaut
    Bonjour,

    Le principe est assez simple :
    - on gère une liste de cases de plus en plus éloignées du départ,
    - on commence avec une seule case : la case de départ,
    - on traite succesivement chaque case de liste,
    - on regarde pour toutes les cases voisines (non encore traitées) si il y a obstacle ou si c'est la fin,
    - lorsque la case n'a pas encore été traitée et n'est pas un obstacle, on l'empile dans la liste.
    - lorsqu'on tombe sur la fin, il reste plus qu'à remonter le chemin jusqu'au début.

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 21
    Par défaut
    Que signifie :

    var PointX,PointY,PointP : array of integer ;
    int*PointX ?

    (**)procedure AddPoint(X,Y:integer) ;
    C'est quoi "procedure" ?

    inc(iend) ;
    "inc " C'est pour incrementer ?

    if MAP_IsPathOk(StartPathX,StartPathY) and MAP_IsPathOk(EndPathX,EndPathY)C'est quoi le MAP_IsPathOk ?
    SetLength(PointX,grid.nbx*grid.nby) ;
    SetLength ??


    En fait je comprends pas grand chose dans cette algo.

  6. #6
    Inactif  
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    743
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 743
    Par défaut
    Quand on connait le plan du labyrinthe, on utilise en général cette méthode:
    http://math.berkeley.edu/~sethian/Mo...erobotics.html
    L'auteur a juste corsé le problème en se promenant avec une échelle dans le labyrinth.
    Ca consiste grosso modo à simuler la propagation d'une onde ou d'un liquide. Tu verses du liquide à ton point de départ et tu chronomètre sa progression en incrémentant un compteur.
    J'ai simulé le commencement de la diffusion sur ton exemple.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
     
    ***************
    *0*0*0*0*76567*
    *0*0*0*0*6*4***
    *000*0*0*54321*
    ***0***0*6*4***
    *0000!*007*567*
    *0*0***0*0*6*0*
    *0*0*000*007*0*
    *0*0***0*0*0*0*
    *0*0000000*000*
    *0***0*0*0*0***
    *000*000*0*000*
    *0*0*0*0*0*0***
    *00000*0*00000*
    ***************

Discussions similaires

  1. Requete recursive - Graphe - Chemin le plus court
    Par nicottin dans le forum SQL
    Réponses: 7
    Dernier message: 08/11/2007, 00h33
  2. 2D C++ : Améliorer Recherche chemin le plus court
    Par Julien_C++ dans le forum Développement 2D, 3D et Jeux
    Réponses: 1
    Dernier message: 04/11/2006, 13h58
  3. Trouver le chemin le plus court
    Par poly128 dans le forum Langage
    Réponses: 8
    Dernier message: 24/04/2006, 08h28
  4. chemin le plus court
    Par fabetvince dans le forum Algorithmes et structures de données
    Réponses: 13
    Dernier message: 21/04/2006, 13h38
  5. algorithme de Ford (recherche chemin le plus court)
    Par abstraite dans le forum Algorithmes et structures de données
    Réponses: 2
    Dernier message: 19/05/2005, 10h39

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