Belman-Ford与此之间有区别吗?
有人可以解释如何实现这一点,以找到给定节点之间的最长路径? 我知道算法计算两个节点之间的最短路径,所以如果有人可以解释如何实现,我可以弄清楚如何修改它以给我最长的路径。
答案 0 :(得分:1)
我正在回答这个问题,万一其他人将来会有同样的问题。
我发现了一个python实现(遗憾的是它没有记录,我仍然在试图完全理解它)。
这计算一个给定节点与图中所有其他节点之间的最短路径。
from json.encoder import INFINITY
def BellmanKalaba(v,x,m):
L=list()
iteration=list()
for j in range(len(v)):
iteration.append(v[x][j])
L.append(iteration)
k=0
while True:
iteration=[0 for i in range(len(v))]
for j in range(len(v)):
minim=INFINITY
for i in range(1,len(v)):
a=L[len(L)-1][i]+v[i][j]
if a < min:
minim=a
iteration[j]=minim
k+=1
L.append(iteration)
if iteration==L[len(L)-1]:
return L
if k==m:
return 0
v是表示加权图的矩阵, x是起始节点, m是边数。
现在,这有点怪异,因为L实际上会包含2个列表,所以从x到y的最短路径将是min(L[0][y], L[1][y]).
我无法准确解释它是如何工作的。
此外,这不适用于任何给定的图表。
这是一个开始,也许现在有人可以跳进去帮忙。