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

20

我正在尝试了解图论的主要概念和其中的算法。大多数算法似乎都包含一个"Relaxation Condition",我不确定这是什么。

请有人给我解释一下。

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

 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[]

感谢

3个回答

43

松弛步骤:

  • 你有两个节点,uv
  • 对于每个节点,你都有一个从源节点到该节点的暂定距离(对于除源节点外的所有节点,它从正无穷开始,只有在达到最小值时才会减少)。

松弛步骤基本上是在问这个问题:

  • 我已经知道我可以通过某些距离为dist[v]的路径到达v。通过从u到达v,我能否改善这种情况呢?(其中后者的距离将为dist[u] + weight(u, v)

图形化表示:

s ~~~~~~~> v
 \         ^
  \        |
   \~~~~~> u
你知道一条路径 s~>v,它的距离为dist[v],还知道一条路径 s~>u,它的距离为dist[u]。如果 dist[u]+weight(u,v)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

2
很高兴听到这个好消息(希望我没有因为打错字让你感到困惑,现在已经修复)。如果你认为这是正确的答案,你也可以按左边的勾号来标记它(我肯定认为它是正确的:))。 - Dimitris Andreou

13

英语单词“relaxation”之一的含义是减少某物。因为在第14、15和16行,您实质上是检查是否可以减少(优化)当前计算的距离,我猜这就是所谓的“松弛条件(relaxation condition)”。


0

记忆方法之一是:

放松肌肉以减轻其张力或压力

因此我们说:

在Dijkstra算法中,放松最近顶点的出边
在Bellman-Ford算法中,重复放松边缘

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接