Chaitin-Briggs算法解释

时间:2013-01-18 13:04:34

标签: algorithm graph

我用谷歌搜索了它,但我还没有找到关于这个主题的一些好材料。

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

1 个答案:

答案 0 :(得分:7)

Chaitin算法的关键洞察力称为度数< R规则如下。

给定包含程度小于R的节点N的图G,如果图G'(其中G'是G且去除了节点N)的G是R可着色的,则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-colorable之前,我们可能需要溢出任意数量的节点。对于我们溢出的每个节点,我们通过线性算法进行另一次旅行

您还可以查看此Register allocation algorithm