我试图在给定约束路径必须总距离小于某个参数(比方说1000)的加权图上找到最短路径。如何在图上找到满足约束条件的最短路径
我试过以下,但我不知道为什么我的代码是错误的。
def directedDFS(digraph, start, end, maxTotalDist):
visited = []
if not (digraph.hasNode(start) and digraph.hasNode(end)):
raise ValueError('Start or end not in graph.')
path = [str(start)]
if start == end:
return path
shortest = None
for node in digraph.childrenOf(start):
if (str(node) not in visited):
visited = visited + [str(node)]
firststep_distance = digraph.childrenOf(start)[node][0]
firststep_outer_distance = digraph.childrenOf(start)[node][1]
if (firststep_distance <= maxTotalDist):
newPath = directedDFS(digraph, node, end, maxTotalDist-firststep_distance)
if newPath == None:
continue
if (shortest == None or TotalDistance(digraph,newPath) < TotalDistance(digraph,shortest)):
shortest = newPath
if shortest != None:
path = path + shortest
else:
path = None
return path
另一件事是,我不希望比较基于从给定节点开始的路径的距离,而是基于整个路径从原来的起点的距离。我不知道在这里做这件事的最好方法。
你的意思是跳数或距离最短(后者是微不足道的,所以我猜这是前者)? – NPE 2011-05-06 16:12:07
您是否试图找到包含总路径成本(其边缘权重之和)小于1000的最少边的路径? – 2011-05-07 03:15:06