【问题标题】:"(1:k) Tree-Matching" - Solvable in polynomial time?“(1:k)树匹配” - 可在多项式时间内求解?
【发布时间】:2011-01-22 07:46:55
【问题描述】:

几个月前有一个关于“1:n 匹配问题”的nice question,似乎没有多时间算法。

我想添加约束以使用多项式算法找到 1:n 匹配问题的最大匹配。我想说:“对于顶点 A1,如果顶点尚未取自另一个 A 顶点,请选择 {B1,B2,B5} 或 {B2,B3}”,即我不允许所有可能的组合。

如果我们为每个选择引入辅助顶点 H 并用树替换边 => 我们会遇到类似于普通二分匹配的问题。 A 或 B 的每个顶点在匹配中只能有一条边。 H 中的顶点到或来自顶点的边要么都在匹配中,要么它们都不存在于匹配中。想象一下下面的三部图:

现在定义 h_ij="tree rooted that contains H_ij" 来轻松表达匹配:

  • 那么在示例中 M={h12,h22} 将是一个“最大”匹配,尽管并非所有来自 B 的顶点都参与
  • 集合 {h12,h23} 不匹配,因为这样 B3 将被选择两次。

然后这个问题可以在多项式时间内解决吗?如果是,是否有加权 (w(h_ij)) 变体的多时间解决方案?如果不是,您能否为像我这样的“简单人”争论甚至证明它,或者建议其他约束来解决 1:n 匹配问题?

例如该图是否可以转换为一般图,然后可以通过一般图的加权匹配来解决?或者branchings 甚至matching forests 可以在这里帮忙吗?

PS:不是作业;-)

【问题讨论】:

    标签: algorithm graph matching


    【解决方案1】:

    最大和最大之间是有区别的。我假设您的意思是以下文章的最大值。

    您似乎没有很清楚地定义您的问题,但如果我正确理解了您的意图,您的问题似乎是 NP 完全的(并且“等效于”Set Packing)。

    我们可以假设所有 A_i 允许的集合大小相同 (k) 以找到 [1:k] 匹配,因为可以忽略任何其他集合大小。要找到最大 k,我们只需运行 [1:k] 的算法,因为 k = 1,2,3.. 等。

    所以你的问题是(我认为...):

    给定 m 个集合族 F_i = {S_1i, .., S_n(i)i} (|F_i| = F_i 的大小 = n(i),不必与 |F_j| 相同),每组大小为 k,你必须从每个族中找到一组 (说 S_i) 这样

    • 对于任何 i neq j,S_i 和 S_j 都是不相交的。
    • S_i 的数量最大。

    我们可以分两步证明 k=3 的 NP-Complete:

    1. NP-Complete 问题Set Packing 可以减少它。这表明它是 NP-Hard。
    2. 您的问题出在 NP 中,可以归结为 Set Packing。这和 1) 意味着您的问题是 NP 完全的。它还可以帮助您利用现有的任何近似/随机算法用于 Set-Packing。

    设置包装是问题:

    给定 n 个集合 S_1, S_2, ..., S_n,找出其中最大的成对不相交集合数。

    即使 |S_1|,这个问题仍然是 NP-Complete = |S_2| = ... = |S_n| = 3,称为 3-Set 打包问题。

    我们将使用它来证明您的问题是 NP-Hard,通过提供从 3-Set 打包到您的问题的简单化简。

    给定 S_1, S_2, .., S_n 只是组成家庭

    F_i = {S_i}。

    现在如果你的问题有一个多项式时间解,那么我们得到一组集合 {S_1, S_2, ..., S_r} 使得

    • S_i 和 S_j 不相交
    • S_i 的数量最大。

    这种简单的简化为我们提供了 3-set Packing 问题的解决方案,因此您的问题是 NP-Hard。

    为了看出这个问题在 NP 中,我们将其简化为 Set-Packing,如下所示:

    给定 F_i = {S_1i, S_2i, ..., S_ni}

    我们考虑集合 T_ji = S_ji U {i}(即我们将族的 id 添加到集合本身)并通过 Set-Packing 算法运行它们。我将留给您看看为什么 Set-Packing 的解决方案可以解决您的问题。


    对于最大解决方案,您所需要的只是一个贪心算法。继续拾取套装,直到你不能再拾取为止。这将是多项式时间。

    【讨论】:

    • 非常感谢您的回答!我根据您的建议更正了“最大”错误,现在我将仔细阅读您的答案:-)
    • 对不起我对问题的模糊定义:-( 嗯,我的意思是 A 中的每个顶点的 k 可能仍然不同。但是如果一个“静态”k 已经是 NP 完整的......我不要对我更广泛的问题定义假设太多。对于您的解释:您的意思是 n(i) 是 A 中每个顶点的树/选择的数量吗?与 1:1 匹配的唯一区别是1:1 问题是 2-Set 打包问题,对吧?T_ji = S_ji U {i} 是什么意思:我们使用哪个顶点来扩展 S_ji,为什么?
    • 是 n(i) 是每个 A 的选择数。是的 2-Set 包装是最大匹配。每个集合都是 {u,v},其中边在图中的 u 和 v 之间。假设 A1 被允许 S_11 = {B1,B2,B5} 和 S_12 = {B2, B3, B7},那么您制作的新集合是 T_11 = {B1,B2,B5,A1} 和 T_12 = {B2,B3, B7,A1}。由于这两个集合中都存在 A1,当您找到 Set-Packing 时,您最多可以选择其中一个。
    • 啊,好的!非常感谢所有的澄清!现在我了解了您证明的基础知识:-) 我希望本周我能了解“NP减少”...
    • 现在我对 NP-complete 类的东西有点熟悉了,我还有一个问题:如果我们有一个多时间匹配(即 |S_1|=|S_2 |=|S_3|=..= 1),在哪一步证明会失败? 顺便说一句:我认为您的意思是 k 可能是 2 或更大,即使这样问题也是 NP 完全的 - 而不是 3 或更大,对吗?因为 A_i 在所有集合中都存在!?
    猜你喜欢
    • 2015-07-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-04-05
    • 2014-06-30
    • 2020-12-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多