繁体   English   中英

Dijkstra - 最近邻确定

Dijkstra - Nearest Neighbour Determination

提示:本站收集StackOverFlow近2千万问答,支持中英文搜索,鼠标放在语句上弹窗显示对应的参考中文或英文, 本站还提供   中文繁体   英文版本   中英对照 版本,有任何建议请联系yoyou2525@163.com。

在Dijkstra的算法中,我对最近邻居的决心不知所措。 我得到如下奇怪的结果首先这是我的网络文件的内容,代表7个节点之间的距离:

http://pastebin.com/PUM5qT6D

(不包括第一列中的数字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
> f.readlines()]
>     #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)

所以,我试着查看网络函数提供的值,在populateNodeTable函数中将所有节点设置为'visited = false',然后通过查看前一个函数中提供的值来确定节点的最近邻居,尽管我得到了此错误消息:

> 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]]

到目前为止,非常好 - 当我运行populateNodeTable函数和我的网络函数时,我得到了这个输出:

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

另外,这很好 - 除了上述功能之外,执行myNeighbour函数后的输出是:

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

这个输出是错误的,是我的问题开始的地方

此外,当我运行我的所有代码包括tentativeDistance时,我收到此错误:

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

我为这篇文章长篇大论而道歉,我很沮丧,我无法掌握似乎是基本的功能

2 个回复

您将方法nearestNeighbour传递给tentativeDistance而不是方法的结果。

这是问题所在

tentativeDistance(theNetwork, nodeTable, nearestNeighbour)

应该

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

看一下错误,你会看到代码试图迭代一个不可迭代的对象。 这在Python for - in - syntax中是隐含的。

您可能还会考虑重命名变量名称或函数名称以避免混淆。 无论如何,这都是一个容易犯的错误。

1 最近邻有不确定点

我有两个2D点集A和B 我想在B为每个点找到A的第一个最近邻居。 但是,我正处理不确定点(即一个点有一个均值(二维向量)和一个2 * 2协方差矩阵)。 因此,我想使用Mahalanobis距离,但在scikit-learn (例如)中,我不能为每个点传递协方差矩阵,因为它期望单个协方差 ...

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

我需要对一组二维数据进行聚类分析(我可能会在此过程中添加额外的维度)。 分析本身将构成输入到可视化中的数据的一部分,而不是其他过程(例如, 径向基函数网络 )的输入。 为此,我想找到一组主要是“看起来正确”的集群,而不是阐明一些隐藏的模式。 我的直觉是, k均值将是一个很好的起 ...

3 最近邻

我收到一个错误,不太确定为什么会这样......这是我的数据的样子 ...

4 不确定要使用哪个多维最近邻算法

我目前正在一个项目中,该项目需要一个线程来构造3D环境中最接近播放器的30个(ish)最近进程的队列。 所有这些过程都可以在环境中移动,也可以保留其放置的起始节点。我考虑过使用R树,但是由于其插入时间极高,因此似乎不太可行。 KD-树不起作用,因为它们往往仅适用于静态环境。 还 ...

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

好的,我对代码进行了一些更改,但是对于应该将哪些变量名传递给我的NearestNeighbour函数感到困惑。 这两个功能可以正常工作: 因此,一切顺利。 但是,我的下一个功能给我一个错误,尽管我更改了方括号中的变量名称,但仍无法解决问题。 这是下一个功能代码和错误消息: ...

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

我正在尝试找出3维空间中点A的最近邻居。 A点附近有几个点。 我现在想知道哪个点最接近点A。 我可以计算点A到另一个点的X,Y和Z距离,但是我不知道如何将其放入公式中。 假设点A的X坐标与点B的X坐标相差0个单位,点A的Y坐标与点B的Y坐标相差1个单位,而点A的Z坐标与点B的 ...

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

我正在阅读维基百科上的推荐系统,“算法”部分似乎表明 K 最近邻和基于用户的协同过滤算法是两种不同的东西。 这样对吗? 根据我的理解,它们不是一样的吗? 如果不是,它们之间有什么区别? 谢谢。 ...

8 Matlab最近邻插值结果

我期望最近的邻居插值就像round (xq)并获得v的值。 例如: 我预计“最近”的行为与上round类似。 然而, 这既不是round (xq),也不是floor ,也不是ceil 。 我想念什么? ...

9 WPF ImageScalingMode最近邻居

我们正在移植C ++图像缩放算法,该算法以以下方式缩放图像。 我们使用NearestNeighbor ImageScalingMode复制WPF中的行为。 图像缩放在WPF中可以按比例放大。 但这不适用于缩小规模。 我在WPF中选择了错误的缩放模式吗? 还是我应该做其他事情以获得所需的 ...

10 K最近邻距离

我正在研究学校的kNN分类问题。 计算从一个xy坐标到另一个xy坐标的距离的公式是什么? 我只需要代数,而不是代码。 ...

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

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2022 STACKOOM.COM