Bellman-ford算法图解
生活随笔
收集整理的這篇文章主要介紹了
Bellman-ford算法图解
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
介紹
與Dijkstra算法不同,Bellman-ford能對付有負權重的邊,而且可以檢測negative cycle.
假設V存的是所有的頂點(vertex),E存的是所有的邊(edge),w(u, v)代表頂點u到頂點v的權重,PI[v]存的是從哪一個頂點到頂點v(PI[A]=s表示s->A)
以這幅圖為例子。
偽代碼
初始化
偽代碼
for v in V:d[v]=INFINITYPI[v]='' d[s]=0
循環
for i in range(1, len(V)): # 從i到len(V)-1for w(u,v) in E:# relax操作if d[v] > d[u] + w(u,v):d[v] = d[u] + w(u,v)PI[v] = u檢查有沒有negative-weight cycle
什么是negative-weight cycle?
那種每次循環一遍d[v]都會減少的,循環無數次后,d[v]會趨近于負無窮。
總結
以上是生活随笔為你收集整理的Bellman-ford算法图解的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: (五十五)iOS多线程之GCD
- 下一篇: C语言extern关键字(去使用外部全局