welch powell顶点着色算法

 这个算法真的很难理解,我现在的理解也只能是尽最大可能使powell的算法看起来是合理可行的。首先,来说一下powell的思路:把图中所有顶点按度的大小从大到小排列,对第一个顶点即度数最大点着一种颜色,如彩图中a5,然后在后续点(在按度数排列的序列中)中找到与该点不邻接的第一个点着以相同颜色,如a1,然后再找后续点中与前面着了色的两个点不邻接的第一个点,着相同颜色,如此循环直到整个序列遍历一遍,这是第一轮,着了一种颜色。第二轮,从头开始,把着了色的点剔去,找度数最大点,着以第二种颜色,然后重复上述步骤,直到所有点都着了色。 我要说的对该算法的理解思路勉强算做删边法。为什么要对度数最大点先着色呢,?而且我们会发现在满足前提条件下,都找的是度数最大的那一个点,为什么呢?我们会发现在第一轮着了红色后,第二轮的着色实际上和第一轮的已着色的点无关了,因为它们已经被着色了,不属于我们考虑范围,而且算法思路很明显是递归的,所以,我们可以在给某个点着色后立刻把与之相关联的边删掉(但是要清楚那些和这些边相关的点在此轮中不能着色)。所以,每次着一个度数最大的点能保证删掉的边最多,直到最后所有边删完,剩下的各个孤立点是不邻接的,对它们进行最后一轮的着色,着同一种颜色,着色完成。因为整个图的边数是一定的,所以如果每次都使删的边最多(对度数最大点着色),能在最少轮删完边,因而总共用的颜色最少,这里有贪心算法的思想。后一张我自己画的图反映了第一轮着色后删掉边,和第二轮着色后删掉边,以及最后只剩孤立点的情况 大概就是这样,但是我的理解有bug,只是一种理解思路,尚有不完美的地方,不能完全重现powell的强大思路

welch powell顶点着色算法_第1张图片

welch powell顶点着色算法_第2张图片

你可能感兴趣的:(算法)