Gee*_*eek 39 algorithm graph-theory graph-algorithm
relaxation of an edge
在图论的背景下意味着什么?我在研究Dijkstra的单源最短路径算法时遇到了这个问题.
krj*_*ani 47
这里有一个很好的算法描述,也解释了放松的概念.
"松弛"的概念来自最短路径的估计与螺旋拉伸弹簧的长度之间的类比,螺旋拉伸弹簧不是为压缩而设计的.最初,最短路径的成本是高估的,就像一个伸展的弹簧.当找到较短的路径时,估计的成本降低,并且弹簧放松.最终,找到最短路径(如果存在的话)并且弹簧已经放松到其静止长度.
放宽边缘(您可以在其他最短路径算法中找到的概念)试图通过使用另一个顶点来降低到达顶点的成本.
您正在计算从起始顶点(例如S)到所有其他顶点的距离.在某些时候,您有中间结果 - 当前估计.对于某些顶点u和v,放松是你检查的过程:
if directly_connected(v, u)
if est(S, v) > est(S, u) + dist(u,v)
est(S, v) = est(S, u) + dist(u, v)
Run Code Online (Sandbox Code Playgroud)
其中est(S,a)
是距离的当前估计,并且dist(a,b)
是图中邻居的两个顶点之间的距离.
您在松弛过程中基本上检查的是天气,您通过c "转移"路径可以改善从a到b的当前估计(这种"转移"将是从a到c以及从c到b的路径的长度).