| 12
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 
 |  
 
villes = [1,2,3,4,5]
 
dist = [[0  , 55  , 303 , 188 , 183],
        [55 , 0   , 306 , 176 , 203],
        [303, 306 , 0   , 142 , 155],
        [188, 176 , 142 , 0   , 123],
        [183, 203 , 153 , 123 , 0    ]]
 
n=len(villes)
 
def circuit_glouton(villes, dist, depart):
 
    visitees=[False]*n
    distance_total = 0
    courante=depart
 
    for i in range (n-1):
        visitees[courante] = True
        suivante=plus_proche(courante,dist, visitees)
        distance_total += cumul_etapes(courante, suivante,  dist)
        courante = suivante
    distance_total += cumul_etapes(courante, suivante,  dist)
    print (' la distance totale est de :', distance_total)
 
def plus_proche(villes, dist, visitees):
    pp= None
    for i in range(len(visitees)):
        if not visitees[i]:
            if pp == None or dist[villes][i] < dist[villes][pp]:
                pp = i
    return pp
 
def cumul_etapes (courante,suivante,dist):
    distance =dist[courante][suivante]
    print (" il faut aller de", villes[courante], "à", villes[suivante],'en',distance, "km")
    return distance
 
print(circuit_glouton(1,dist,villes[0])) | 
Partager