Dijkstra Algorithm Help

MRAB python at mrabarnett.plus.com
Tue Mar 8 13:49:26 EST 2011


On 08/03/2011 18:12, yoro wrote:
> Hello,
>
> I am having a little trouble writing Dijkstra's Algorithm, at the
> point where I have to calculate the distance of each node from the
> source - here is my code so far:
>
> infinity = 1000000
> invalid_node = -1
> startNode = 0
>
> class Node:
>       distFromSource = infinity
>       previous = invalid_node
>       visited = False
>
> def populateNodeTable():
>      nodeTable = []
>      index =0
>      f = open('route.txt', 'r')
>      for line in f:
>        node = map(int, line.split(','))

"node" will be a list of ints, but you're not doing anything with them.

>        nodeTable.append(Node())
>        print nodeTable[index].previous
>        print nodeTable[index].distFromSource
>        index +=1
>      nodeTable[startNode].distFromSource = 0
>
>      return nodeTable
>
> def tentativeDistance(currentNode, nodeTable):
>      nearestNeighbour = []
>      for currentNode in nodeTable:
>           if Node[currentNode].distFromSource +
> #	 currentDistance = + nodeTable[currentNode]
> #      currentDistance = currentNode.distFromSource +
> nodeTable.currentNode
>           currentNode.previous = currentNode
>           currentNode.length = currentDistance
>           currentNode.visited = True
>           currentNode +=1
>           nearestNeighbour.append(currentNode)
>           print nearestNeighbour
>
>      return nearestNeighbour
>
> currentNode = startNode
>
> if __name__ == "__main__":
>      populateNodeTable()

The only effect of "populateNodeTable" is to return a node table, which
is then discarded.

>      tentativeDistance(currentNode,populateNodeTable())
>
> As can be seen from the lines commented out, I have tried a few ways
> of getting the distance though none of them has worked; I am not sure
> on how I can resolve this problem



More information about the Python-list mailing list