【发布时间】:2011-05-08 09:49:05
【问题描述】:
我们都知道并喜欢 s-t 最小切割算法,但它们都切割了图中的边缘。有没有切过节点的变种?
【问题讨论】:
标签: algorithm language-agnostic graph graph-theory
我们都知道并喜欢 s-t 最小切割算法,但它们都切割了图中的边缘。有没有切过节点的变种?
【问题讨论】:
标签: algorithm language-agnostic graph graph-theory
因此,要使用 s-t 最小割算法,您需要将图形转换为流网络。这给出了一个隐含的有向图(边缘向前流动的方向)。您可以使用此有向表示将图形转换为应该解决此问题的东西。本质上,您将每个顶点 V(不包括源和汇)转换为两个顶点,分别称为 A 和 B。A 获得 V 的所有入边,B 获得 V 的所有出边。然后创建最大容量为无穷大的边 A -> B。
我认为,如果您对此运行通常的 s-t 最小切割算法,它只会选择您创建的边缘。我认为唯一需要的修改是在 A 的入度为 1 的情况下,它可能会选择要切割的边,但只需选择 A 作为顶点。 (这取决于 s-t 算法的实现)
我希望这是有道理的。我不确定这是否有效(即我不想想出一个合适的证明),但直觉上它会这样做。我的直观想法是,如果您切割“非顶点”边,您不妨切割“顶点”边,因为它与断开图形的效果相同。
【讨论】: