我正在为Coursera上的“Graphs算法”课程做练习,我必须实现Bellman-Ford算法来检测图形是否有负循环,输出1和0。我做了很多压力测试,并且我的实现工作正常,但它在课程的一个测试用例中失败(但除了“错误答案”,他们没有提供任何有关它的信息)。我的实现与您在网上找到的完全一样,因此我看不出我的代码出了什么问题。有任何想法吗?Bellman-Ford算法在python中的实现
def relax(u,v,w,dist,prev):
if dist[u]+w < dist[v]:
dist[v] = dist[u]+w
prev[v] = u
def bellmanFord(V,E):
dist = [float('inf')] * V
prev = [None] * V
dist[0] = 0
for i in range(V-1):
for edge in E:
relax(edge[0],edge[1],edge[2],dist,prev)
#checks for negative cycles
for e in E:
u = e[0]
v = e[1]
w = e[2]
if dist[u]+w < dist[v]:
return 1
return 0
他们不测试空图,是吗? –
或者一个没有强连接的图? –
输入浮点或整数中的权重是多少?它保证图形连接? – kraskevich