Python - Ruta Optima

 
Vista:
sin imagen de perfil
Val: 36
Ha aumentado su posición en 17 puestos en Python (en relación al último mes)
Gráfica de Python

Ruta Optima

Publicado por Alexander (8 intervenciones) el 15/12/2020 08:59:34
Buenas

Tengo un ejercicio que resolví, pero mi solución es muy larga. Seria genial si pudieran ayudarme con alguna solución mas corta. GRACIAS DE ANTEMANO.

Ejercicio:

Debido a la pandemia una empresa de transporte quiere resolver el inconveniente que, dado cuatro localidades a recorrer, debe hallar la ruta que le permita llegar todas las localidades una exclusiva vez, dando por seguro que la distancia que recorra sea mínima. El transporte no recorre la misma ruta todos los días por lo que la distancias
entres los lugares varia. Por ejemplo, se tiene este conjunto de puntos a recorrer con sus respectivas distancias.
Para Ud. ¿Cuál sería el algoritmo solución y código fuente en Python si los valores de las distancias varían?​


Foro

ESTE ES MI CÓDIGO:

1
2
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
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
print(" RUTA OPTIMA ")
 
print("      B       ")
print("     /|\      ")
print("    / | \     ")
print("   /  |  \    ")
print("  F --|-- J   ")
print("   \  |  /    ")
print("    \ | /     ")
print("     \|/      ")
print("      A       ")
 
print("\nINGRESA LA DISTANCIA ENTRE: ")
dist_FB = int(input("F y B: "))
dist_FJ = int(input("F y J: "))
dist_FA = int(input("F y A: "))
dist_BA = int(input("B y A: "))
dist_BJ = int(input("B y J: "))
dist_AJ = int(input("A y J: "))
 
suma = 0
 
print("\nIndicar punto de partida:")
partida = input("-> F / B / J / A: ")
 
if partida == "F":
    if dist_FB <= dist_FJ and dist_FB <= dist_FA and dist_BA <= dist_BJ:
        suma = dist_FB + dist_BA + dist_AJ + dist_FJ
        print("\nRuta a seguir: F -> B -> A -> J -> F")
 
    elif dist_FA <= dist_FJ and dist_FA <= dist_FB and dist_BA <= dist_AJ:
        suma = dist_FA + dist_BA + dist_BJ + dist_FJ
        print("\nRuta a seguir: F -> A -> B -> J -> F")
 
    elif dist_FJ <= dist_FB and dist_FJ <= dist_FA and dist_BJ <= dist_AJ:
        suma = dist_FJ + dist_BJ + dist_BA + dist_FA
        print("\nRuta a seguir: F -> J -> B -> A -> F")
 
    elif dist_FJ <= dist_FB and dist_FJ <= dist_FA and dist_AJ <= dist_BJ:
        suma = dist_FJ + dist_AJ + dist_BA + dist_FB
        print("\nRuta a seguir: F -> J -> A -> B -> F")
 
    elif dist_FB <= dist_FJ and dist_FB <= dist_FA and dist_BJ <= dist_BA:
        suma = dist_FB + dist_BJ + dist_AJ + dist_FA
        print("\nRuta a seguir: F -> B -> J -> A -> F")
 
    elif dist_FA <= dist_FJ and dist_FA <= dist_FB and dist_AJ <= dist_BA:
        suma = dist_FA + dist_AJ + dist_BJ + dist_FB
        print("\nRuta a seguir: F -> A -> J -> B -> F")
 
if partida == "B":
    if dist_FB <= dist_BA and dist_FB <= dist_BJ and dist_FJ <= dist_FA:
        suma = dist_FB + dist_FJ + dist_AJ + dist_BA
        print("\nRuta a seguir: B -> F -> J -> A -> B")
 
    elif dist_BJ <= dist_BA and dist_BJ <= dist_FB and dist_FJ <= dist_AJ:
        suma = dist_BJ + dist_FJ + dist_FA + dist_BA
        print("\nRuta a seguir: B -> J -> F -> A -> B")
 
    elif dist_BA <= dist_FB and dist_BA <= dist_BJ and dist_AJ <= dist_FA:
        suma = dist_BA + dist_AJ + dist_FJ + dist_FB
        print("\nRuta a seguir: B -> A -> J -> F -> B")
 
    elif dist_BA <= dist_FB and dist_BA <= dist_BJ and dist_FA <= dist_AJ:
        suma = dist_BA + dist_FA + dist_FJ + dist_BJ
        print("\nRuta a seguir: B -> A -> F -> J -> B")
 
    elif dist_BJ <= dist_BA and dist_BJ <= dist_FB and dist_AJ <= dist_FJ:
        suma = dist_BJ + dist_AJ + dist_FA + dist_FB
        print("\nRuta a seguir: B -> J -> A -> F -> B")
 
    elif dist_FB <= dist_BA and dist_FB <= dist_BJ and dist_FA <= dist_FJ:
        suma = dist_FB + dist_FA + dist_AJ + dist_BJ
        print("\nRuta a seguir: B -> F -> A -> J -> B")
 
