Floyd-Warshall算法描述
1)適用范圍:
a)APSP(All Pairs Shortest Paths)
b)稠密圖效果最佳
c)邊權可正可負
2)算法描述:
a)初始化:dis[u,v]=w[u,v]
b)For k:=1 to n
For i:=1 to n
For j:=1 to n
If dis[i,j]>dis[i,k]+dis[k,j] Then
Dis[I,j]:=dis[I,k]+dis[k,j]
c)算法結束:dis即為所有點對的最短路徑矩陣
3)算法小結:此算法簡單有效,由于三重循環結構緊湊,對于稠密圖,效率要高于執行|V|次Dijkstra算法。時間復雜度O(n^3)。
考慮下列變形:如(I,j)∈E則dis[I,j]初始為1,else初始為0,這樣的Floyd算法最后的最短路徑矩陣即成為一個判斷I,j是否有通路的矩陣。更簡單的,我們可以把dis設成boolean類型,則每次可以用“dis[I,j]:=dis[I,j]or(dis[I,k]and dis[k,j])”來代替算法描述中的藍色部分,可以更直觀地得到I,j的連通情況。
標簽:
Floyd-Warshall
Shortest
Pairs
Paths
上傳時間:
2013-12-01
上傳用戶:dyctj
// 工程名稱: 61_SpeechClock
// 功能描述: 61板程序示例--具有語音播報功能的電子鐘
// 使用61板上的三個按鍵控制報時和時間調整:
// Key1 - 按一下播報年、月、日,再按一下播報時、分
// 長按Key1鍵達到1.5秒,則進入日期時間調整模式
// Key2 - 在調整模式下,使年、月、日、時、分、秒增加
// Key3 - 在調整模式下,使年、月、日、時、分、秒減小
// 涉及的庫: CMacro1016.lib
// SacmV26e.lib
// 組成文件: main.c, Sound.c, Clock.c, Clock_Speech.c, Clock_Adjust.c
// Key.asm, hardware.asm, ISR.asm
// A2000.h, Sound.h, Clock.h, Clock_Speech.h, Clock_Adjust.h, Key.h, SPCE061A.h,
// 硬件連接: 61板自帶的三個按鍵已經連接在IOA0~IOA2上
// 維護記錄: 2006-8-30 v1.0
標簽:
SpeechClock
Key1
61
工程
上傳時間:
2016-03-07
上傳用戶:semi1981