清华大学算法分析与设计 课件 第08讲shortestpathsWord文件下载.docx
《清华大学算法分析与设计 课件 第08讲shortestpathsWord文件下载.docx》由会员分享,可在线阅读,更多相关《清华大学算法分析与设计 课件 第08讲shortestpathsWord文件下载.docx(29页珍藏版)》请在冰豆网上搜索。
⏹Someoftheinstanceoftheproblemshavenegativeweightedges
⏹Negativecycles:
thenegativeinfinitivelength
清华大学6
3-1
0511-∞
-∞-∞
清华大学7
Cycles
⏹Canashortestpathcontainscycles:
⏹Case1.PositiveCycles:
neveroccurs
⏹Case2.NegativeCycles:
-∞
⏹Case3.zeroCycles:
removable
清华大学9
Representingshortestpaths
⏹Usingpredecessorlabelcangettheresult.
⏹LetG=(V,E)beagraph
⏹π:
V⓪V∪{null}
⏹Shortest-pathstreerootedatsisadirectedsubgraphG’=(V’,E’)ofG.
⏹V’isthesetofverticesreachablefromsinG
⏹G’formsarootedtreewithrootsand
⏹Forallv∈V’,theuniquesimplepathfromstovinG’
isashortestpathfromstovinG
清华大学10
Relaxation
⏹Weusingthetechniqueofrelaxation:
⏹Letd[v]beashortest-pathofestimate,itmustbegreatthanorequaltoitsrealdistanceofvfroms,thesource.
⏹Initialize-Single-Source(G,s)
1.Foreachvertexv∈V[G]
1.d[v]=∞
2.π[v]=null
2.d[s]=0
清华大学14
Somecommentsonrelaxation
⏹松弛什么?
⏹Relaxtheconstrainoftriangleinequality
清华大学16
Relax
⏹Relax(u,v,w)
1.Ifd[v]>
d[u]+w(u,v)
1.d[v]⓪d[u]+w(u,v)
2.π[v]⓪u
清华大学17
Propertiesandrelaxation
1.Triangleinequality:
forany(u,v)∈Ewehave
δ(s,v)≤δ(s,u)+w(u,v)
2.Upperboundproperty:
wealwayshaved[v]≥
δ(s,v)forallverticesv∈V,andonced[v]achievesthevalueδ(s,v),itneverchanges
3.Nopathproperty:
ifthereisnopathfromstov,wealwayshaved[v]=δ(s,v)=∞
清华大学18
Properties
4.Convergenceproperty:
ifp=<
s,…,u,v>
isashortestpathinGforsomeu,v∈V,andifd[u]=δ(s,u)atanytimepriortorelaxingedge(u,v),thend[v]=δ(s,v)atalltimeafterward
5.Pathrelaxationproperty:
v0,v1…,vk>
isashortestpathfromv0=stovk,andtheedgesinparerelaxedintheorder(v0,v1),(v1,v2),…(vk-1,vk),thend[vk]=δ(s,vk).Thispropertyholdsregardlessofanyotherrelaxationstepsthatoccurs.
清华大学19
Properties:
6.Predecessor-subgraphproperty:
Onced[v]=
δ(s,v)forallvinV,thepredecessorsubgraphisashortest-pathstreerootedats.
清华大学20
Bellman-Fordalgorithm
⏹Bellman-Ford(G,w,s)
1.Initialize-Single-Source(G,s)
2.Fori⓪1to|V[G]|-1
1.Foreachedge(u,v)∈E[G]
1.Relax(u,v,w)
3.Foreachedge(u,v)∈E[G]
d[u]+w(u,v)returnfalse
4.Returntrue
清华大学
21
ThecorrectnessofBellman-Fordalgorithm
1.如果没有由s可达的负圈:
1.则再结束时,验证通过,且距离正确。
2.如果有由s可达的负圈:
1.设此圈为<
v0,v1,…,vn,v0>
若所有三角不等式成立,则与此负圈矛盾。
【】
清华大学29
Sidi
ngle-sourceshortestpathsinarectedacyclicgraph
⏹Dag-shortest-paths(G,w,s)
1.TopologicalsorttheverticesofG
2.Initialize-Single-Source(G,w,s)
3.Foreachvertexu,takenintopologicalorder
1.ForeachvinAdj[u]
清华大学30
Dag’sShortest-paths
∞
31
Dijkstra’sAlgorithm
⏹Itsolvestheproblemofnonnegativeweightedgraph’sshortest-paths
⏹ItsmaintrickistomaintainasetSofverticeswhosefinalshortest-pathweightsfromthesourceshavealreadybeendetermined.
清华大学32
⏹Dijkstra(G,w,s)
1.Initialize-SingleSource(G,s)
2.S⓪φ
3.Q⓪V[G]
4.WhileQ!
=φ
1.u⓪Q.extractMin()
2.S⓪SU{u}
3.ForeachvertexvinAdj[u]
清华大学33
Complexanalysis
⏹
TheMaintainingofMinimumQueuebycalling:
1.
Insert
2.
Extract
3.
Decreasekey
4.
Usingaggregateanalysis,wehaveO((V+E)lgV)
5.
ByusingFibonacciheap,therunningtimeisO(Vlg
V+E),byreducingtheamortizedcostof
decreasingkeyoperations
38
ApplicationofShortestpaths
⏹图像缝合问题:
⏹Linearprogrammingwithdifferenceconstraintscanbeequivalentlyconvertedtoaproblemofshortestpathofagraph.【可行解问题】
清华大学39
Thelinearprogrammingproblem
⏹Object:
∑ni=1cixisubjectto
⏹xj-xi≤bkfori,jin{1,2,…,n}
⏹Convertingtoagraph!
如何找到可行解!
⏹nverticesrepresentthenvariablesplusanartificialvertexv0,
⏹xj-xi≤bkmeanstoaddanedge(i,j)withweightbk
⏹ConstraintsconverttotheEdgesbetweentheverticesandplusartificialedges(v0,v1),…,(v0,vn)
⏹X=(d(v0,v1),d(v0,v2),…,d(v0,vn),)isafeasible
solutionofthelinearprogrammingproblem
清华大学40
所有
点之间的最短路径
⏹动态规划方法:
⏹最优解结构:
⏹设l(k)ij为最多包含k条边的从顶点i到顶点j的最短路径的距离,如果没有这样的路径,则距离定义为∞,于是
⏹l(0)0ifi=j,∞otherwise
ij=
⏹l
(1)w(i,j),whatisw?
⏹l(m)ij=min(l(m-1)ij,p(m)ij)
⏹p(m)ij=mink=1,n(l(m-1)ik+w(k,j))
⏹l(m)min(l(m-1)+w(k,j))Why?
ij=k=1,nik
清华大学41
π(k)
ij—每个顶点每条路径的前驱
⏹π(k)
ij=?
如何计算
⏹与上面计算相关!
清华大学42
问题
的解
⏹什么是δ(i,j),Weclaim:
⏹δ(i,j)=l(n-1)ij=l(n)ij=l(n+1)(n+2)
ij=lij
⏹为什么?
清华大学43
算法1
1.L=W;
2.Fori=1,n
1.L=Extended-Shortest-Paths(L,W)
清华大学45
Floyd-Warshallalgorithm
⏹设d(k)ij为最多包含k个中间点的顶点i到顶点j的最短路径的距离,如果没有这样的路径,则距离定义为∞,于是
⏹d(0)ij=w(i,j),
⏹π(0)ij=nullifthereisnoedge(i,j),elseitisi.
⏹d(m)ij=min(d(m-1)ij,d(m-1)im+d(m-1)mj)Why?
⏹如何计算π(k),从i到j最多包含k个中间点的最短路径中j的
ij
父节点?
⏹由π(n)计算最短路径。
⏹复杂度:
O(V3)
清华大学48
Johnson算法
⏹针对稀疏矩阵,Johnson提出一种更为有效的算法。
⏹引理25.1改变加权函数不改变最短路径:
⏹设:
h:
E⓪R
⏹定义:
wˆ(u,v)=w(u,v)+h(u)-h(v)
⏹设p=<
v0,v1,…,vk>
是从v0到vk的任意路径,则p是从v0到vk的在权W下的最短路径的充要条件是:
从v0到vk的在权wˆ的最短路径,G在权W下有负回路的充要
条件是G在权wˆ有负回路。
清华大学49
W下
Johnson(G)
计算G’
1.V[G’]=V[G]U{s}
2.E[G’]=E[G]U{(s,v):
vinV[G],且w(s,v)=0}
如果Bellman-Ford(G’,w,s)==flase
1.Print图有负回路,returnnull;
Foreach(u,v)inE[G’]
1.w’(u,v)=w(u,v)+δ(s,u)-δ(s,v)
ForeachuinV[G’]
1.Dijkstra(G,w’,u)得到δ’(u,v),对所有v属于V[G]
2.对所有v属于V[G]
1.duv=δ’(u,v)-δ(s,u)+δ(s,v)
5.ReturnD=(duv)n×
n
52
复杂性分析
1.计算G’:
O(V+E)
2.Bellman-Ford算法:
O(VE)
3.O(E)
4.O(V*Dijkstra算法复杂性)=O(V*(VlgV+E))=O(V2lgV+VE)
清华大学53
总结
⏹单源最短路径问题
⏹方法:
贪婪:
Dijkstra;
BellmanFord
⏹关键点:
松弛
⏹应用:
最优化问题、图像处理、
⏹多源最短路径问题
⏹动态规划问题:
不同子空间设立
⏹群论及其应用
⏹问题转换
54