Algorithme djisktra

Landry_Boy Messages postés 7 Date d'inscription   Statut Membre Dernière intervention   -  
mamiemando Messages postés 33772 Date d'inscription   Statut Modérateur Dernière intervention   -
Bonjour,
SVP quelqu'un pourait m'aider a implementer l'algorithme de djisktra en python ...
Ca fait longtemp que j'essaie mais je tombe toujours sur des boucles infinies ...
SVP ????



Configuration: Windows / Chrome 92.0.4515.159

3 réponses

yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention   Ambassadeur 1 584
 
0
Phil_1857 Messages postés 1872 Date d'inscription   Statut Membre Dernière intervention   168
 
Bonjour,

"je tombe toujours sur des boucles infinies"

peux-tu nous montrer ce que tu as fait ?

L'indentation étant importante en Python, merci de copier/coller ici ton code complet avec les balises de code
mode d'emploi:
https://codes-sources.commentcamarche.net/faq/11288-les-balises-de-code

Visuellement, ça doit ressembler à ceci (avec la coloration syntaxique) :

def test():
    print('test')

test()
0
mamiemando Messages postés 33772 Date d'inscription   Statut Modérateur Dernière intervention   7 882
 
Bonjour,

Si tu as une boucle infinie, essaye de déterminer quelle est la boucle qui tourne indéfiniment. Ajouter un print à différents endroits de l'algorithme peut sans doute t'aider à y voir plus clair.

Pour rappel, l'algorithme de Dijkstra traverse chaque sommet et chaque arc une fois s'il est atteignable depuis le sommet source, zéro sinon. La boucle la plus suspecte est celle qui gère le tas des sommets à visiter. Assure-toi que les sommets rencontrés ne sont bien traités qu'au plus une fois. Tu pourrais ajouter un compteur pour voir combien de fois tu traverses cette boucle. Si cette valeur excède le nombre de sommets du graphe, c'est qu'il y a un problème dans ton omplémentation.

Pour éviter de traiter un sommet plusieurs fois (en particulier s'il est atteignable via plusieurs chemins incidents), on a recours un vecteur qui à chaque sommet associe son état traditionnellement représenté par un vecteur de couleur (blanc = pas encore visité, gris = en cours de visite, noir = visité).

Le pseudo code de l'algorithme est disponible :ici.

Si tu bloques, il faut nous partager ton code et nous dire ce que tu ne comprends pas.

Bonne chance
0