这个图有多难?

时间:2010-03-06 19:07:37

标签: algorithm graph

我有一个问题需要解决一个社交网络应用程序,这听起来很难:我不确定它的NP是否完整。它闻起来可能是NP完全的,但我对这些东西没有很好的意识。在任何情况下,算法对我来说都是更好的消息。

无论如何,输入是一些图形,我想要做的是将节点分成两组,这样两个组都不包含三角形。如果有帮助的话,我知道这个特殊的图表是3色的,虽然我实际上并不知道着色。

启发式地,一个“贪婪”的算法似乎很快收敛:我只是在分区的两边寻找三角形,并在找到它们时打破它们。

5 个答案:

答案 0 :(得分:3)

问题的决策版本是一般图表的NP-Complete:http://users.soe.ucsc.edu/~optas/papers/G-free-complex.pdf并且不仅适用于三角形。

当然,这仍然无助于解决3色可图和三角形自由度的搜索版本的问题(决策版本在P中非常简单)。

答案 1 :(得分:1)

这是一个可能有用的想法。我怀疑这是理想的算法,所以其他人请基于此。

浏览图表并首先找到所有三角形。我知道这看起来很荒谬,但我觉得复杂级别的智慧也不会太糟糕。您可以找到给定节点所属的任何三角形,只需跟踪其所有边缘的三个跃点,并查看是否到达了起始位置。 (我怀疑有一种方法可以让图形中的所有三角形都比仅为每个节点找到三角形更快。)

一旦你有三角形,你应该能够以任何方式分割它们。根据定义,一旦你将它们拆开,就不会再留下三角形了,所以我认为你不必担心三角形或相邻三角形之间的连接或类似的任何可怕的东西。

答案 2 :(得分:0)

我的答案错了

我会继续讨论。请不要投票,这个想法可能仍然有用。


我认为它是NP难的,因为声称用4种颜色着色3色可图是NP难(On the hardness of 4-coloring a 3-collorable graph)。

  

我们给出了一个新的证据,表明只使用四种颜色就可以为三色可图表着色。这个结果已经知道,但我们的证据是新颖的[...]

假设我们可以将3可着色图分成2组A,B,这样在多项式时间内都没有三角形。然后我们可以解决4种颜色如下:

  • 颜色设置A与C1,C2和设置B与C3,C4。
  • 每个集合都是2可着色的,因为它没有三角形< - 这就是我错在哪里
  • 2着色2可着色图是多项式
  • 然后我们在多项式时间内有4色3可着色图

通过这种减少,我声称你正在做的事情必须是NP难的。

答案 3 :(得分:0)

对于任何具有5个紧密互连的节点的集合,这是不可能的,我可以通过简单的思想实验来证明它。 5个紧密互连的节点在社交网络中非常普遍;粗略地浏览一下我的朋友的个人资料,发现我的家人和一群同事之间。

通过“紧密互连的图形”,我指的是一组节点,其中节点与每个其他节点都有连接。像这样的5个节点看起来像五角大楼中的一颗星。

让我们从一群名叫安东尼,比阿特丽斯,克里斯托弗,丹尼尔和伊丽莎白的五个表兄弟开始。作为堂兄弟,他们都是相互联系的。

1)让安东尼进入第1集。 2)让比阿特丽斯加入第1集。 3)Christopher通过我们的算法......我们不能把他放在第1集,因为那会形成一个三角形。我们把他放在第2集。 4)丹尼尔来了。我们不能把他放在第1集,因为那会形成一个三角形,所以我们把他放在第2集。 5)伊丽莎白一路走来。我们不能把她放在第1集,因为这会与安东尼和比阿特丽斯形成一个三角形。我们不能把她放在第2集,因为这将与克里斯托弗和丹尼尔形成一个三角形。

即使我们改变算法以将Beatruce放入集合#2中,思想实验也会得出类似的问题。重新排序人员会导致同样的问题。无论你如何调整它们,第五个人都无法去任何地方 - 这是'pidgenhole原则'的变体。

即使你放松了要求“我可以将图表分割成最小数量的图表以便没有三角形的要求”,我认为这会变成旅行商问题的变体,没有明确的解决方案

答案 4 :(得分:-1)

我认为这个问题有一个O(n ^ 5)算法,其中n是顶点数。