let $ g=(x \ cup y,e)$ 是一个未加权的二分图。我们得到了每个<跨度类=“math-container”> $ w \ subseteq x $ 它保存了 $ | w | \ leq | n(w) | $ ,其中 $ n(w)$ $的邻居 w $ $ y $ (又名婚姻状况)。

我的目标是找到一个子集 $ w ^ * \ subseteq x $ with $ | w ^ * |= | n(w ^ *)| $ ,如果存在这样的子集(显然需要不存在)。由于我不知道这个属性的正式名称,因此我将引用这样的 $ w ^ * $ 作为饱和设置

问题:

  1. 这个属性是广为人知的?它有不同的名称吗?
  2. 假设婚姻状况持有,表明每套饱和联盟也饱和。一个有趣的问题是找到最大饱和集。我用runtime $ o(| v | \ cdot | e |)$ ,但我怀疑它可以甚至更快解决。任何想法?
  3. 据称,弱易于解决的问题是找到饱和集合,不一定是最大的饱和集(再次,假设婚姻状况持有)。我们可以在 $ o(| v | \ cdot | e |)$ ?更快地解决这个问题

    编辑: 这是我提到的算法的草图:假设婚姻条件适用于 $ g $ 。然后,如上所述,我们可以表明我们可以表明

    lemma:让 $ g $ 是一个满足婚姻状况的二分图。然后,每个饱和组联盟也饱和。

    LEMMA表明存在独特的最大饱和集。因此,问题可以不同地说明:

    给定节点 $ x \ in x $ ,确定它是否参与饱和集或不

    如果答案是肯定的,那么它也参与最大饱和集。伪算法如下:

    1. 运行 hopcroft-karp 算法找到最大匹配 $ m $ ,C包括 $ x $ $ o( \ sqrt {| v |} | e |)$ 时间。由于婚姻状况,这种匹配存在。
    2. 对于每个节点 $ x \ in x $
      • 临时添加节点 $ x'$ $ x $ ,它连接到每个邻居 $ x $ 。调用图表我们获取 $ g_x $
      • 注意: $ m $ $ g_x $ 几乎是最大的部分匹配(向上到一个边缘);因此,我们可以找到一个最大匹配 $ m_x $ ,用于通过查找增强路径 $ g_x $ SPAN Class=“math-container”> $ g_x $ ,在 $ o(| v | + | e |)$ 时间(相同的细节Hopcroft-Karp)。
      • 如果 $ | m | <| m_x |,$ 继续。否则,如果 $ | m |= | m_x | $ ,将 $ x $ 到返回的集合。
    3. 分析从第一个原则遵循。如果存在任何饱和set $ w \ subseteq x $ with $ x \中的w $ ,即 $ | w |= | n_g(w)| $ 然后 $$ | W \ CUP \ {x'} |= | W | +1= | N_G(W)| + 1= | N_ {G_X}(W)| +1, $$ 所以 $ w \ cup \ {x'\} $ 违反 $ g_x $ 中的婚姻条件。因此, $ | m |= | m_x | $ 。我们可以类似地表明,如果 $ x $ 不参加任何饱和集,那么 $ | m_x |= | m | +1 $

有帮助吗?

解决方案

让我们修复一个最大匹配 $ m $ 。让 $ z \ subseteq y $ 是与 $ x $ 中的节点不匹配的节点集。我们可以看到一个节点 $ x \ in x $ 属于饱和设置,如果且仅当不存在 $ x $ $ z $ ,即路径 $ xy_1x_1 \ cdots y_kx_kz $ 其中 $(x_i,y_i)\以m $ $ z \ in z $ (证明类似于算法的正确证明)。

因此,您可以向 $ e $ 中的所有边缘添加指示,使得 $ m $ 中的边缘具有 $ x $ $ y $ 的方向,而不是 $ M $ $ y $ $ x $ ,然后 $ x $ 中的节点无法从 $ z $ 构成最大值的任何节点饱和套装。您可以运行一个简单的bfs来查看 $ x $ 中的哪些节点可以从 $ z $ 中的节点。时间复杂性是 $ o lex(\ sqrt {| v |} | e | \右)$

许可以下: CC-BY-SA归因
不隶属于 cs.stackexchange
scroll top