Algorithme de Dijkstra

markaz Messages postés 357 Statut Membre -  
markaz Messages postés 357 Statut Membre -
Bonjour,
J'ai un sujet d'algo en pascal qui doit déterminer la plus courte distance entre l'administration d'une école et les salles de classes
Quelqu'un peut t-il me donner le code source ou le code en pascal de l'algo de Dijkstra ?
Merci
Configuration: Windows XP Internet Explorer 8.0

7 réponses

  1. Cqqn Messages postés 975 Statut Membre 21
     
    De rien.

    Etape 1 :
    Sélectionner le titre de ton post

    Etape 2 :
    Copier la sélection

    Etape 3 :
    Ouvrir une nouvelle fenêtre ou un nouvel onglet de telle sorte que la page s'affiche sur un moteur de recherche, ou bien utiliser directement le champ de saisie qui parfois se situe directement dans la barre d'outil du navigateur internet utilisé.

    Etape 4 :
    Coller ce qui a préalablement été copié dans le champ idoine

    Etape 5 :
    Appuyer sur la touche entrée du clavier, ou cliquer sur le bouton qui valide la saisie, afin que le moteur de recherche effectue la recherche.

    Etape 6 :
    Cliquer sur l'un des liens proposés en résultat par le moteur de recherche

    Etape 7 :
    Démerdes-toi !
    Faut pas abuser non plus !
    A noter que tu peux sauter les Etapes 1 à 6 pour peu que tu aies été un minimum attentif lors du cours, ou bien te référer aux notes d'un des étudiants, voire les tiennes.

    1
  2. markaz Messages postés 357 Statut Membre 5
     
    Quelqu'un peut-il m'expliquer?

    fonction Dijkstra (nœuds, fils, distance, debut, fin)
    Pour n parcourant nœuds
    n.parcouru = infini // Peut être implémenté avec -1
    n.precedent = 0
    Fin pour
    debut.parcouru = 0
    PasEncoreVu = nœuds
    Tant que PasEncoreVu != liste vide
    n1 = minimum(PasEncoreVu) // Le nœud dans PasEncoreVu avec parcouru le plus petit
    PasEncoreVu.enlever(n1)
    Pour n2 parcourant fils(n1) // Les nœuds reliés à n1 par un arc
    Si n2.parcouru > n1.parcouru + distance(n1, n2) // distance correspond au poids de l'arc reliant n1 et n2
    n2.parcouru = n1.parcouru + distance(n1, n2)
    n2.precedent = n1 // Dit que pour aller à n2, il faut passer par n1
    Fin si
    Fin pour
    Fin tant que
    chemin = liste vide
    n = fin
    Tant que n != debut
    chemin.ajouterAvant(n)
    n = n.precedent
    Fin tant que
    chemin.ajouterAvant(debut)
    Retourner chemin
    Fin fonction Dijkstra
    1
  3. linx161 Messages postés 784 Statut Membre 21
     
    va voir sur sourceforge...
    et n'oublies pas, google est ton ami (sinon je peut te le faire mais va falloir attendre une heure...)
    0
  4. linx161 Messages postés 784 Statut Membre 21
     
    ça marche aussi, mais c'est pas sympa... il est ptet malade et on lui a fait passer que les exos, ca m'est arrivé et c'est pas tellement le genre de réponses que j'aurai apprécié
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. markaz Messages postés 357 Statut Membre 5
     
    j'ai essayé mais sans résultat
    0
  7. Cqqn Messages postés 975 Statut Membre 21
     
    ben dans la page wikipedia tu as un bloc en pseudo-code, à partir de là tu dois pouvoir l'adapter dans n'importe quel langage...

    0
  8. markaz Messages postés 357 Statut Membre 5
     
    J'ai vu ce code mais le problème c'est je ne comprend rien en code. les n.parcour, n.ajouter avant etc...
    J'aimerais avoir un code détaillé.
    0