【问题标题】:Where k <=4 find every k-tuple in O(|V|) time其中 k <=4 在 O(|V|) 时间内找到每个 k 元组
【发布时间】:2013-04-13 20:39:22
【问题描述】:

这是我的问题的上下文:

我有一个作业问题:描述一个以顶点大小为单位的线性时间算法(即 O(|V|)),以确定图中是否存在所有顶点都具有最大大小程度的最大团3. 我知道有一个多项式时间算法可以做到这一点。我正在努力想出的是一个 O(|V|) 算法来做到这一点。另外,我确实意识到最大的集团可能是 4 号。

这就是我一直被难住的地方:

在我看来,在某些时候,您需要枚举所有大小为 4 的 k 元组。但是如何在 O(|V|) 时间内完成呢?

另外值得注意的是,我尝试过使用动态编程来解决这个问题,但我看不到如何在线性时间内做到这一点。

答案、想法、建议?

【问题讨论】:

  • 提示:每个团都是某个顶点的邻居集的子集。
  • 当您说“最大”集团时,我假设您的意思是最大,而不是最大,对吗?
  • @G.Bach 如果家庭作业作者的意思是最大,那么他们就不会指定度数限制。
  • @DavidEisenstat 哦,我刚刚意识到我误读了这个问题,我以为它说的是“最小顶点度”。尽管如此,这并没有改变差异。在最大顶点度数为 3 的图中,仍然可以存在不是最大团的最大团。

标签: algorithm runtime clique-problem


【解决方案1】:

不可能在 O(|V|) 时间内找到每个 k 元组,因为所需的输出大于您想要实现的复杂度。但实际上,找到一个最大集团并不需要你找到所有的 k 元组。您必须考虑的唯一 k 元组是形成某个顶点(包括顶点本身)邻域的 k 元组。

【讨论】:

  • 首先,如上所述,这个答案对我没有帮助。 (是我,不是你。)最好我想改写答案。如果没有,你能不能至少说出最后一句话是什么意思。最后,我看不出如何在 O(V) 时间内找到每个 4 元组。要了解我为什么要为此苦苦挣扎,我不知道如何在线性时间内找到所有 2 元组(但可以在二次时间内做到这一点。)如果我不能在线性时间内做 2 元组,我有什么机会有在 O(|V|) 时间内找到 4 元组吗?
  • @user678392 顶点v的邻域定义为集合S,使得对于S中的所有s,都有一条边{v,s};所以用更简单的话来说:v 的邻域是与 v 相邻的所有顶点的集合。任何 v 只能与其邻域的顶点形成一个团。此外,如果通过 2 元组您实际上确实是指顶点集,使得该集合恰好具有 2 个顶点并且该集合形成一个团,那么任何图的所有 2 团都是边。
  • @G.Bach 很抱歉,但我不明白这对我有什么帮助。如何在线性时间内找到每 3 个元组?
  • @Thomash 我不明白这句话:“您必须考虑的唯一 k 元组是形成某个顶点(包括顶点本身)邻域的那个。”这有什么帮助?
  • @user678392 取一个三阶顶点 x;称其邻居为 u,v 和 w。为了使 (x,u,v,w) 成为一个集团,图形必须具有哪些边?您需要进行多少次操作才能检查?
猜你喜欢
  • 2013-12-19
  • 1970-01-01
  • 1970-01-01
  • 2015-01-15
  • 2021-06-09
  • 1970-01-01
  • 2020-12-29
  • 2014-04-29
  • 2020-10-27
相关资源
最近更新 更多