![](/img/trans.png)
[英]Calculate resulting frequency from a given harmonic node, or multiple nodes, rounded to the nearest harmonic less than n
[英]How to find nodes at distance less than n from the given node?
从理论上讲,我可以使用Dijkstra的算法来查找所有节点的距离,但是如果我有一个大图,我将浪费大量时间来计算到远程节点的距离。 还有更有效的算法吗?
如果未对边缘进行加权(或者等效地,如果它们都具有相同的权重),则可以仅进行宽度优先搜索,直到所需的深度为止。 如果对它们进行加权,Dijkstra的算法是您的最佳选择:它还会按照与起始顶点的距离增加的顺序探索节点,因此,一旦找到的下一个顶点距离您的最大允许距离更远,就停止它。
您可以对此进行修改的广度优先搜索(即使是加权图)。
listNodes(node start , int maxRange)
list queue
set visited
add(queue , start)
add(visited , start)
while ! isEmpty(queue)
pair p = remove(queue , 0)
int distTmp = p.dist
node n = p.node
//only neighbours that haven't yet been visited
for node next in disjoint(listNeighbours(n) , visited)
add(visited , next)//mark as visited
//store the node in the queue with the distance to start as attribute
add(queue , pair(next , distTmp + distance(n , next)))
return visited
如果未对图形进行加权,则distance(node , node)
对于邻居distance(node , node)
将始终返回1。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.