如何在图中找到这样的连接边对的最大数量,每对与另一对至少被两条边隔开?

Posted

技术标签:

【中文标题】如何在图中找到这样的连接边对的最大数量,每对与另一对至少被两条边隔开?【英文标题】:How to find maximum number of such pairs of connected edges in a graph that each pair is separated from another pair by at least two edges? 【发布时间】:2015-07-31 13:19:45 【问题描述】:

我需要在图中找到最大数量的连接边对,以使每对与其他对之间至少有两条边分开。这可以看作是最大匹配,没有覆盖交替路径中每个分量长度为 2 的所有边的约束。

条款说明:

    连通对:边对必须在同一个连通分量中。

    连接对:两条成对的边不一定需要共享一个顶点。

    每对至少被两条边分开:给定对 [(u1, v1), (u2, v2)] 和 [(u3, v3), (u4, v4)], u ∈ u1, v1, u2, v2 和 v ∈ u3, v3, u4, v4 不小于两个?

    每个 pair 至少被两条边分开:给定对 [(u1, v1), (u 2, v2)] 和 [(u3, v3), (u4 , v4)],例如 u1 和 u2 之间的最小距离可以是任何值,包括零(同一个顶点)?

【问题讨论】:

根据 j_random_hacker 的答案中的 cmets,您能否再次查看条款的说明? 【参考方案1】:

直接的方法是创建一个新图 G',其中 G 中的每对连接边都有一个顶点,只要 G 中的对应边对是,一条边连接 G' 中的两个顶点相距少于 2 条边。然后,您可以在 G' 中查找 maximum independent set。

这远非理想,因为 G' 将是巨大的并且独立集是 NP 完全的。如果你能证明 G' 有一些特殊的结构,你可能会做得更好。例如,如果它必须是二分的,那么König's theorem 将让您使用最大匹配在多项式时间内找到最大独立集。 (这在实践中仍然会很慢,因为可能有 O(m^2) 个顶点......)

【讨论】:

很棒的答案。忘了说 G 实际上是二分的,但当然 G' 可以是任何东西。那么你认为这个问题可能是NP完全的吗?我想知道是否可以为此目的修改 hopcroft-karp。 (只要我获得足够的声望就投赞成票) 谢谢。不幸的是,事实证明这个问题毕竟是 NP 完全的:可以将独立集简化为这个问题。我将发布一个证明作为单独的答案;有点啰嗦。 二分图上的独立集是可溶的。此外,虽然您的 G' 有 O(m^2) 个顶点,但最终答案不能大于 n/3。我不认为你应该放弃,@j_random_hacker。 @Kittsil:我在缩减中发现了一个错误(这基本上涉及为 IS 实例中的每个顶点创建一个 3 顶点、2 边的小工具,然后“交叉链接”所有小工具顶点每当它们通过 IS 实例中的边缘链接时),所以你可能是对的......但我可能还想明白...... 你把这个减少到 k 路径分区;复杂性证明将采用另一种方式。还是有希望的!

以上是关于如何在图中找到这样的连接边对的最大数量,每对与另一对至少被两条边隔开?的主要内容,如果未能解决你的问题,请参考以下文章

对于每个类别,如何找到与另一列的最小值对应的列的值?

如何对每对之间的差异求和,然后使用 nedb 对每对的结果求和

如何实现一台计算机与另一台计算机中虚拟机Linux实现xwindow连接

查找与另一列的值相关的一个值

使用 PySpark 连接与另一列中的两列确定的范围相匹配的数据框

在图中找到最长的路径