图的着色(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)
任意一个结点,它的邻居的结点颜色不能和它一样。也就是说,同一条边的两个结点颜色不一样。顶点着色是图着色的基础。点着色要求图不能有自环,就是不能存在两个端点一样的边。但是图可以是多重图。
图的简单分类
多重图(Multigraph)
具有多重边的图称为多重图。多重边指两个顶点之间存在多条边。
简单图(Simple Graph)
没有自环的非多重图
零图
没有边的图
平凡图(Trivial Graph)
只有一个顶点的图,平凡图也是零图
完全图(Complete Graph)
任意两个顶点之间都有边,记为Kn,n为顶点数
二分图(Bipartite Graph)
可以将顶点分为两部分V1和V2,V1内的图之间没有边,V2之间的顶点也没有边,任意一条边的两个顶点必然位于V1和V2。
完全二分图是一种特殊的二分图,可以把图中的顶点分成两个集合,使得第一个集合中的所有顶点都与第二个集合中的所有顶点相连,记为Kn,m
平面图(Planar Graph)
平面图是可以画在平面上并且使得不同的边可以互不交叠的图。而如果一个图无论怎样都无法画在平面上,并使得不同的边互不交叠,那么这样的图不是平面图,或者称为非平面图。完全图K5 和完全二分图K3,3 是最“小”的非平面图。
应用:地图着色(四色定理)
四色定理就是一个ProperColoring,任意一个平面图,都可以使用四种颜色进行着色,使得一个结点和它的邻居颜色不一样,要注意的是四色定理只适合于平面图。
应用:安全装箱问题
有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)
任意相邻的边的颜色不能相同,也就是有公共结点的边颜色不能相同。边着色要求图不能有自环,但是可以是多重图。
应用:课程表问题
某学校有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。
转载于:https://blog.51cto.com/nxlhero/1213947