回溯(b a c k t r a c k i n g)是一種系統(tǒng)地搜索問(wèn)題解答的方法。為了實(shí)現(xiàn)回溯,首先需要為問(wèn)題定義一個(gè)解空間( solution space),這個(gè)空間必須至少包含問(wèn)題的一個(gè)解(可能是最優(yōu)的)。在迷宮老鼠問(wèn)題中,我們可以定義一個(gè)包含從入口到出口的所有路徑的解空間;在具有n 個(gè)對(duì)象的0 / 1背包問(wèn)題中(見(jiàn)1 . 4節(jié)和2 . 2節(jié)),解空間的一個(gè)合理選擇是2n 個(gè)長(zhǎng)度為n 的0 / 1向量的集合,這個(gè)集合表示了將0或1分配給x的所有可能方法。當(dāng)n= 3時(shí),解空間為{ ( 0 , 0 , 0 ),( 0 , 1 , 0 ),( 0 , 0 , 1 ),( 1 , 0 , 0 ),( 0 , 1 , 1 ),( 1 , 0 , 1 ),( 1 , 1 , 0 ),( 1 , 1 , 1 ) }。
標(biāo)簽:
搜索
上傳時(shí)間:
2014-01-17
上傳用戶:jhksyghr
Floyd-Warshall算法描述
1)適用范圍:
a)APSP(All Pairs Shortest Paths)
b)稠密圖效果最佳
c)邊權(quán)可正可負(fù)
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)算法結(jié)束:dis即為所有點(diǎn)對(duì)的最短路徑矩陣
3)算法小結(jié):此算法簡(jiǎn)單有效,由于三重循環(huán)結(jié)構(gòu)緊湊,對(duì)于稠密圖,效率要高于執(zhí)行|V|次Dijkstra算法。時(shí)間復(fù)雜度O(n^3)。
考慮下列變形:如(I,j)∈E則dis[I,j]初始為1,else初始為0,這樣的Floyd算法最后的最短路徑矩陣即成為一個(gè)判斷I,j是否有通路的矩陣。更簡(jiǎn)單的,我們可以把dis設(shè)成boolean類型,則每次可以用“dis[I,j]:=dis[I,j]or(dis[I,k]and dis[k,j])”來(lái)代替算法描述中的藍(lán)色部分,可以更直觀地得到I,j的連通情況。
標(biāo)簽:
Floyd-Warshall
Shortest
Pairs
Paths
上傳時(shí)間:
2013-12-01
上傳用戶:dyctj