【发布时间】:2013-02-24 00:07:47
【问题描述】:
我正在寻找一种有效的算法,可以帮助我列出图表中的所有切割。该图是一个流网络(有向图),具有固定的源和汇。我想找出所有可能的切割集,一侧为源,另一侧为下沉。
请注意,优先级是找到所有割集,而不是最小割。
例如, 考虑具有以下边列表的图: s-->a-->t s-->b-->t
上图的割集是:{sa,sb}, {at,bt}, {sa,sb,at}, {sa,sb,bt}, {sa,sb,at,bt}
【问题讨论】:
我正在寻找一种有效的算法,可以帮助我列出图表中的所有切割。该图是一个流网络(有向图),具有固定的源和汇。我想找出所有可能的切割集,一侧为源,另一侧为下沉。
请注意,优先级是找到所有割集,而不是最小割。
例如, 考虑具有以下边列表的图: s-->a-->t s-->b-->t
上图的割集是:{sa,sb}, {at,bt}, {sa,sb,at}, {sa,sb,bt}, {sa,sb,at,bt}
【问题讨论】:
这不是有效的,因为你有指数级的削减。 你有源是 S,T 中的汇,其中 S-T 是切割。 现在想一想: 对于每个顶点,它可以在 S 中,也可以在 T 中。 将所有顶点视为一个长二进制数,其中1表示顶点i在S中,0表示它在T中。
你有多少选择?如果你有 n 个顶点,你可以有多少个不同的二进制数?答案是 2^n,但我们可以忽略水槽和水槽,但它不是妈妈, 我们仍然有 O(2^n) 用于不同的切割。
【讨论】: