#### Dijkstra - Nearest Neighbour Determination

（不包括第一列中的数字1-7）

``````> infinity = 1000000 invalid_node = -1
> startNode = 0
>
> #Values to assign to each node class Node:
>      distFromSource = infinity
>      previous = invalid_node
>      visited = False
>
> #read in all network nodes
> #node = the distance values between nodes def network():
>     f = open ('network.txt', 'r')
>     theNetwork = [[int(node) for node in line.split(',')] for line in
>     #print theNetwork
>
>     return theNetwork
>
> #for each node assign default values
> #populate table with default values def populateNodeTable():
>     nodeTable = []
>     index = 0
>     f = open('network.txt', 'r')
>     for line in f:
>       node = map(int, line.split(','))
>       nodeTable.append(Node())
>
>       #print "The previous node is " ,nodeTable[index].previous
>       #print "The distance from source is " ,nodeTable[index].distFromSource
>       index +=1
>     nodeTable[startNode].distFromSource =
> 0
>
>     return nodeTable
>
> #find the nearest neighbour to a particular node def
> nearestNeighbour(nodeTable,
> theNetwork):
>      nearestNeighbour = []
>      nodeIndex = 0
>      for node in nodeTable:
>           if node != 0 and Node.visited == False:
>              nearestNeighbour.append(nodeIndex)
>              nodeIndex +=1
>      print nearestNeighbour
>
>      return nearestNeighbour
>
> def tentativeDistance (theNetwork,
> nodeTable, nearestNeighbour):
>     shortestPath = []
>     for nodeIndex in nearestNeighbour:
>          currentDistance = nearestNeighbour[] + startNode
>          print currentDistance
> ##         if currentDistance < Node.distFromSource:
> ##            theNetwork[Node].previous = nodeIndex
> ##            theNetwork[Node].length = nodeIndex
> ##            theNetwork[Node].visited = True;
> ##            shortestPath.append(indexNode)
> ##            nodeIndex +=1
> ##    print shortestPath
>
> currentNode = startNode
>
> if __name__ == "__main__":
>     nodeTable = populateNodeTable()
>     theNetwork = network()
>     nearestNeighbour(nodeTable, theNetwork)
>     tentativeDistance(theNetwork, nodeTable, nearestNeighbour)
``````

``````> Traceback (most recent call last):
> File "C:\Documents and Settings\Harvey\Desktop\2dArray.py", line 77, in <module>
>     tentativeDistance(theNetwork, nodeTable, nearestNeighbour)   File
> "C:\Documents and Settings\Harvey\Desktop\2dArray.py", line 51, in tentativeDistance
>     for nodeIndex in nearestNeighbour: TypeError: 'function' object is not iterable
``````

``````[[0, 2, 4, 1, 6, 0, 0], [2, 0, 0, 0, 5, 0, 0], [4, 0, 0, 0, 5, 5, 0], [1, 0, 0, 0, 1, 1, 0], [6, 5, 0, 1, 0, 5, 5], [0, 0, 5, 1, 5, 0, 0], [0, 0, 0, 0, 5, 0, 0]]
``````

``````> The previous node is  -1
The distance from source is  1000000 # happens 7 times#
>
``````

`[0, 1, 2, 3, 4, 5, 6]`

``````> for nodeIndex in nearestNeighbour:
TypeError: 'function' object is not iterable
``````

2 个回复

``````tentativeDistance(theNetwork, nodeTable, nearestNeighbour)
``````

`````` x = nearestNeighbour(nodeTable, theNetwork)
tentativeDistance(theNetwork, nodeTable, x)
``````

1 最近邻有不确定点

2 为ak最近邻居确定最佳k

3 最近邻

2020-12-06 03:09:03 1 47   knn
4 不确定要使用哪个多维最近邻算法

5 确定迪杰斯特拉的最近邻居

6 确定3维空间中的最近邻居

2017-03-23 19:27:49 2 24   math
7 K 最近邻与基于用户的最近邻

8 Matlab最近邻插值结果

9 WPF ImageScalingMode最近邻居

10 K最近邻距离

2015-09-09 14:15:36 1 292   java/ knn