图的3色(多项式时间)?

时间:2014-11-10 19:50:17

标签: algorithm np

我们可以在多项式时间内用3种颜色绘制图形吗?我读到用2着色图 颜色很容易,但用3种不同的颜色着色图形(没有两个顶点有 相同的颜色)是np-hard。但是,我想知道是否有一个魔术盒说“是”'对于' A
图形在多项式时间内是3可着色的吗?'如果它表示“是”'怎么解决呢? 多项式时间?有任何想法吗 ?

2 个答案:

答案 0 :(得分:1)

在图表中添加3个新顶点,称为红色/绿色/蓝色,每个顶点连接到另外2个,但没有其他任何顶点。

然后对于图表中的每个顶点:

  1. 如果生成的图形为3可着色
  2. ,则将顶点连接到红色
  3. 否则,如果结果图形为3可着色
  4. ,则将顶点连接到绿色
  5. 否则,将顶点连接到蓝色(通过构造,结果图形必须为3可着色)
  6. 在此过程结束时,您将为每个顶点确定一种颜色。

    这是O(N *魔法),魔法就是魔术盒的复杂性。

答案 1 :(得分:1)

@Peter de Rivaz的答案可能是最简单的答案,并且仅使用“魔术盒”的O(nk)测试,其中 k 是颜色的数量(此问题中为3)。我自己在考虑问题,并提出了一个更复杂的替代解决方案,并使用“魔盒”的O(n²)测试,但出于证明的目的,它也同样有效:< / p>

  • 让H成为G的副本。
  • 对于每对顶点u-v,其中G没有边u-v:
    • 使用魔术盒测试边缘u-v的H是否仍为k色。
    • 如果是,请将该边添加到H。否则,请不要添加。
  • 以Hᶜ,H的complement为例;它最多有k个connected components
  • 根据G的每个顶点所属的Hᶜ分量为G的每个顶点分配颜色。

之所以起作用,是因为在第一阶段之后,H是“最大边缘”的,因为它是k可着色的,但不能添加任何边,因此它仍然是k可着色的。任何满足此特性的图都必须是最多具有k个连通分量的图的补,每个连通分量为complete graph

  • 如果Hᶜ具有多于k个相连的分量,则从每个分量中选择一个顶点将在多于k个顶点上给出H的完整子图,因此H不能是k可着色的。因此,该算法最多使用k种颜色。
  • Hᶜ的每个组成部分均已完成:
    • 考虑H的k色;如果此着色在Hᶜ的相同分量中具有两个不同颜色的顶点,则必须在H such中的一条边上连接两个这样的顶点。可以在不破坏颜色的情况下将该边缘添加到H中。矛盾。
    • 因此,在H的任何k色中,Hᶜ的每个分量都必须是单色的。因此,在Hᶜ的相同分量中的任何两个顶点必须通过Hᶜ中的一条边连接,因为在H的所有着色中颜色相同,它们不能通过H中的一条边连接。
    • 因此,该算法不会为H的任何相邻顶点着色相同的颜色,因此,由于G是H的子图,因此不会为G的所有相邻顶点着色相同的颜色。