图的着色(Graph Coloring)

按照某种规则对一个图的每个顶点或者边分配一个颜色(编号),称为对图的着色。能按此规则完成着色的最小颜色数称为色数(chromatic number),记为χ(G)。

In graph theory, graph coloring is a special case of graph labeling.  It is an assignment of labels traditionally called “colors” to elements of a graph subject to certain constraints. In its simplest form, it is a way of coloring the vertices of a graph such that no two adjacent vertices share the same color; this is called a vertex coloring. Similarly, an edge coloring assigns a color to each edge so that no two adjacent edges share the same color, and a face coloring of a planar graph assigns a color to each face or region so that no two faces that share a boundary have the same color. –wikipedia

几种常用的图着色及应用

顶点着色(Vertex Coloring, also known as Proper Coloring)

任意一个结点,它的邻居的结点颜色不能和它一样。也就是说,同一条边的两个结点颜色不一样。顶点着色是图着色的基础。点着色要求图不能有自环,就是不能存在两个端点一样的边。但是图可以是多重图。

190939911.png

图的简单分类

多重图(Multigraph)

具有多重边的图称为多重图。多重边指两个顶点之间存在多条边。

简单图(Simple Graph)

没有自环的非多重图

零图

没有边的图

平凡图(Trivial Graph)

只有一个顶点的图,平凡图也是零图

完全图(Complete Graph)

任意两个顶点之间都有边,记为Kn,n为顶点数

二分图(Bipartite Graph)

可以将顶点分为两部分V1和V2,V1内的图之间没有边,V2之间的顶点也没有边,任意一条边的两个顶点必然位于V1和V2。

完全二分图是一种特殊的二分图,可以把图中的顶点分成两个集合,使得第一个集合中的所有顶点都与第二个集合中的所有顶点相连,记为Kn,m

平面图(Planar Graph)

平面图是可以画在平面上并且使得不同的边可以互不交叠的图。而如果一个图无论怎样都无法画在平面上,并使得不同的边互不交叠,那么这样的图不是平面图,或者称为非平面图。完全图K5 和完全二分图K3,3 是最“小”的非平面图。

190939854.png

应用:地图着色(四色定理)

四色定理就是一个ProperColoring,任意一个平面图,都可以使用四种颜色进行着色,使得一个结点和它的邻居颜色不一样,要注意的是四色定理只适合于平面图。

2013053104-300x131.png

应用:安全装箱问题

有n个物品需要装箱,有些物品不能放在一起,哪些物品不能放一起都已经知道,求最少需要多少个箱子?问题同样可以描述为有n个动物放到笼子里,或者有n个学生分班。

这个问题可以转化成vertex coloring问题。假设n个物品为一个图的顶点,如果物品ni和nj不能在一起,那么就在ni和nj之间连一条边,问题编程了求这个图的点着色的色数。

星着色(Star Coloring)

Star Coloring是一种特殊的Vertex Coloring,但是它的要求更严格。

A star coloringof a graph G is a (proper) vertex coloring in which every path on four verticesuses at least three distinct colors. Equivalently, in a star coloring, theinduced subgraphs formed by the vertices of any two colors has connectedcomponents that are star graphs. Star coloring has been introduced by Grünbaum (1973). The star chromaticnumber  of G is the least number ofcolors needed to star color G.

上述定义不太好理解:任意4个结点的路径,必须至少有3种不同的颜色。还可以定义成:任意3个结点的路径,3个结点颜色都不相同。

通俗的说,就是

(1)一个结点与它的邻居不能同色

(2)一个结点的邻居不能同色

应用:IP溯源

对网络进行星着色,如果我们知道一个IP包经过的路由器的颜色序列以及知道包走过的最后一个路由器,那么我们就能把整个路径找出来。

Distance-k着色

Star Coloring其实也是distance-2 Coloring,也就是任意长度为2(结点数为3)的路径,结点颜色都不一样。同样,distance-k coloring的定义是:任意长度为k(结点数为k+1)的路径,结点颜色都不相同。

应用:电视频道分配问题

某地区有n家电视发射台T1, T2, ……, Tn。主管部门对每家电视发射台分配一个频道。为了排除干扰,使用同一频道的发射台之间相距必须大于指定的正数d。

问:该地区至少需要多少频道?

构造无向图G(V, E), V={x1, ……, xn}, xi和xj有边当且仅当xi和j的距离为d。对图进行distance-d着色,χ(G)就是频道数。

边着色(EdgeColoring)

任意相邻的边的颜色不能相同,也就是有公共结点的边颜色不能相同。边着色要求图不能有自环,但是可以是多重图。

190939882.png

应用:课程表问题

某学校有m位教师x1, x2, ……, xm和n个班级y1, y2, ……, yn,要求教师xi每周给班级yj上pij节课,问如何安排一张周课程表,使所排课时数目尽可能地少?

作二分图G(V1, V2),V1={x1, x2, ……, xm}, V2 ={y1, y2, ……, yn},xi与yj有边相连当且仅当教师xi给班级yj上了一个课时的课, xi与yj间有pij条边。

对图进行边着色,如果两条边颜色相同,就代表它们是同一个时间段。一个老师发出的边不可能相同,一个班级发出的边颜色也不能相同,就是边着色,求出最小色数即可。

计算一个图的色数

计算χ(G)是一个NP-Complete问题。但是对于一些特定的图,有一些现成的结论可以使用。

例如对一个平面图进行顶点着色,χ(G) <=4。

Brooks定理:对一个图进行顶点着色,使χ(G)=1+Δ(G)的图只有两类:或者是奇回路,或者是完全图。
Vizing定理:设G是一个简单图,对它进行边着色,它的顶点最大度数是Δ(G),则χ(G)=Δ(G)或者χ(G)=Δ(G)+1。
还有很多这样的定理或者结论,但是目前还没有一个好的算法能计算任意一个图的χ(G)。