图的着色问题课件.ppt
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《图的着色问题课件.ppt》由用户(晟晟文业)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 着色 问题 课件
- 资源描述:
-
1、问题来源图的着色问题是由地图的着色问题引申而来的:用图的着色问题是由地图的着色问题引申而来的:用m m种颜色为地图着色,使得地图上的每一个区域种颜色为地图着色,使得地图上的每一个区域着一种颜色,且相邻区域颜色不同。着一种颜色,且相邻区域颜色不同。问题处理:如果把每一个区域收缩为一个顶点,把问题处理:如果把每一个区域收缩为一个顶点,把相邻两个区域用一条边相连接,就可以把一个区相邻两个区域用一条边相连接,就可以把一个区域图抽象为一个平面图。域图抽象为一个平面图。例如,图例如,图12-112-1(a a)所示的区域图可抽象为)所示的区域图可抽象为12-112-1(b b)所表示的平面图。所表示的平面
2、图。1919世纪世纪5050年代,英国学者提出年代,英国学者提出了任何地图都可以了任何地图都可以4 4中颜色来着色的中颜色来着色的4 4色猜想问题。色猜想问题。过了过了100100多年,这个问题才由美国学者在计算机多年,这个问题才由美国学者在计算机上予以证明,这就是著名的四色定理。例如,在上予以证明,这就是著名的四色定理。例如,在图图12-112-1中,区域用城市名表示,颜色用数字表示,中,区域用城市名表示,颜色用数字表示,则图中表示了不同区域的不同着色问题则图中表示了不同区域的不同着色问题 。1PPT课件问题来源2PPT课件图的着色 通常所说的着色问题是指下述两类问题:通常所说的着色问题是指
3、下述两类问题:1 1给定无环图给定无环图G G=(=(V V,E E),用,用m m种颜色为图中种颜色为图中的每条边着色,要求每条边着一种颜色,并的每条边着色,要求每条边着一种颜色,并使相邻两条边有着不同的颜色,这个问题称使相邻两条边有着不同的颜色,这个问题称为图的边着色问题。为图的边着色问题。2 2给定无向图给定无向图G G=(=(V V,E E),用,用m m种颜色为图中种颜色为图中的每个顶点着色,要求每个顶点着一种颜色,的每个顶点着色,要求每个顶点着一种颜色,并使相邻两顶点之间有着不同的颜色,这个并使相邻两顶点之间有着不同的颜色,这个问题称为图的顶着色问题。问题称为图的顶着色问题。3PP
4、T课件顶点着色基本概念 独立集独立集:对图:对图G=(V,E),设,设S是是V的一个子集,若的一个子集,若中任意两个顶点在中任意两个顶点在G中均不相邻,则称中均不相邻,则称S为为G的一的一个独立集。个独立集。最大独立集最大独立集:如果:如果G不包含适合不包含适合|S|S|的独立的独立集集S,则称,则称S为为G的最大独立集。的最大独立集。极大覆盖极大覆盖:设:设K是是G的一个独立集,并且对于的一个独立集,并且对于V-K的任一顶点的任一顶点v,K+v都不是都不是G的独立集,则称的独立集,则称K是是G的一个极大覆盖。的一个极大覆盖。极小覆盖极小覆盖:极大独立集的补集称为极小覆盖。:极大独立集的补集称
5、为极小覆盖。V的子集的子集K是是G的极小覆盖当且仅当:对于每个顶的极小覆盖当且仅当:对于每个顶点点v或者或者v属于属于K,或者,或者v的所有邻点属于的所有邻点属于K(但两(但两者不同时成立)者不同时成立)。4PPT课件顶点着色基本概念K K可着色可着色:G G的一个的一个k k顶点着色是指顶点着色是指k k种颜色种颜色1,2,1,2,k,k对于对于G G各顶点的各顶点的一个分配,如果任意两个相邻顶点都分配到不同的颜色,则称着一个分配,如果任意两个相邻顶点都分配到不同的颜色,则称着色是正常的。换句话说,无环图色是正常的。换句话说,无环图G G的一个正常的一个正常k k顶点着色是把顶点着色是把V
6、V分成分成k k个(可能有空的)独立集的一个分类个(可能有空的)独立集的一个分类(V V1,1,V V2,2,VkVk)。当。当G G有一个有一个正常正常k k顶点着色时,就成顶点着色时,就成G G是是k k顶点可着色的。顶点可着色的。G G的色数的色数X X(G G)是指)是指G G为为k k可着色的可着色的k k的最小值,若的最小值,若X X(G G)=k=k,则称,则称G G是是k k色的。色的。事实上,如果我们将同色的顶点列入一个顶点子集,那么求事实上,如果我们将同色的顶点列入一个顶点子集,那么求X X(G G)就转为求满足下列条件的最少子集数就转为求满足下列条件的最少子集数k k:(
7、1 1)两两子集中的顶点不同;)两两子集中的顶点不同;(2 2)子集中的两两顶点不相邻。)子集中的两两顶点不相邻。显然有:显然有:(i i)若)若G G为平凡图,则为平凡图,则X X(G G)=1=1;(iiii)若)若G G为偶图,则为偶图,则X X(G G)=2=2 (iiiiii)对任意图)对任意图G G,有,有X X(G G)+1+1(这里(这里表示为顶点表示为顶点数最大值)数最大值)5PPT课件顶点着色顶点着色求顶色数的算法设计求顶色数的算法设计我们由我们由“每个同色顶点集合中的两两顶点不相邻每个同色顶点集合中的两两顶点不相邻”可以看出,同色顶可以看出,同色顶点集实际上是一个独立集,
8、当我们用第点集实际上是一个独立集,当我们用第1 1种颜色上色时,为了尽可种颜色上色时,为了尽可能扩大颜色能扩大颜色1 1的顶点个数,逼近所用颜色数最少的目的,事实上就的顶点个数,逼近所用颜色数最少的目的,事实上就是找出图是找出图G G的一个极大独立集并给它涂上颜色的一个极大独立集并给它涂上颜色1 1。用第。用第2 2种颜色上色种颜色上色时,同样选择另一个极大独立集涂色,时,同样选择另一个极大独立集涂色,.,当所有顶点涂色完毕,当所有顶点涂色完毕,所用的颜色数即为所选的极大独立集的个数。所用的颜色数即为所选的极大独立集的个数。当然,上述颜色数未必就是当然,上述颜色数未必就是X X(G G),而且
9、其和能够含所有顶点的极大),而且其和能够含所有顶点的极大独立集个数未必唯一。于是我们必须从一切若干极大独立集的和独立集个数未必唯一。于是我们必须从一切若干极大独立集的和含所有顶点的子集中,挑选所用极大独立集个数最小者,其个数含所有顶点的子集中,挑选所用极大独立集个数最小者,其个数即为所用的颜色数即为所用的颜色数X X(G G)。)。由此可以得算法步骤:由此可以得算法步骤:Step1Step1:求:求G G图的所有极大独立集;图的所有极大独立集;Step2Step2:求出一切若干极大独立集的和含所有顶点的子集;:求出一切若干极大独立集的和含所有顶点的子集;Step3Step3:从中挑选所用极大独
10、立集个数最小值,即为:从中挑选所用极大独立集个数最小值,即为X X(G G)。)。6PPT课件求极小覆盖法布尔代数法求极小覆盖法布尔代数法求极小覆盖的方法求极小覆盖的方法-布尔代数法布尔代数法:对于每个顶点对于每个顶点v,选择,选择v或者选择或者选择v的所有邻的所有邻点。首先把点。首先把“选择顶点选择顶点v”这个指令记为符号这个指令记为符号v,然后对给定的指令然后对给定的指令x和和y,指令,指令“x或或y”和和“x与与y”分别记为分别记为x+y(逻辑和)和(逻辑和)和x.y(逻辑积)。(逻辑积)。例如,指令例如,指令“选择选择a与与b,或者选择,或者选择b与与c”记为记为ab+bc。从形式上看
11、,逻辑和与逻辑积类似与集。从形式上看,逻辑和与逻辑积类似与集合的合的和和,而且关于,而且关于和和成立的代数法则对成立的代数法则对于这两个运算也成立。于这两个运算也成立。布尔恒等式布尔恒等式 aa=a a+a=a a+ab=a 如:如:bcdab bcdbcabcdabdab bcbdbcaabbdababd)bc)(a(ab7PPT课件求极小覆盖法布尔代数法求极小覆盖法布尔代数法例例1 1:求图:求图12-2G12-2G的顶色数的顶色数 解:解:Step1Step1:求极大独立集:求极大独立集 先求图先求图G G的极小覆盖,的极小覆盖,化简得化简得故故G G的极小覆盖为的极小覆盖为取其补集,得
12、到取其补集,得到G G的所有的所有 极大独立集:极大独立集:Step2Step2:求出一切若干极大独立集和所有顶点的子集:求出一切若干极大独立集和所有顶点的子集 显然我们可以选用显然我们可以选用4 4种颜色给每个顶点涂色,或者选种颜色给每个顶点涂色,或者选用用3 3种颜色分别给种颜色分别给3 3个极大独立集涂色,例如为个极大独立集涂色,例如为b,d,fb,d,f 中中的的b b、d d、f f涂颜色涂颜色1 1,为,为a,fa,f 中的中的a a涂颜色涂颜色2 2,为,为a,c,ga,c,g 中中的的c c和和g g涂颜色涂颜色3 3,为,为aa,e e,gg中的中的e e涂颜色涂颜色4 4。
13、)()()()()()(bdfgcegfbcdfeacegdbdefcacegbbdabcdfbdefbdefbcacegdeg,fdcbfedbgedcbgeca,geagcafafdb8PPT课件求极小覆盖法布尔代数法求极小覆盖法布尔代数法Step3Step3:从中挑选所用极大独立集个数最小者,:从中挑选所用极大独立集个数最小者,即为即为X X(G G)但上述子集的颜色数都不是但上述子集的颜色数都不是X X(G G),正确的应),正确的应该是该是X X(G G)=3=3,该子集为:给,该子集为:给b,d,fb,d,f 中的中的b,d,fb,d,f涂颜色涂颜色1 1,为,为a,e,ga,e,
14、g 中中a,e,ga,e,g涂颜色涂颜色2 2为为a,c,ga,c,g 中的中的c c涂颜色涂颜色3 3。由此可见,求色数其需要求极大独立集以由此可见,求色数其需要求极大独立集以及一切若干极大独立集的和含所有顶点的子及一切若干极大独立集的和含所有顶点的子集,对于大图,因为图计算量过大而成为实集,对于大图,因为图计算量过大而成为实际上难以凑效的算法,所以不是一个好算法,际上难以凑效的算法,所以不是一个好算法,一般我们采用贪心法等近似算法来求解一般我们采用贪心法等近似算法来求解 。9PPT课件穷举法Welch Powell着色法 I I将图将图G G中的结点按度数的递减顺序进行排列中的结点按度数的
15、递减顺序进行排列(这种排列可能不是唯一的,因为有些结点的度这种排列可能不是唯一的,因为有些结点的度数相同数相同)。IIII用第一种颜色对第一结点着色,并按排列顺用第一种颜色对第一结点着色,并按排列顺序对与前面着色结点不邻接的每一结点着上同样序对与前面着色结点不邻接的每一结点着上同样的颜色。的颜色。IIIIII用第二种颜色对尚未着色的结点重复用第二种颜色对尚未着色的结点重复IIII,用第三种颜色继续这种做法,直到所有的结点全用第三种颜色继续这种做法,直到所有的结点全部着上色为止。部着上色为止。10PPT课件穷举法Welch Powell着色法 给定图给定图G,用,用Welch Powell法对图
16、法对图G着着色色A4A2A3A6A53211311PPT课件穷举法Welch Powell着色法 第一步:将图第一步:将图G G中的结点按度数的递减顺序排中的结点按度数的递减顺序排列:列:第二步:用第一种颜色对第二步:用第一种颜色对A A5 5着第一种颜色,着第一种颜色,并对与并对与A A5 5不邻接的结点不邻接的结点A A1 1也着第一种颜色。也着第一种颜色。第三步:对结点第三步:对结点A A3 3及与及与A A3 3不邻接的结点不邻接的结点A A4 4、A A8 8着第二种颜色。着第二种颜色。第四步:对结点第四步:对结点A A7 7及与及与A A7 7不邻接的结点不邻接的结点A A2 2、
17、A A6 6着第三种颜色。着第三种颜色。可见,图可见,图G G是三色的。但图是三色的。但图G G不可能是二色不可能是二色的,因为的,因为A A1,1,A A2,2,A A3 3相互邻接,故必须着三相互邻接,故必须着三种颜色。所以种颜色。所以x x(G G)=3)=3。86421735,AAAAAAAA12PPT课件回溯法 由于用由于用m m种颜色为无向图种颜色为无向图G G=(=(V V,E E)着色,其中,着色,其中,V V的顶点个的顶点个数为数为n n,可以用一个,可以用一个n n元组元组C C=(c(c1,1,c c2,2,c cn n)来描述图的一来描述图的一种可能着色,其中,种可能着
18、色,其中,cici1,2,1,2,m m,(1(1i in n)表示表示赋予顶点赋予顶点i i的颜色。的颜色。例如,例如,5 5元组元组(1,2,2,3,1)(1,2,2,3,1)表示对具有表示对具有5 5个顶点的无个顶点的无向图向图12.312.3(a a)的一种着色,顶点)的一种着色,顶点1 1着颜色着颜色1 1,顶点,顶点2 2着颜色着颜色2 2,顶点,顶点3 3着颜色着颜色2 2,如此等等。,如此等等。如果在如果在n n元组元组C C中,所有相邻顶点都不会着相同颜色,就称中,所有相邻顶点都不会着相同颜色,就称此此n n元组为可行解,否则为无效解。元组为可行解,否则为无效解。回溯法求解图
19、着色问题:首先把所有顶点的颜色初始化为回溯法求解图着色问题:首先把所有顶点的颜色初始化为0 0,然后依次为每个顶点着色。如果其中,然后依次为每个顶点着色。如果其中i i个顶点已经着色,个顶点已经着色,并且相邻两个顶点的颜色都不一样,就称当前的着色是有并且相邻两个顶点的颜色都不一样,就称当前的着色是有效的局部着色;否则,就称为无效的着色。如果由根节点效的局部着色;否则,就称为无效的着色。如果由根节点到当前节点路径上的着色,对应于一个有效着色,并且路到当前节点路径上的着色,对应于一个有效着色,并且路径的长度小于径的长度小于n n,那么相应的着色是有效的局部着色。这,那么相应的着色是有效的局部着色。
20、这时,就从当前节点出发,继续探索它的儿子节点,并把时,就从当前节点出发,继续探索它的儿子节点,并把13PPT课件回溯法 儿子结点标记为当前结点。在另一方面,儿子结点标记为当前结点。在另一方面,如果在相应路径上搜索不到有效的着色,就把当如果在相应路径上搜索不到有效的着色,就把当前结点标记为前结点标记为d_d_结点,并把控制转移去搜索对应结点,并把控制转移去搜索对应于另一种颜色的兄弟结点。如果对所有于另一种颜色的兄弟结点。如果对所有m m个兄弟个兄弟结点,都搜索不到一种有效的着色,就回溯到它结点,都搜索不到一种有效的着色,就回溯到它的父亲结点,并把父亲结点标记为的父亲结点,并把父亲结点标记为d_d
21、_结点,转移结点,转移去搜索父亲结点的兄弟结点。这种搜索过程一直去搜索父亲结点的兄弟结点。这种搜索过程一直进行,直到根结点变为进行,直到根结点变为d_d_结点,或者搜索路径长结点,或者搜索路径长度等于度等于n n,并找到了一个有效的着色为止。,并找到了一个有效的着色为止。例:利用回溯法给下图(例:利用回溯法给下图(a a)着色。)着色。step one:step one:把把5 5元组初始化为(元组初始化为(0,0,0,0,00,0,0,0,0),从),从根结点开始向下搜索,以颜色根结点开始向下搜索,以颜色1 1为顶点为顶点A A着色,生着色,生成根结点成根结点2 2时,产生时,产生(1,0,
22、0,0,0)(1,0,0,0,0),是个有效着色。,是个有效着色。14PPT课件回溯法 15PPT课件回溯法 step two:以颜色以颜色1为顶点为顶点B着色生成结点着色生成结点3时,产生时,产生(1,1,0,0,0),是个无效着色,结点,是个无效着色,结点3为为d_结点。结点。Step three:以颜色:以颜色2为顶点为顶点B着色生成结点着色生成结点4,产,产生生(1,2,0,0,0),是个有效着色。,是个有效着色。Step four:分别以颜色:分别以颜色1和和2为顶点为顶点C着色生成结点着色生成结点5和和6,产生,产生(1,2,1,0,0)和和(1,2,2,0,0),都是无效着,都是
23、无效着色,因此结点色,因此结点5和和6都是都是d_结点。结点。Step five:以颜色:以颜色3为顶点为顶点C着色,产生着色,产生(1,2,3,0,0),是个有效着色。重复上述步骤,最后得到有效着是个有效着色。重复上述步骤,最后得到有效着色色(1,2,3,3,1)。16PPT课件回溯法 设数组设数组colorn表示顶点的着色情况,回溯法求解表示顶点的着色情况,回溯法求解m着色问题的算着色问题的算法如下:法如下:图着色回溯法图着色回溯法:1将数组将数组colorn初始化为初始化为0;2k=1;3while(k=1)3.1 依次考察每一种颜色,若顶点依次考察每一种颜色,若顶点k的着色与其他顶点的
24、着色不发的着色与其他顶点的着色不发生冲突,则转步骤生冲突,则转步骤3.2;否则,搜索下一个颜色;否则,搜索下一个颜色;3.2 若顶点已全部着色,则输出数组若顶点已全部着色,则输出数组colorn,返回;,返回;3.3 否则,否则,3.3.1 若顶点若顶点k是一个合法着色,则是一个合法着色,则k=k+1,转步骤,转步骤3处理下一个处理下一个顶点;顶点;3.3.2 否则,重置顶点否则,重置顶点k的着色情况,的着色情况,k=k-1,转步骤,转步骤3。17PPT课件回溯法回溯法 1.void GraphColor(int n,int c ,int m)2./所有数组下标从所有数组下标从1开始开始3.f
25、or(i=1;i=1)6.colork=colork+1;7.while(colork=m)8.if Ok(k)break;9.else colork=colork+1;/搜索下一个颜色搜索下一个颜色10.if(colork=m&k=n)/求解完毕,输出解求解完毕,输出解11.for(i=1;i=n;i+)12.coutcolori;13.return;14.15.else if(colork=m&kn)16.k=k+1;/处理下一个顶点处理下一个顶点17.else colork=0;k=k-1;/回溯回溯 18.19.18PPT课件回溯法 bool Ok(int k)/判断顶点判断顶点k的着
展开阅读全文