📜  威尔士鲍威尔图着色算法

📅  最后修改于: 2021-04-17 02:40:16             🧑  作者: Mango

在图论中,顶点着色是标记每个单独的顶点的方法,以使两个相邻的顶点都不具有相同的颜色。但是我们需要找出满足给定条件所需的颜色数量。不需要具有多种颜色或标签。因此,我们有一种称为welsh Powell算法的算法,该算法可提供所需的最小颜色。该算法还用于查找图的色数。这是一个迭代的贪婪方法。

色数:图G需要K种不同颜色才能正确着色,并且不少于K个色图,而图K被称为图G的色数。

威尔士鲍威尔算法包括以下步骤:

  1. 查找每个顶点的度
  2. 按降序排列顶点。
  3. 用颜色1为第一个顶点着色。
  4. 向下移动列表,并用相同的颜色为未连接到着色顶点的所有顶点着色。
  5. 在所有未着色的顶点上以新的颜色(按降序排列)重复步骤4,直到所有顶点都着色为止。

从最高的角度开始,我们确保可以尽可能早地处理冲突数量最多的顶点。

Vertex Degree
A 2
B 2
C 1
D 4
E 2
F 2
G 3
H 5
I 3
J 3
K 5

首先,按降序对列表进行排序。如果出现平局,我们可以随机选择任何打破方法。
因此,新订单将为:H,K,D,G,I,J,A,B,E,F,C

现在,按照威尔士鲍威尔图着色算法,
H –红色
K –请勿将颜色涂成红色,因为它会连接到H
D –红色
G –请勿将其涂成红色,因为它连接到H
我–不要将红色涂成红色,因为它会连接到H
J –请勿将颜色涂成红色,因为它会连接到H
A –不要涂红色,因为它连接到H
B –不要涂红色,因为它连接到D
E –红色
F –不要连接红色,因为它连接到E
C –不要将其涂成红色,因为它连接到D

此后,该图将如下图所示。

忽略已经着色的顶点,我们剩下:K,G,I,J,A,B,F,C

我们可以用第二种颜色绿色重复该过程

K –绿色
G –不要与绿色相连,因为它与K相连
我–颜色为绿色
J –不要涂绿色,因为它与I连接
A –绿色
B –不要涂绿色,因为它与A连接
F –绿色
C –绿色

再一次,忽略着色的顶点,我们剩下G,J,B。让我们为Blue着色。
G –蓝色
J –蓝色
B –蓝色

最终图如下所示。现在,我们可以看到,使用威尔士·鲍威尔(Welsh Powell)算法,我们可以仅用3种颜色(此图的色数为3 )着色顶点,这是最佳解决方案,因为该图至少包含一个三角形。