Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ionic-framework/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Algorithm 算法介绍创造性方法练习5.25_Algorithm_Graph_Colors_Tree - Fatal编程技术网

Algorithm 算法介绍创造性方法练习5.25

Algorithm 算法介绍创造性方法练习5.25,algorithm,graph,colors,tree,Algorithm,Graph,Colors,Tree,下面是《算法导论,一种创造性的方法》中的练习5.25。读了好几遍,我还是不明白它的意思。我可以使用它描述的方法,而不是1+LogN颜色,非常简单直接地用2种颜色给一棵树上色 《开始》 本练习与第5.11节中描述的确定图是否为二部图的错误算法有关。从某种意义上说,本练习表明,不仅算法错误,而且简单方法也无法工作。考虑图着色的更一般的问题:给定一个无向图g=(v,e),G的一个有效着色是对顶点的颜色分配,使得没有两个相邻顶点具有相同的颜色。问题是找到一种有效的颜色,使用尽可能少的颜色。(一般来说,这

下面是《算法导论,一种创造性的方法》中的练习5.25。读了好几遍,我还是不明白它的意思。我可以使用它描述的方法,而不是1+LogN颜色,非常简单直接地用2种颜色给一棵树上色

《开始》 本练习与第5.11节中描述的确定图是否为二部图的错误算法有关。从某种意义上说,本练习表明,不仅算法错误,而且简单方法也无法工作。考虑图着色的更一般的问题:给定一个无向图g=(v,e),G的一个有效着色是对顶点的颜色分配,使得没有两个相邻顶点具有相同的颜色。问题是找到一种有效的颜色,使用尽可能少的颜色。(一般来说,这是一个非常困难的问题;第11章对此进行了讨论。)

因此,如果一个图可以用两种颜色着色,那么它就是二部图

通过归纳证明树总是二部的

我们假设图是一棵树(这意味着图是二部的)。我们想要找到一个将顶点划分为两个子集的分区,这样在一个子集中就没有连接顶点的边。 再次考虑错误的算法来确定图是否是二部的,在第5.11节中给出:我们取任意顶点,去除它,将其余的颜色(通过归纳)着色,然后以最好的方式对顶点着色。也就是说,我们使用最旧的颜色为顶点着色,并且仅当顶点连接到所有旧颜色的顶点时才添加新颜色。证明,如果我们一次给一个顶点上色,而不考虑全局连接,我们可能需要多达1+logN的颜色。 您应该设计一个结构,使每个选择顶点的顺序的颜色数量最大化。构造可以按以下方式取决于顺序。
该算法选择一个顶点作为下一个顶点,并开始检查该顶点的边。在这一点上,您可以根据需要添加与此顶点相关的边,前提是图形仍然是一棵树,这样,在最后,将需要最大数量的颜色。在放入边缘后,不能删除该边缘(这将清除已看到该边缘的算法)。实现这一结构的最佳方法是归纳法。假设你知道一个需要的结构,你不明白什么?使用
1+log n
颜色为图形着色的算法就在这里描述。此练习要求您设计算法。它显示了算法吗?