Está en la página 1de 4

7. import matplotlib.

pyplot as plt

import networkx as nx

# Define estilos

node_color = 'blue' # Cambiar color de los nodos

font_size = 12 # Cambiar tamaño de la fuente en las etiquetas

node_size = 300 # Cambiar tamaño de los nodos

# Dibujar el grafo con los estilos personalizados

plt.figure(figsize=(8, 6))

nx.draw(G, with_labels=True, node_color=node_color, font_size=font_size, node_size=node_size)

plt.title('Grafo con configuración personalizada')

plt.show()

# Obteniendo camino más corto _ Rutas

# General

camino = list(nx.all_shortest_paths(G, source='NK', target='CD'))

print('Caminos más cortos: \n', camino)

# Dijkstra

cdk1 = list(nx.dijkstra_path(G, source='NK', target="CD", weight='Km'))

print('Camino por algoritmo dijkstra KM: \n', cdk1)

cdk2 = list(nx.dijkstra_path(G, source='NK', target="CD", weight='Costo'))

print('Camino por algoritmo dijkstra $: \n', cdk2)

# A*

as1 = list(nx.astar_path(G, ('NK'), ('CD'), weight="Km"))

print('Camino por algoritmo A* KM: \n', as1)

as2 = list(nx.astar_path(G, ('NK'), ('CD'), weight="Costo"))


print('Camino por algoritmo A* $: \n', as2)

Diferencia entre los 3 metodos trabajados

(`nx.all_shortest_paths`)**: Este método encuentra todos los caminos más cortos entre un par de
nodos en el grafo. Devuelve una lista de todos estos caminos. Es útil cuando se necesita conocer
todas las opciones de rutas más cortas disponibles.

**Dijkstra (`nx.dijkstra_path`)**: Este algoritmo encuentra el camino más corto entre dos nodos en
un grafo ponderado con pesos no negativos. En tu código, se utiliza para encontrar el camino más
corto utilizando dos criterios de peso diferentes: “Km” y “Costo”.

(`nx.astar_path`)**: A* es un algoritmo de búsqueda informada que encuentra el camino más corto


desde un nodo de inicio a un nodo objetivo en un grafo ponderado. Utiliza una función heurística
para estimar la distancia restante al nodo objetivo. En tu código, también se utiliza para encontrar el
camino más corto utilizando dos criterios de peso diferentes: “Km” y “Costo”.

8. def ver_ruta(ruta):

Total_km = 0

Total_costo = 0

Print(‘Descripción de la ruta: ‘)

For i in range(len(ruta)-1):

Origen = ruta[i]

Destino = ruta[i+1]

Km = G[origen][destino][‘weight’] # Se usa ‘weight’ en lugar de ‘Km’

Costo = G[origen][destino][‘Costo’]

Total_km += Km

Total_costo += costo

Print(nodos.loc[origen][‘Node’],’->’, nodos.loc[destino][‘Node’],

‘: distancia en Km: ‘, Km,

‘, costo del trayecto $: ‘, costo)

Print(‘Duración total: ‘,total_km,’ Km’,

‘, Costo total:’,total_costo,’$’)
Print(‘……………………………………’)

Ver_ruta(as1) # Selección por Km

Ver_ruta(as2) # Selección por Costo

El método ver ruta se usa para mostrar información en la que estás ingresado sobre una ruta
específica, lo que hace más fácil ver los detalles específicos e importantes del viaje como costo y
distancia

9.import networkx as nx

Import matplotlib.pyplot as plt

Class GrafoPersonalizado(nx.Graph):

Def __init__(self):

Super().__init__()

Def plot_ruta(self, ruta, origen_color=’blue’, destino_color=’green’, intermedio_color=’red’):

Posi = nx.circular_layout(self) # posición para graficación

Nx.draw(self, pos=posi, # grafo principal

Node_color=’lightblue’,

Edge_color=’blue’,

Font_size=20,

Width=2,

With_labels=True,

Node_size=3500,

Alpha=0.8)

subG = nx.Graph() # Grafo auxiliar con la ruta escogida

for i in range(len(ruta) – 1):

subG.add_edge(ruta[i], ruta[i + 1])

for node in self.nodes:


if node == ruta[0]: # Si es el nodo origen

color = origen_color

elif node == ruta[-1]: # Si es el nodo destino

color = destino_color

else:

color = intermedio_color

nx.draw_networkx_nodes(self, pos=posi, nodelist=[node], node_color=color,


node_size=3000)

nx.draw(subG, pos=posi, # ruta

node_color=’dodgerblue’,

edge_color=’red’,

font_size=20,

width=3,

with_labels=True,

node_size=3000)

plt.show()

# Ejemplo de uso

G = GrafoPersonalizado()

G.add_edges_from([(1, 2), (2, 3), (3, 4), (4, 5), (5, 6)])

Ruta = [1, 2, 3, 4, 5, 6]

G.plot_ruta(ruta)

También podría gustarte