着色树与最小的颜色总和

时间:2012-05-03 12:10:09

标签: algorithm graph tree

问题是用自然数对树顶点着色,使得分配给顶点的数字(颜色)总和最小。

这样做的颜色数量是多少?

5 个答案:

答案 0 :(得分:3)

  

我认为3种颜色足以做到这一点。如何证明?

不是。用代数方式描述一棵有根树,如下所示。 V是单节点树。 E(t1, t2)是由t1t2组成的树,以及t1根到t2根的边缘,以t2为根的根源。以下树t3需要四种颜色才能达到最小值156。

t3 = E(t2, E(t2, E(t2, E(t2, t2))))
t2 = E(t1, E(t1, E(t1, E(t1, t1))))
t1 = E(t0, E(t0, E(t0, E(t0, t0))))
t0 = V

基于一些实验,我猜想可以证明这种结构概括,因此没有固定数量的颜色足以达到所有树木的最小值。

定理对于所有d≥k≥3,以下电感构造的树T(d,k)至少需要k种颜色。 T(d,1)是单顶点树。对于我> 1,T(d,i)是连接到T(d,i - 1)每个顶点的d叶的树。

证明通过感应k。基本情况k = 3基本上是你的例子,其中3种颜色是最佳性所必需的。对于k> 3,考虑仅使用k-1种颜色的T(d,k)的着色。我们展示了如何使用颜色k来改善它。如果某些内部顶点具有颜色1,那么我们通过将其颜色改变为k并改变其d的颜色来改进。 k - 1相邻叶子为1.如果没有间隔顶点有颜色1,而某些叶子的颜色不是1,则将叶子更改为1.如果我们还没有改进,则所有叶子都有颜色1,所有间隔顶点都有颜色> 1.删​​除所有叶子并递减标签,我们有T(d,k - 1)的着色,我们可以通过归纳假设来改进。


data Tree = V | E Tree Tree
    deriving (Eq, Show)

otherMinimums [x, y] = [y, x]
otherMinimums (x:xs) = minimum xs : map (min x) (otherMinimums xs)

color m V = [1..m]
color m (E t1 t2) = let
    c1 = color m t1
    c2 = color m t2 in
    zipWith (+) (otherMinimums c1) c2

t3 = E t2 $ E t2 $ E t2 $ E t2 $ t2
t2 = E t1 $ E t1 $ E t1 $ E t1 $ t1
t1 = E t0 $ E t0 $ E t0 $ E t0 $ t0
t0 = V

结果:

> color 3 t3
[157,158,163]
> color 4 t3
[157,158,159,156]

答案 1 :(得分:2)

首先,任何树都有2种颜色。为了证明这一点,你可以用替换颜色逐级为树级着色。

其次,逐级着色是唯一有效的双色法。它可以通过水平上的归纳来证明。修复根节点的颜色。然后,它的所有孩子应该有不同的颜色,孩子的孩子 - 第一种颜色,等等。

第三,要选择最佳着色,只需检查两种可能的布局:根节点的颜色为0时,颜色为1的情况。

答案 2 :(得分:0)

对于树,您只能使用2种颜色:一种用于具有奇数深度的节点,另一种用于具有均匀深度的节点。

编辑: 之前的答案是错误的,因为我不明白这个问题。

如Wobble所示,所需的颜色数量不受限制。

答案 3 :(得分:0)

将具有n个节点的树的总和最小化的颜色数限制为O(logn)

E. Kubicka在1989年的论文中对此进行了报道 http://dl.acm.org/citation.cfm?id=75430

答案 4 :(得分:-1)

使用2种颜色{0,1}着色任何树就足够了,但复杂性将是O(n)。

使用3种颜色{0,1,2}着色任何树就足够了,但复杂性将为O(log *(n))

现在问题是log *(n)

log *(n) - “log Star n”,称为“Iterated logarithm”

简单来说,你可以假设log *(n)= log(log(log(.....(log *(n))))

log *(n)非常强大。

示例:

1) Log *(n)= 5其中n =宇宙中的原子数

2)找到知道欧几里得最小生成树的一组点的Delaunay三角剖分:随机O(n log * n)时间。