salut
tu as juste a traduire le pseudo code en c :
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.enlever(debut)
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 n1.parcouru > n2.parcouru + distance(n1, n2) // distance correspond au poids de l'arc reliant n1 et n2
n1.parcouru = n2.parcouru + distance(n1, n2)
n1.precedent = n2 // Dis que pour aller à n1, il faut passer par n2
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
bon ok c'est incompréhensible , mais essaye toujours
algorithme de Dijkstra
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.