首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Dijkstra算法中边的松弛

Dijkstra算法中边的松弛
EN

Stack Overflow用户
提问于 2012-10-08 13:08:39
回答 8查看 51.9K关注 0票数 58

在图论的背景下,relaxation of an edge是什么意思?我是在研究Dijkstra的单源最短路径算法时遇到这个问题的。

EN

回答 8

Stack Overflow用户

回答已采纳

发布于 2012-10-08 13:23:57

下面是是对算法的一个很好的描述,它也解释了松弛的概念。

“松弛”的概念来源于对最短路径的估计与螺旋张力弹簧长度的类比,而螺旋张力弹簧不是为压缩而设计的。最初,最短路径的成本被高估了,就像一个伸展的弹簧。当发现较短的路径时,估计成本降低,弹簧放松。最后,找到了最短的路径,如果存在的话,弹簧就会放松到休息的长度。

票数 56
EN

Stack Overflow用户

发布于 2012-10-08 13:25:36

Dijkstra算法中的松弛过程是指更新连接到一个顶点v的所有顶点的代价,如果这些代价通过包含路径v来改进的话。

票数 33
EN

Stack Overflow用户

发布于 2012-10-08 13:31:48

放松一个边缘(你也可以在其他最短路径算法中找到一个概念)试图通过使用另一个顶点来降低到达顶点的成本。

你在计算从一个起始顶点到所有其他顶点的距离,比如说S。在某种程度上,你有中间的结果--目前的估计。松弛是检查某些顶点u和v的过程。

代码语言:javascript
复制
if directly_connected(v, u)
    if est(S, v) > est(S, u) + dist(u,v)
       est(S, v) = est(S, u) + dist(u, v)

其中est(S,a)是距离的当前估计,dist(a,b)是图中两个邻接点之间的距离。

在松弛过程中,您基本上检查的是,如果您当前的估计值从a到b可以通过“转移”通过c的路径来改进(这种“转移”将是从a到c和从c到b的路径的长度)。

票数 12
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12782431

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档