예제 #1
0
def dijkstra(graph,start):
    start.setDistance(0)
    pq =PriorityQueue()    
    pq.buildHeap([(aVertex.getDistance(),aVertex) for aVertex in graph])
    while pq.size() > 0:
        currentVert = pq.delMin()
        for nextVert in currentVert.getConnections():
            newDist = currentVert.getDistance() + currentVert.getWeight(nextVert)
            if newDist < nextVert.getDistance():
                nextVert.setDistance(newDist)
                nextVert.setPred(currentVert)
                pq.decreaseKey(nextVert, newDist)