图的着色问题

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

顶点着色-基本概念
• K可着色:G的一个k顶点着色是指k种颜色1,2,…,k对于G各顶点的 可着色: 的一个k顶点着色是指k种颜色1,2,…,k对于G 1,2, 对于 一个分配,如果任意两个相邻顶点都分配到不同的颜色, 一个分配,如果任意两个相邻顶点都分配到不同的颜色,则称着 色是正常的。换句话说,无环图G的一个正常k顶点着色是把V 色是正常的。换句话说,无环图G的一个正常k顶点着色是把V分成 可能有空的)独立集的一个分类( 2,… k个(可能有空的)独立集的一个分类(V1,V2,…,Vk)。当G有一个 正常k顶点着色时,就成G 顶点可着色的。 正常k顶点着色时,就成G是k顶点可着色的。 • G的色数X(G)是指G为k可着色的k的最小值,若X(G)=k,则称G 的色数X 是指G 可着色的k的最小值, =k,则称G 色的。 是k色的。 • 事实上,如果我们将同色的顶点列入一个顶点子集,那么求X(G) 事实上,如果我们将同色的顶点列入一个顶点子集,那么求X 就转为求满足下列条件的最少子集数k 就转为求满足下列条件的最少子集数k: 两两子集中的顶点不同; (1)两两子集中的顶点不同; 子集中的两两顶点不相邻。 (2)子集中的两两顶点不相邻。 显然有: 为平凡图, =1; 显然有: (i)若G为平凡图,则X(G)=1; ii) 为偶图, (ii)若G为偶图,则X(G)=2 iii)对任意图G Δ+1(这里Δ (iii)对任意图G,有X(G)≤Δ+1(这里Δ表示为顶点 数最大值) 数最大值)
问题来源
图的着色
• 通常所说的着色问题是指下述两类问题: 通常所说的着色问题是指下述两类问题: • 1.给定无环图G=(V,E),用m种颜色为图中 的每条边着色,要求每条边着一种颜色, 的每条边着色,要求每条边着一种颜色,并 使相邻两条边有着不同的颜色, 使相邻两条边有着不同的颜色,这个问题称 为图的边着色问题。 为图的边着色问题。 • 2.给定无向图G=(V,E),用m种颜色为图中 的每个顶点着色,要求每个顶点着一种颜色, 的每个顶点着色,要求每个顶点着一种颜色, 并使相邻两顶点之间有着不同的颜色, 并使相邻两顶点之间有着不同的颜色,这个 问题称为图的顶着色问题。 问题称为图的顶着色问题。
化简得
( a + bd )(b + aceg )(c + bdef )( d + aceg )(e + bcdf )( f + ceg )( g + bdf )
求极小覆盖法- 求极小覆盖法-布尔代数法
Step3:从中挑选所用极大独立集个数最小者, Step3:从中挑选所用极大独立集个数最小者, 即为X 即为X(G) 但上述子集的颜色数都不是X ),正确的应 但上述子集的颜色数都不是X(G),正确的应 该是X =3,该子集为: {b,d,f}中的 该是X(G)=3,该子集为:给{b,d,f}中的 b,d,f涂颜色 涂颜色1 {a,e,g}中a,e,g涂颜色 涂颜色2 b,d,f涂颜色1,为{a,e,g}中a,e,g涂颜色2为 {a,c,g}中的 涂颜色3 中的c {a,c,g}中的c涂颜色3。 由此可见, 由此可见,求色数其需要求极大独立集以 及一切若干极大独立集的和含所有顶点的子 对于大图, 集,对于大图,因为图计算量过大而成为实 际上难以凑效的算法,所以不是一个好算法, 际上难以凑效的算法,所以不是一个好算法, 一般我们采用贪心法等近似算法来求解 。
穷举法-Welch Powell着色法
• 给定图 ,用Welch Powell法对图 着 给定图G, 法对图G着 法对图 色
1
A2 3
1
2
A3
A4
A5
A6 3
穷举法-Welch Powell着色法
• 第一步:将图G中的结点按度数的递减顺序排 第一步: 列: A5 , A3 , A7 , A1 , A2 , A4 , A6 , A8 • 第二步:用第一种颜色对A5着第一种颜色, 第二步: 着第一种颜色, 也着第一种颜色。 并对与A5不邻接的结点A1也着第一种颜色。 • 第三步:对结点A3及与A3不邻接的结点A4、 第三步: A8着第二种颜色。 着第二种颜色。 • 第四步:对结点A7及与A7不邻接的结点A2、 第四步: A6着第三种颜色。 着第三种颜色。 可见, 是三色的。 可见,图G是三色的。但图G不可能是二色 相互邻接, 的,因为A1, A2, A3相互邻接,故必须着三 种颜色。 )=3。 种颜色。所以x(G)=3。
问题来源
图的着色问题是由地图的着色问题引申而来的: 图的着色问题是由地图的着色问题引申而来的:用 种颜色为地图着色, m种颜色为地图着色,使得地图上的每一个区域 着一种颜色,且相邻区域颜色不同。 着一种颜色,且相邻区域颜色不同。 问题处理:如果把每一个区域收缩为一个顶点, 问题处理:如果把每一个区域收缩为一个顶点,把 相邻两个区域用一条边相连接, 相邻两个区域用一条边相连接,就可以把一个区 域图抽象为一个平面图。 域图抽象为一个平面图。 例如, 12所示的区域图可抽象为12 12例如,图12-1(a)所示的区域图可抽象为12-1(b) 所表示的平面图。19世纪50年代,英国学者提出 所表示的平面图。19世纪50年代, 世纪50年代 了任何地图都可以4中颜色来着色的4色猜想问题。 了任何地图都可以4中颜色来着色的4色猜想问题。 过了100多年, 100多年 过了100多年,这个问题才由美国学者在计算机 上予以证明,这就是著名的四色定理。例如, 上予以证明,这就是著名的四色定理。例如,在 12区域用城市名表示,颜色用数字表示, 图12-1中,区域用城市名表示,颜色用数字表示, 则图中表示了不同区域的不同着色问题 。
顶点着色- 顶点着色-求顶色数的算法设计
我们由“每个同色顶点集合中的两两顶点不相邻”可以看出, 我们由“每个同色顶点集合中的两两顶点不相邻”可以看出,同色顶 点集实际上是一个独立集,当我们用第1种颜色上色时, 点集实际上是一个独立集,当我们用第1种颜色上色时,为了尽可 能扩大颜色1的顶点个数,逼近所用颜色数最少的目的, 能扩大颜色1的顶点个数,逼近所用颜色数最少的目的,事实上就 是找出图G的一个极大独立集并给它涂上颜色1 用第2 是找出图G的一个极大独立集并给它涂上颜色1。用第2种颜色上色 同样选择另一个极大独立集涂色,...,当所有顶点涂色完毕, 时,同样选择另一个极大独立集涂色,...,当所有顶点涂色完毕, 所用的颜色数即为所选的极大独立集的个数。 所用的颜色数即为所选的极大独立集的个数。 当然,上述颜色数未必就是X ),而且其和能够含所有顶点的极大 当然,上述颜色数未必就是X(G),而且其和能够含所有顶点的极大 独立集个数未必唯一。 独立集个数未必唯一。于是我们必须从一切若干极大独立集的和 含所有顶点的子集中,挑选所用极大独立集个数最小者, 含所有顶点的子集中,挑选所用极大独立集个数最小者,其个数 即为所用的颜色数X 即为所用的颜色数X(G)。 由此可以得算法步骤: 由此可以得算法步骤: Step1: 图的所有极大独立集; Step1:求G图的所有极大独立集; Step2:求出一切若干极大独立集的和含所有顶点的子集; Step2:求出一切若干极大独立集的和含所有顶点的子集; Step3:从中挑选所用极大独立集个数最小值,即为X Step3:从中挑选所用极大独立集个数最小值,即为X(G)。
= ab + bcd
求极小覆盖法- 求极小覆盖法-布尔代数法
• 例1:求图12-2G的顶色数 求图12 2G的顶色数 12解: • Step1:求极大独立集 Step1: 先求图G的极小覆盖, 先求图G的极小覆盖,
aceg + bc deg + bdef + bdef + bcdf 故G的极小覆盖为 {a, c, e, g}, {b, c, d , e, g}, {b, d , e, f }, {b, c, d , f } 取其补集,得到G 极大独立集: 取其补集,得到G的所有 极大独立集: {b, d , f }, {a , f }, {a, c, g}, {a , e, g } • Step2:求出一切若干极大独立集和所有顶点的子集 Step2: 显然我们可以选用4种颜色给每个顶点涂色, 显然我们可以选用4种颜色给每个顶点涂色,或者选 种颜色分别给3个极大独立集涂色,例如为{b,d,f} {b,d,f}中 用3种颜色分别给3个极大独立集涂色,例如为{b,d,f}中 涂颜色1 {a,f}中的 涂颜色2 中的a 的b、d、f涂颜色1,为{a,f}中的a涂颜色2,为{a,c,g} 中 涂颜色3 {a, g}中的 涂颜色4 中的e 的c和g涂颜色3,为{a,e,g}中的e涂颜色4。
穷举法-Welch Powell着色法
• I.将图G中的结点按度数的递减顺序进行排列 这种排列可能不是唯一的, (这种排列可能不是唯一的,因为有些结点的度 数相同) 数相同)。 • II.用第一种颜色对第一结点着色,并按排列顺 II.用第一种颜色对第一结点着色, 序对与前面着色结点不邻接的每一结点着上同样 的颜色。 的颜色。 • III.用第二种颜色对尚未着色的结点重复II, III.用第二种颜色对尚未着色的结点重复II II, 用第三种颜色继续这种做法, 用第三种颜色继续这种做法,直到所有的结点全 部着上色为止。 部着上色为止。
回溯法
• 由于用m种颜色为无向图G=(VC=(c1,c2, ,cn)来描述图的一 种可能着色,其中, 种可能着色,其中,ci∈{1, 2, …, m},(1≤i≤n)表示 , 的颜色。 赋予顶点i的颜色。 例如, 元组(1, 1)表示对具有 表示对具有5 例如,5元组(1, 2, 2, 3, 1)表示对具有5个顶点的无 向图12.3 12.3( 的一种着色,顶点1着颜色1 顶点2 向图12.3(a)的一种着色,顶点1着颜色1,顶点2着颜色 顶点3着颜色2 如此等等。 2,顶点3着颜色2,如此等等。 • 如果在n元组C中,所有相邻顶点都不会着相同颜色,就称 所有相邻顶点都不会着相同颜色, 元组为可行解,否则为无效解。 此n元组为可行解,否则为无效解。 • 回溯法求解图着色问题:首先把所有顶点的颜色初始化为 回溯法求解图着色问题: 然后依次为每个顶点着色。如果其中i个顶点已经着色, 0,然后依次为每个顶点着色。如果其中i个顶点已经着色, 并且相邻两个顶点的颜色都不一样, 并且相邻两个顶点的颜色都不一样,就称当前的着色是有 效的局部着色;否则,就称为无效的着色。 效的局部着色;否则,就称为无效的着色。如果由根节点 到当前节点路径上的着色,对应于一个有效着色, 到当前节点路径上的着色,对应于一个有效着色,并且路 径的长度小于n 那么相应的着色是有效的局部着色。 径的长度小于n,那么相应的着色是有效的局部着色。这 就从当前节点出发,继续探索它的儿子节点, 时,就从当前节点出发,继续探索它的儿子节点,并把
顶点着色-基本概念
• 独立集:对图G=(V,E),设S是V的一个子集,若 独立集:对图 的一个子集, , 是 的一个子集 中任意两个顶点在G中均不相邻 则称S为 的一 中均不相邻, 中任意两个顶点在 中均不相邻,则称 为G的一 个独立集。 个独立集。 • 最大独立集:如果 不包含适合 >|S|的独立 最大独立集:如果G不包含适合 不包含适合|S'|> 的独立 的最大独立集。 集S',则称 为G的最大独立集。 ,则称S为 的最大独立集 • 极大覆盖:设K是G的一个独立集,并且对于V-K 极大覆盖: K是G的一个独立集 并且对于V-K 的一个独立集, 的任一顶点v, 都不是G的独立集 的任一顶点 ,K+v都不是 的独立集,则称 是 都不是 的独立集,则称K是 G的一个极大覆盖。 的一个极大覆盖。 的一个极大覆盖 • 极小覆盖:极大独立集的补集称为极小覆盖。 极小覆盖:极大独立集的补集称为极小覆盖。 V的子集 是G的极小覆盖当且仅当:对于每个顶 的子集K是 的极小覆盖当且仅当 的极小覆盖当且仅当: 的子集 或者v属于 的所有邻点属于K( 点v或者 属于 ,或者 的所有邻点属于 (但两 或者 属于K,或者v的所有邻点属于 者不同时成立) 者不同时成立)。
求极小覆盖法- 求极小覆盖法-布尔代数法
求极小覆盖的方法-布尔代数法: 求极小覆盖的方法 布尔代数法: 布尔代数法 对于每个顶点v,选择v或者选择 或者选择v的所有邻 对于每个顶点 ,选择 或者选择 的所有邻 首先把“选择顶点v”这个指令记为符号 这个指令记为符号v, 点。首先把“选择顶点 这个指令记为符号 , 然后对给定的指令x和 ,指令“ 或 和 然后对给定的指令 和y,指令“x或y”和“x与y” 与 分别记为x+y(逻辑和)和x.y(逻辑积)。 分别记为 (逻辑和) (逻辑积)。 • 例如 , 指令 “ 选择 a 与 b, 或者选择 b 与 c”记为 例如, 指令“ 选择a与 b , 或者选择b与 c” 记为 ab+bc。从形式上看 , 逻辑和与逻辑积类似与集 。 从形式上看, 合的∪ 合的 ∪ 和 ∩, 而且关于 ∪ 和 ∩成立的代数法则对 , 而且关于∪ 成立的代数法则对 于这两个运算也成立。 于这两个运算也成立。 • 布尔恒等式 aa=a • a+a=a • (ab + bc)(a + bd) = aba + abbd + a+ab=a bca + bcbd = ab + abd + bcd + bca + bcd • 如:
相关文档
最新文档