【问题标题】:Find the Sunflower subgraph induced in a graph in polynomial amount of time.在多项式时间内找到在图中诱导的向日葵子图。
【发布时间】:2014-06-18 11:23:33
【问题描述】:

图 G 的子图 Sn 是向日葵图,如果由 n 个顶点和其他 n 个独立顶点 {u1,u2,..., un} 使得对于每个 i,ui 都与 vi 和 vj 相邻,其中 j = i-1(mod n)。

【问题讨论】:

  • 一个图可以包含 0、1 或(许多)个更多向日葵图作为诱导子图。你需要一个特定的吗?

标签: algorithm graph graph-theory


【解决方案1】:

您可以将向日葵——从问题的意义上说——想象成一个三角形的循环。在 O(N^3) 时间内,您可以检查每个三重点以查看它是否是三角形并创建一个新图,其顶点表示原始图中的三角形,如果两个三角形共享一个或多个顶点,则两个顶点链接在一起.

然后,寻找后边缘的深度优先搜索应该在此图中找到循环。并非所有周期都是好的。我认为检查派生图中假定循环中没有两个连续边是由原始图中的同一顶点产生的可能就足够了,并且您可以将其作为深度优先搜索的一部分进行检查。除非你能找到一个简洁的证据,否则可能需要对案例进行一些详细的分析才能确定这一点。

【讨论】:

  • 您是否建议创建一个新图 G',其中包含每个三角形的一个顶点以及每对顶点之间的一条边,这些顶点表示共享 1 个或多个顶点的三角形?听起来很有希望,但我看到了两个问题:(1)将任何顶点添加到 G' 的子图中可以向诱导子图添加超过 2 条边(我认为这可以通过修改后的 DFS 来解决); (2) G' 中的无和弦循环不一定对应于 G 中的向日葵,因为它可能是例如{abc}--{cde}--{cfg}(--{abc}),这里三角形 {cde} 可以没有边参与向日葵的循环。
  • 看起来不错。我认为我在 (2) 中的反例仅适用于长度为 3 的 G' 循环:对于长度 >= 4 的 G' 中的循环包含像 v = {cde} 这样只有 1 个 G 顶点的“坏”顶点在G中参与向日葵的循环(而不是2,表示一条边),一定是这个循环中v的两边的顶点也包含这个G-顶点(这里是c),暗示在 G' 中 v 的这两个邻居之间必须有一条边。因此,如果 DFS 保证只找到无弦循环,那么如果它找到长度 >= 4 的循环,它必须对应于 G 中的向日葵。
  • 但是...我不确定 DFS 是否可以是多时间的,因为我们可能需要多次尝试在当前路径的末尾添加一些边缘 uv。一个单独的次要观点:我认为 G' 中的顶点只有在 恰好 1 个 G 顶点在它们之间共享时才应该链接。
  • 如果存在具有两个共享顶点的三角形,那么您可以忽略这对顶点或将其视为最小的向日葵,这取决于我们的解释,所以是的,您可能希望将其视为一种特殊情况。我曾认为 DFS 是带有一个额外约束的标准,所以像往常一样,它不会多次标记和从任何顶点延伸,其成本最多为 |vertices| * |边缘| - 你能解释一下为什么不是这样吗?
  • 在当前 DFS 路径的末尾添加一些顶点 v 是否合法的问题取决于当前路径中已经存在的顶点集(因为这决定了 v 将创建多少个后边,并且我们希望禁止选择创建 >= 2 个后边的 v),我认为这会是一个问题。但我现在看到,即使 v 会创建 >= 2 个后边,也可以添加它,因为这些边中恰好有 1 个将形成“最紧密的循环”,并且不包含和弦,所以我们可以选择即为循环。 除了...我的反例(2)...
猜你喜欢
  • 2013-12-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-09-10
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多