首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >图论中的松弛条件是什么?

问图论中的松弛条件是什么?
EN

Stack Overflow用户
提问于 2010-04-07 21:28:52
回答 3查看 9.6K关注 0票数 17

我正在尝试理解图论的主要概念和其中的算法。大多数算法似乎包含一个“松弛条件”,我不确定这是什么。

有人能给我解释一下吗?

其中一个例子是dijkstras算法,这里是伪代码。

代码语言:javascript
复制
 1  function Dijkstra(Graph, source):
 2      for each vertex v in Graph:           // Initializations
 3          dist[v] := infinity               // Unknown distance function from source to v
 4          previous[v] := undefined          // Previous node in optimal path from source
 5      dist[source] := 0                     // Distance from source to source
 6      Q := the set of all nodes in Graph
    // All nodes in the graph are unoptimized - thus are in Q
 7      while Q is not empty:                 // The main loop
 8          u := vertex in Q with smallest dist[]
 9          if dist[u] = infinity:
 10              break                         // all remaining vertices are inaccessible from source
 11          remove u from Q
 12          for each neighbor v of u:         // where v has not yet been removed from Q.
 13              alt := dist[u] + dist_between(u, v)
 14              if alt < dist[v]:             // Relax (u,v,a)
 15                  dist[v] := alt
 16                  previous[v] := u
 17      return dist[]

谢谢

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2010-04-07 21:47:20

松弛步骤:

  • 您有两个节点,u和u每个节点,您与源节点之间有一个暂定的距离(对于除源节点之外的所有节点,它从正无穷大开始,直到达到最小值时才会减小)。

放松的步骤基本上是这样问的:

  • 我已经知道,我可以通过一些距离dist[v]的路径到达v。我可以通过u转到v来改进这一点吗?(其中后者的距离为dist[u] + weight(u, v))

图形化:

代码语言:javascript
复制
s ~~~~~~~> v
 \         ^
  \        |
   \~~~~~> u

你知道一些有距离的路径s~>v,还有一些有距离dist[v]的路径s~>u。如果为dist[u] + weight(u, v) < dist[v],则路径s~>u->v比s~>v短,因此最好使用该路径!

(我写a~>b是指从a到b的任意长度的路径,而a->b我指的是从a到b的直接单边)。

您可能还想查看此讲座:http://ocw.mit.edu/OcwWeb/Electrical-Engineering-and-Computer-Science/6-046JFall-2005/VideoLectures/detail/embed17.htm

票数 40
EN

Stack Overflow用户

发布于 2010-04-07 21:43:27

英语单词"relaxation“的意思之一就是减少一些东西。因为在第14、15和16行,你本质上是在检查是否可以减少(优化)当前计算的距离,我猜这就是为什么它被称为“松弛条件”。

票数 12
EN

Stack Overflow用户

发布于 2022-01-16 12:40:21

记住的一种方法是:

。对肌肉施加张力或压力( reduce relax or reduce)

所以我们说:

。Dijkstra's算法中最近点的relax outgoing edges

。Bellman-Ford算法中的relax edges repeatedly

两者都意味着尝试减少从起始节点到到达边另一端的顶点的距离

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

https://stackoverflow.com/questions/2592769

复制
相关文章

相似问题

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