Implementación en Python del algoritmo de Dijkstra

Este artículo es la continuación del siguiente artículo sobre el algoritmo de Dijkstra: https://128mots.com/index.php/2020/02/18/implementation-python-de-lalgorithme-de-dijkstra/

Aquí está la implementación Python del algoritmo

 de las colecciones importar deque

def dijkstra (gráfico, vértice):
    tail = deque ([vértice])
    distancia = {vértice: 0}
    while cola:
        t = cola.popleft ()
        print ("Estamos visitando la parte superior" + str (t))
        para vecino en el gráfico [t]:
                queue.append (vecino)
                nueva_distancia = distancia [t] + gráfica [t] [vecino]
                if (vecino no en la distancia o nouvelle_distance & lt; distancia [vecino]):
                    distancia [vecino] = nueva_distancia
                    print ("Actualizar vértice" + str (vecino) + "con distancia:" + str (new_distance))

    distancia de retorno



#Lista de adyacencia del gráfico
gráfico = {'A': {'B': 15, 'C': 4}, 'B': {'E': 5}, 'C': {'E': 11, 'D': 2} , 'D': {'E': 3}, 'E': {}}
distancia = dijkstra (gráfico, 'A')
print ("Distancias" + str (distancia)) 

https://128mots.com/index.php/2021/01/13/algorithme-tri-quantique/ https://128mots.com/index.php/2021/01/19/levenshtein-python/

from collections import deque

def dijkstra(graph, vertex):
    queue = deque([vertex])
    distance = {vertex: 0}
    while queue:
        t = queue.popleft()
        print("On visite le sommet " + str(t))
        for voisin in graph[t]:
                queue.append(voisin)
                nouvelle_distance = distance[t] + graph[t][voisin]
                if(voisin not in distance or nouvelle_distance < distance[voisin]):
                    distance[voisin] = nouvelle_distance
                    print("Met à jour le sommet " + str(voisin) + " avec la distance : " + str(nouvelle_distance))
                    
    return distance



#Liste d'ajacence du graphe
graph = {'A':{'B':15,'C':4},'B':{'E':5},'C':{'E':11,'D':2},'D':{'E':3},'E':{}}
distance = dijkstra(graph,'A')
print("Distances" + str(distance))

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée.