Horje
def Dijsktra(graph,source): dist = [0]*5 dist[0] = source v = 1 unvisited = {place: None for place in graph.keys()} visited = {} current = source currentDistance = 0 unvisited[current] = curr
def Dijsktra(graph,source): dist = [0]*5 dist[0] = source v = 1 unvisited = {place: None for place in graph.keys()} visited = {} current = source currentDistance = 0 unvisited[current] = currentDistance
nodes = ('A', 'B', 'C', 'D', 'E', 'F', 'G')
distances = {
    'B': {'A': 5, 'D': 1, 'G': 2},
    'A': {'B': 5, 'D': 3, 'E': 12, 'F' :5},
    'D': {'B': 1, 'G': 1, 'E': 1, 'A': 3},
    'G': {'B': 2, 'D': 1, 'C': 2},
    'C': {'G': 2, 'E': 1, 'F': 16},
    'E': {'A': 12, 'D': 1, 'C': 1, 'F': 2},
    'F': {'A': 5, 'E': 2, 'C': 16}}

unvisited = {node: None for node in nodes} #using None as +inf
visited = {}
current = 'B'
currentDistance = 0
unvisited[current] = currentDistance

while True:
    for neighbour, distance in distances[current].items():
        if neighbour not in unvisited: continue
        newDistance = currentDistance + distance
        if unvisited[neighbour] is None or unvisited[neighbour] > newDistance:
            unvisited[neighbour] = newDistance
    visited[current] = currentDistance
    del unvisited[current]
    if not unvisited: break
    candidates = [node for node in unvisited.items() if node[1]]
    current, currentDistance = sorted(candidates, key = lambda x: x[1])[0]

print(visited)




Python

Related
how to cycle a list in python Code Example how to cycle a list in python Code Example
*kwargs Code Example *kwargs Code Example
extract text from image python without tesseract Code Example extract text from image python without tesseract Code Example
fading hex color python Code Example fading hex color python Code Example
How to restart a loop Code Example How to restart a loop Code Example

Type:
Code Example
Category:
Coding
Sub Category:
Code Example
Uploaded by:
Admin
Views:
7