if partida == "J":
    if dist_BJ <= dist_FJ and dist_BJ <= dist_AJ and dist_BA <= dist_FB:
        suma = dist_BJ + dist_BA + dist_FA + dist_FJ
        print("\nRuta a seguir: J -> B -> A -> F -> J")
 
    elif dist_AJ <= dist_FJ and dist_AJ <= dist_BJ and dist_BA <= dist_FA:
        suma = dist_AJ + dist_BA + dist_FB + dist_FJ
        print("\nRuta a seguir: J -> A -> B -> F -> J")
 
    elif dist_FJ <= dist_BJ and dist_FJ <= dist_AJ and dist_FB <= dist_FA:
        suma = dist_FJ + dist_FB + dist_BA + dist_AJ
        print("\nRuta a seguir: J -> F -> B -> A -> J")
 
    elif dist_FJ <= dist_BJ and dist_FJ <= dist_AJ and dist_FA <= dist_FB:
        suma = dist_FJ + dist_FA + dist_BA + dist_BJ
        print("\nRuta a seguir: J -> F -> A -> B -> J")
 
    elif dist_BJ <= dist_FJ and dist_BJ <= dist_AJ and dist_FB <= dist_BA:
        suma = dist_BJ + dist_FB + dist_FA + dist_AJ
        print("\nRuta a seguir: J -> B -> F -> A -> J")
 
    elif dist_AJ <= dist_FJ and dist_AJ <= dist_BJ and dist_FA <= dist_BA:
        suma = dist_AJ + dist_FA + dist_FB + dist_BJ
        print("\nRuta a seguir: J -> A -> F -> B -> J")
 
if partida == "A":
    if dist_FA <= dist_BA and dist_FA <= dist_AJ and dist_FJ <= dist_FB:
        suma = dist_FA + dist_FJ + dist_BJ + dist_BA
        print("\nRuta a seguir: A -> F -> J -> B -> A")
 
    elif dist_AJ <= dist_BA and dist_AJ <= dist_FA and dist_FJ <= dist_BJ:
        suma = dist_AJ + dist_FJ + dist_FB + dist_BA
        print("\nRuta a seguir: A -> J -> F -> B -> A")
 
    elif dist_BA <= dist_FA and dist_BA <= dist_AJ and dist_FB <= dist_BJ:
        suma = dist_BA + dist_FB + dist_FJ + dist_AJ
        print("\nRuta a seguir: A -> B -> F -> J -> A")
 
    elif dist_BA <= dist_FA and dist_BA <= dist_AJ and dist_BJ <= dist_FB:
        suma = dist_BA + dist_BJ + dist_FJ + dist_FA
        print("\nRuta a seguir: A -> B -> J -> F -> A")
 
    elif dist_FA <= dist_BA and dist_FA <= dist_AJ and dist_FB <= dist_FJ:
        suma = dist_FA + dist_FB + dist_BJ + dist_AJ
        print("\nRuta a seguir: A -> F -> B -> J -> A")
 
    elif dist_AJ <= dist_BA and dist_AJ <= dist_FA and dist_BJ <= dist_FJ:
        suma = dist_AJ + dist_BJ + dist_FB + dist_FA
        print("\nRuta a seguir: A -> J -> B -> F -> A")
 
 
print("Ruta optima:", suma, "km. ")
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
4
Responder

una mas cortita jeje

Publicado por leonel (1 intervención) el 11/09/2021 23:25:46
1
2
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
print(" puntos a recorrer ")
 
print("          B       ")
print("        / | \      ")
print("      7   |  9     ")
print("     /    |    \    ")
print("    F  -- |10-- J   ")
print("     \    8    /    ")
print("      4   |  15     ")
print("        \ | /      ")
print("          A       ")
 
print("-------------------------")
 
dist_AF=4
dist_FB=7
dist_BJ=9
dist_JA=15
dist_AB=8
dist_FJ=10
dist_minima=dist_AF+dist_FJ+dist_BJ+dist_AB
while(True):
   print("\nIndicar punto de partida:")
   partida = input("-> F | B | J | A : ")
   if partida=="A":
       print("ruta a recorrer ---A -> F -> J -> B -> A")
       print("distancia recorrida es de: ",dist_minima,"KM")
   elif partida=="F":
       print("ruta a recorrer ---->F -> J -> B -> A ->F")
       print("distancia recorrida es de: ",dist_minima,"KM")
   elif partida=="B":
       print("ruta a recorrer --->B -> A -> F -> J -> B")
       print("distancia recorrida es de: ",dist_minima,"KM")
   elif partida=="J":
       print("ruta a recorrer --->J -> B -> A -> F -> J")
       print("la distancia minima recorrida es de: ",dist_minima,"KM")
 
   else:
       print("error al introducir punto de partida ")
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

una mas cortita jeje

Publicado por Mayra (1 intervención) el 15/11/2021 17:56:22
tengo un proyecto para la escuela, tengo que sacar el camino mas corto desde un grafo, ya tengo parte del programa ya que me muestra las matrices finales de peso y adyacencia
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar