图3使用给定函数着色

时间:2013-11-15 14:58:56

标签: algorithm graph graph-theory graph-algorithm graph-coloring

我有函数three_colorability(n,E),它给出输出true(当带有这些边和顶点的图形可以用3种颜色着色时)或假(如果没有)。 (!没有参数可以知道已经着色的是什么) 我们假设此函数在线性时间复杂度下工作。

我必须使用给定函数制作给定无向图G的3着色算法,该函数将在多项式时间内工作。

我无法解决这个问题。

1 个答案:

答案 0 :(得分:2)

按照代表的颜色添加3个名为C1C2C3的新节点。在新节点(C1,C2)(C2,C3)(C1,C3)之间添加边。如果three_colorability(V,E)为真,则three_colorability(V+{C1,C2,C3},E+{(C1,C2),(C2,C3),(C1,C3)})也为真。

对于每个(原始)顶点vthree_colorability()对于添加了{(v,C1), (v,C2), (v,C3)}的两个边的至少一个图形返回true。例如。如果three_colorability()对于添加了边{(v,C2), (v,C3)}的图表返回true,则表示v可以使用颜色1着色。

要查找所有顶点的颜色,请逐步查找顶点颜色并在图形中添加这两条边。