我正在爲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