问题是用自然数对树顶点着色,使得分配给顶点的数字(颜色)总和最小。
这样做的颜色数量是多少?
答案 0 :(得分:3)
我认为3种颜色足以做到这一点。如何证明?
不是。用代数方式描述一棵有根树,如下所示。 V
是单节点树。 E(t1, t2)
是由t1
和t2
组成的树,以及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)时间。