algorithm - 用于在图中查找最小切割的随机收缩算法

标签 algorithm random graph

好吧,这是我在图中寻找割的算法(我不是在这里谈论最小割)

假设我们有一个无向图的邻接表。

  1. 选择图上的任意顶点(用枢轴表示)
  2. (随机)选择图上的任何其他顶点。 (用 x 表示)
  3. 如果两个顶点之间有一条边,则从图中删除这条边。并将 x 连接到的所有顶点转储到枢轴上。 (如果不是,则返回步骤 2。
  4. 如果任何其他顶点连接到 x,则更改邻接列表,以便现在 x 被枢轴替换。即它们连接到 Pivot。
  5. 如果顶点数大于2(回到第2步)
  6. 如果等于 2。只计算 2 个点中任何一个的邻接列表中存在的顶点数。这会给削减

我的问题是,这个算法是否正确?

最佳答案

这是对无向图的 Krager 最小割算法的一个很好的解释。

我认为您可能错过了一个细节。或者我只是误读了您的描述。

您想删除所有自循环。

例如,在您删除一个顶点并运行您的算法后,顶点 A 现在可能有一条从顶点 A 到顶点 A 的边。这称为自循环。并且它们在收缩两个顶点的过程中频繁产生。作为第一步,您可以简单地检查整个图形是否存在自环,但也有一些更复杂的方法。

这有意义吗?

关于algorithm - 用于在图中查找最小切割的随机收缩算法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10055220/

相关文章:

algorithm - 将二维点映射到固定网格

excel - 如何生成一个随机范围的数字,这些数字总和为结束参数

c - 为什么我的 srand(time(NULL)) 函数每次在 c 中生成相同的数字?

algorithm - 图算法的运行时间

java - 找出图的最大长度

algorithm - 图同构

java - 如何创建平衡的团体

algorithm - 是否存在仅通过每种颜色一次的路径?

c - 如何打印一定范围内的随机值?

c - 单链表中的快速排序