Algorithm 当地图被三角化时,四色定理容易吗?

Algorithm 当地图被三角化时,四色定理容易吗?,algorithm,graph,3d,graph-algorithm,Algorithm,Graph,3d,Graph Algorithm,当地图被三角化时,四色问题是否容易解决 出于调试的目的,我想用尽可能少的颜色为凸面3D多面体表面的三角形着色(这样我就有了很多清晰可分辨的颜色来为特殊感兴趣的三角形着色) 四色定理表明,四色就足以做到这一点,但我希望在曲面是三角剖分的附加条件下,与一般情况相比,有更简单、更有效的算法 另外,在我的几个擦伤例子中,我总是可以用3种颜色来做。 如果你考虑四面体,就没有办法用3种颜色来对它的脸/三角形进行着色。因此,尺寸为3的三角化凸多面体的面不能用3种颜色着色。但这恰好是唯一的反例 事实上,您尝试着

当地图被三角化时,四色问题是否容易解决

出于调试的目的,我想用尽可能少的颜色为凸面3D多面体表面的三角形着色(这样我就有了很多清晰可分辨的颜色来为特殊感兴趣的三角形着色)

四色定理表明,四色就足以做到这一点,但我希望在曲面是三角剖分的附加条件下,与一般情况相比,有更简单、更有效的算法


另外,在我的几个擦伤例子中,我总是可以用3种颜色来做。

如果你考虑四面体,就没有办法用3种颜色来对它的脸/三角形进行着色。因此,尺寸为3的三角化凸多面体的面不能用3种颜色着色。但这恰好是唯一的反例

事实上,您尝试着色的图形是立方的(在每个面中放置一个顶点,并将其连接到三个相邻面),即每个顶点都有阶数3,并且它也是连接的。因此,通过,每个K_4不同的三次连通图最多可以着色3种颜色

编辑:

我在第一次阅读时没有注意到你也在寻找算法。我所知道的布鲁克斯定理的证明是有建设性的,因此我们有一个算法来解决你的问题

利用多面体的对偶图,我们得到了我们想要着色的图总是3连通的。这并不是真的需要,因为证明适用于另一个案例,但这是一个更简单的案例,所以让我继续讨论3-连通案例,因为它是您的案例

取任意三个顶点v_1,v_2,v_n,使v_n与其他两个相邻,但v_1和v_2不相邻(对于完整的图,这样的三元组不存在)。利用图是3连通的,很明显,如果我们去掉v_1和v_2,得到的图仍然是连通的

以序列v_3,v_4,…,v_n排列其余顶点,这样对于每个v_i存在j>i,使得v_i和v_j相邻(这就像Prim从v_n开始的算法中构造生成树一样)。将v_1,v_2置于序列的开头,从而获得v_1,v_2,v_3,…,v_n


将颜色1用于v_1和v_2(这是有效的,因为它们不相邻)。现在,按顺序贪婪地为序列的其余部分着色,即为每个顶点指定第一个有效颜色(第一个未指定给已着色的相邻顶点)。对于v_n以外的每个顶点,我们都有一个“右邻居”,因此使用的颜色不超过3种。对于v_n,它也可以工作,因为v_1和v_2都有颜色1。现在我们有了一个图的3-着色,算法在图的大小上是线性的。

谢谢,我现在有了这方面的代码,它不会崩溃,并且至少在我的几个例子中返回了正确的结果。奇怪的是,我发现在大多数例子中,只有少数三角形需要第三种颜色。现在我想知道是否需要第三种颜色来表示网格的某些属性?(从技术上讲,第三种颜色的稀有性显然是平滑算法的结果,将每个三角形划分为6个新三角形)