Algorithm Chaitin-Briggs算法说明

Algorithm Chaitin-Briggs算法说明,algorithm,graph,Algorithm,Graph,我在谷歌上搜索了一下,但还没有找到关于这个话题的好材料 在哪里可以找到关于Chaitin-Briggs图着色算法的更多信息?或者有人能解释一下它是如何工作的吗?Chaitin算法的关键洞察被称为度

我在谷歌上搜索了一下,但还没有找到关于这个话题的好材料


在哪里可以找到关于Chaitin-Briggs图着色算法的更多信息?或者有人能解释一下它是如何工作的吗?

Chaitin算法的关键洞察被称为度 给定一个图G,其中包含一个度小于R的节点N,当图G′是移除节点N的G时,G是R-可着色的。证据在一个方向上是显而易见的:如果一个图G可以用R颜色着色,那么图G'可以在不改变颜色的情况下创建。在另一个方向,假设我们有G'的R-着色。由于N的阶数小于R,因此必须至少有一种颜色不用于与N相邻的节点。我们可以使用此颜色为N着色

算法如下:

While G cannot be R-colored
    While graph G has a node N with degree less than R
        Remove N and its associated edges from G and push N on a stack S
    End While 
    If the entire graph has been removed then the graph is R-colorable 
        While stack S contains a node N
            Add N to graph G and assign it a color from the R colors
        End While
    Else graph G cannot be colored with R colors
        Simplify the graph G by choosing an object to spill and remove its node N from G
        (spill nodes are chosen based on object’s number of definitions and references)
End While
由于存在溢出问题,Chaitin-Briggs算法的复杂度为O(n2)。如果在某个点上,缩减图G'只具有R阶或更高阶的节点,则图G将不能是R-可着色的。当一个图很容易R-着色时,单个迭代的成本是O(n),因为我们在图中进行两次遍历,每次移除或添加一个节点。但是溢出带来了额外的复杂性,因为我们可能需要溢出任意数量的节点才能使G变成R-可着色。对于我们溢出的每个节点,我们通过线性算法进行另一次旅行


你也可以看一下这个

u想知道算法的定义吗?@Sibi是的,我想找到算法的详细解释。什么是溢出问题?溢出节点意味着什么?@DaZzz这意味着将与其关联的变量放在寄存器之外的其他位置,通常放在堆栈上。