Bonjour,

Je suis en T°S spé ISN et j'ai un Dm à rendre pour dans deux semaines, le but étant d'améliorer l'algorithme de Dijkstra avec ce que l'on connais, voire un peu plus.

Voici mon code :

from tkinter import *



Nvilles = 6 # On définit le nombre de ville par défault, ici 6.

i=0 # Compteur pour la boucle
u=0

L0=[] # liste de base pour la matrice avec les distances entre les villes
L1=[]
L2=[]
L3=[]
L4=[]
L5=[]

while i<=6: # Remplissage des listes par l'utilisateur avec les distances qu'ils souhaitent sous forme de matrice
i=i+1
while u<6:
nombre=int(input("Entrer les 6 distances entre les villes en fonction de votre ville A."))
L0.append (nombre)
u=u+1
i=i+1
u=0
while u<6:
nombre=int(input("Entrer les 6 distances entre les villes en fonction de votre ville B."))
L2.append (nombre)
u=u+1
u=0
i=i+1
while u<6:
nombre=int(input("Entrer les 6 distances entre les villes en fonction de votre ville C."))
L2.append (nombre)
u=u+1
u=0
i=i+1
while u<6:
nombre=int(input("Entrer les 6 distances entre les villes en fonction de votre ville D."))
L3.append (nombre)
u=u+1
u=0
i=i+1
while u<6:
nombre=int(input("Entrer les 6 distances entre les villes en fonction de votre ville E."))
L4.append (nombre)
u=u+1
u=0
i=i+1
while u<6:
nombre=int(input("Entrer les 6 distances entre les villes en fonction de votre ville F."))
L5.append (nombre)
u=u+1
i=i+1

m_adjac = [L0,L1,L2,L3,L4,L5]



""" ALGROITME DE DIJKSTRA """
DIJ=list()
for i in range (Nvilles):
DIJ.append([1000000,"X","N"])
ville_select=0
dist_interm=0
while ville_select != Nvilles-1:
minimum=1000000
for n in range (1,Nvilles):
if DIJ[n][2]=="N":
dist=m_adjac[ville_select][n]
dist_totale=dist_interm+dist
if dist !=0 and dist_totale < DIJ[n][0]:
DIJ[n][0]=dist_totale
DIJ[n][1]=ville_select
if DIJ[n][0]<minimum:
minimum=DIJ[n][0]
pville_select=n
ville_select=pville_select
DIJ[ville_select][2]="0"
dist_interm=DIJ[ville_select][0]
for i in range(1,Nvilles):
print (DIJ[i])
print ("\n")
chemin=list()
ville=Nvilles-1
chemin.append(ville)
while ville !=0:
ville=DIJ[ville][1]
chemin.append(ville)
print ("plus court chemin, à lire à l'envers : ",chemin)
print ("distance totale : ",DIJ[Nvilles-1][0])



Mafenetre = Tk()
Mafenetre.title('Alogrithme de Dijkstra')
Mafenetre.geometry('300x300+300+300')
Affichage = Label(Mafenetre, text="Le chemin le plus est (à lire à l'envert) est :")
Affichage.pack()
Affichage = Label(Mafenetre, text=(chemin))
Affichage.pack()
bouton=Button(Mafenetre,text='Quiter',command=Mafenetre.destroy)
bouton.pack()
Mafenetre.mainloop()




Lorsque je lance l'algo tous va bien pour ma boucle de création de matrice, et des que j'ai finis il me met une erreure : "IndexError: list index out of range". Et je ne vois absolument pas d'où cela pourrait venir ...

Merci de vos réponses !

Guillaume (ps: l'incrémentation ne marche pas à cause du copier coller je pense)