图的着色问题

合集下载

图的着色问题--C++实现(含详细注释)

图的着色问题--C++实现(含详细注释)

图的着色问题一、题目简述(1) 图的m-着色判定问题给定一个无向连通图 G 和 m 种不同的颜色。

用这些颜色为图 G 的各顶点着色,每个顶点着一种颜色,是否有一种着色法使 G 中任意相邻的两个顶点着不同颜色?(2) 图的m-着色优化问题若一个图最少需要 m 种颜色才能使图中任意相邻的两个顶点着不同颜色,则称这个数 m 为该图的色数。

求一个图的最小色数 m 的问题称为m-着色优化问题。

二、算法思想1. m-着色判定问题总体思想:通过回溯的方法,不断为每一个节点着色,每个点的颜色由一个数字代表,初始值为1。

在对前面 step - 1 个节点都合法的着色之后,开始对第 step 个节点进行着色。

如果 n 个点均合法,且颜色数没有达到 m 种,则代表存在一种着色法使 G中任意相邻的两个顶点着不同颜色。

具体步骤:1. 对每个点 step ,有 m 种着色可能性,初始颜色值为1。

2. 检查第 step 个节点颜色的可行性,若与某个已着色的点相连且颜色相同,则不选择这种着色方案,并让颜色值加1,继续检查该点下一种颜色的可行性。

3. 如果第 step 点颜色值小于等于 m ,且未到达最后一个点,则进行对第 step + 1 点的判断。

4. 如果第 step 点颜色值大于 m ,代表该点找不到合适的分配方法。

此时算法进行回溯,首先令第 step 节点的颜色值为0,并对第 step - 1 个点的颜色值+1后重新判断。

5. 如果找到一种颜色使得第 step 个节点能够着色,说明 m 种颜色的方案是可行的。

6. 重复步骤2至5,如果最终 step 为0则代表无解。

2. m-着色优化问题基于问题1,对于一个无向图 G ,从1开始枚举染色数,上限为顶点数,第一个满足条件的颜色数即为所求解。

三、实现过程(附代码)1. m-着色判定问题#include<iostream>using namespace std;int color[100]; // 每个点的颜色int mp[100][100]; // 图的邻接矩阵int n, m, x; // n顶点,m种颜色方案,x条边bool check(int step) {// 判断与step点相邻的点,颜色是否与step点相同,若相同则返回falsefor (int i=1; i<=n; i++) {if (mp[step][i] ==1&&color[i] ==color[step]) {return false;}}return true;}bool Solve(int m) {// 求解是否可以找到一种可行的染色方案int step=1; // step指示当前节点while (step>=1) {color[step] +=1; // 假定颜色值从1开始,若为回溯,选择下一种方案while (color[step] <=m) { // 按照问题条件选择第step点颜色if (check(step)) {break;} else {color[step]++; // 搜索下一个颜色}}if (color[step] <=m&&step==n) { // 如果找完n个点,且染色方法小于等于m种 return true;} else if (color[step] <=m&&step<n) {step++; // 求解下一个顶点} else { // 如果染色数大于m个,回溯color[step] =0; // 回溯,该点找不到合适的分配方法,对上一点进行分析step--;}}// 如果step退到0,则代表无解return false;}int main() {int i, j;bool ans=false;cout<<"输入顶点数n和着色数m"<<endl;cin>>n>>m;cout<<"输入边数"<<endl;cin>>x;cout<<"具体输入每条边"<<endl;for (int p=0; p<x; p++) { // 以无向邻接矩阵存储边cin>>i>>j;mp[i][j] =1;mp[j][i] =1;}if (Solve(m)) {cout<<"有解";} else {cout<<"无解";}return0;}2. m-着色优化问题#include<iostream>using namespace std;int color[100]; // 每个点的颜色int mp[100][100]; // 图的邻接矩阵int n, m, x; // n顶点,m种颜色方案,x条边bool check(int step) {// 判断与step点相邻的点,颜色是否与step点相同,若相同则返回falsefor (int i=1; i<=n; i++) {if (mp[step][i] ==1&&color[i] ==color[step]) {return false;}}return true;}bool Solve(int m) {// 求解是否可以找到一种可行的染色方案int step=1; // step指示当前节点while (step>=1) {color[step] +=1; // 假定颜色值从1开始,若为回溯,选择下一种方案while (color[step] <=m) { // 按照问题条件选择第step点颜色if (check(step)) {break;} else {color[step]++; // 搜索下一个颜色}}if (color[step] <=m&&step==n) { // 如果找完n个点,且染色方法小于等于m种 return true;} else if (color[step] <=m&&step<n) {step++; // 求解下一个顶点} else { // 如果染色数大于m个,回溯color[step] =0; // 回溯,该点找不到合适的分配方法,对上一点进行分析step--;}}// 如果step退到0,则代表无解return false;}int main() {int i, j;bool ans=false;cout<<"输入顶点数n"<<endl;cin>>n;cout<<"输入边数"<<endl;cin>>x;cout<<"具体输入每条边"<<endl;for (int p=0; p<x; p++) { // 以无向图邻接矩阵存储边 cin>>i>>j;mp[i][j] =1;mp[j][i] =1;}for (m=1; m<=n; m++) { // 从小到大枚举着色数mif (Solve(m)) { // 如果有解,输出答案并跳出循环cout<<"最小色数m为 "<<m;break;}}return0;}四、结果及分析问题1测试用例:问题2测试用例:经检验,最少着色数的范围为2-4,意味着使 G 中任意相邻的两个顶点着不同颜色最多需要4种颜色。

图的平面性与图的着色问题

图的平面性与图的着色问题

图的平面性与图的着色问题在图论中,图的平面性与图的着色问题是两个重要的研究方向。

图的平面性指的是一种特殊的图的布局方式,使得图的边不相交。

而图的着色问题是指如何给图的顶点进行染色,使得相邻的顶点颜色不相同。

本文将分别介绍图的平面性和图的着色问题,并对其进行详细讨论。

一、图的平面性(Planarity of Graphs)图的平面性是图论中一个经典的问题,研究的是如何将一个图画在平面上,使得图的边不相交。

具体而言,如果一个图可以被画在平面上,且不同边的交点只有顶点,那么我们称该图是一个平面图。

而对于不能在平面上画出来的图,则被称为非平面图。

定理1:一个图是平面图,当且仅当它不包含任何的子图同构于以下两种图之一:K5(五个没有共同边的顶点)或K3,3(六个节点,其中任意两个节点之间都有边相连但不交叉)。

这个定理被称为Kuratowski定理,它为我们判断一个图是否是平面图提供了一个有效的方法。

根据Kuratowski定理,我们可以使用该定理的逆否命题,即如果一个图中包含K5或K3,3,则该图一定是非平面图。

除了Kuratowski定理之外,还有一种判断图的平面性的方法,称为Euler公式。

Euler公式表达了平面图的顶点数、边数和面数之间的关系:V - E + F = 2其中V表示顶点数,E表示边数,F表示面数。

根据Euler公式,对于简单连接图(无环,无孤立点),如果它的顶点数大于等于3且边数大于等于3,且满足Euler公式,则该图是一个平面图。

二、图的着色问题(Graph Coloring)图的着色问题是指如何给一个图的顶点进行染色,使得相邻的顶点颜色不相同。

这里的相邻指的是有边相连的顶点。

在图论中,颜色通常表示为正整数,颜色数则表示为给定图所需的最小颜色数。

对于任意图G,G的最小颜色数被称为G的色数。

如果图G的色数为k,则称图G是可k着色的。

求解一个图的最小色数是一个复杂的问题,称为顶点着色问题(Vertex Coloring Problem),它是一个NP 完全问题。

离散数学图着色问题算法描述

离散数学图着色问题算法描述

离散数学图着色问题算法描述离散数学图着色问题,简单来说是指给定一个无向图,如何为每个节点上色,使得相邻节点的颜色不相同。

这个问题可以用图着色算法来解决,下面将对图着色问题的算法描述进行详细介绍。

1. 算法背景介绍在离散数学中,图着色问题是一种经典的组合优化问题,它有广泛的应用领域,如地图着色、时间表排课等。

该问题的关键在于找到一种最少的颜色分配方案,使得相邻节点的颜色不相同。

2. 算法步骤描述(1)初始化:给定一个无向图G,节点数为n,边数为m。

初始时,给每个节点分配一个未被使用的颜色。

(2)排序节点:按照节点的度数降序进行排序,从度数最大的节点开始着色。

(3)节点着色:依次对每个节点进行着色。

对于当前节点v,遍历它的所有相邻节点w,如果w已经被染色,则从可用的颜色集合中去除w的颜色。

最后,将v染色为可用的最小颜色。

(4)重复步骤3,直到所有节点都被染色。

3. 算法实例演示假设有以下无向图G:```A/ \B C/ \ / \D -E - F```首先,对节点进行排序,按照度数降序排序为:E(度数为4),A (度数为3),D(度数为2),B和C(度数为1),F(度数为0)。

接下来,按照排序后的顺序对每个节点进行着色。

首先着色E,将其染色为第一个可用的颜色。

然后是A,由于E已经被染色为第一个颜色,A只能选择剩下的颜色。

接着是D,由于D与已经着色的节点E邻接,所以D需要选择未被使用的颜色。

然后是B和C,它们的邻居节点E和A已经被着色,所以它们只能选择未被使用的颜色。

最后是F,由于F没有邻居节点,可以选择任意颜色。

经过上述步骤,图G的每个节点都被着色,且相邻节点的颜色不相同。

4. 算法分析该算法在最坏情况下需要对节点进行O(n^2)次比较,其中n为节点数。

因此,算法的时间复杂度为O(n^2)。

同时,该算法具有较好的可行性和实用性,对于大部分图着色问题能够给出近似最优的解。

综上所述,离散数学图着色问题的算法描述如上所述。

图的着色问题

图的着色问题

问题来源
图的着色
通常所说的着色问题是指下述两类问题: 通常所说的着色问题是指下述两类问题: 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。 由此可见, 由此可见,求色数其需要求极大独立集以 及一切若干极大独立集的和含所有顶点的子 对于大图, 集,对于大图,因为图计算量过大而成为实 际上难以凑效的算法,所以不是一个好算法, 际上难以凑效的算法,所以不是一个好算法, 一般我们采用贪心法等近似算法来求解 。

实验四 回溯法(图着色问题)

实验四 回溯法(图着色问题)
对应的邻接矩阵
01 234 001 1 01 1 1 01 01 21 1 01 0 3001 01 41 1 01 0
class MGraph { public:
MGraph(int v,int s); void mColoring(int m,int *x); //一维数组x,存放1~n个顶点的颜色 ~MGraph(); private: void NextValue(int k,int m,int *x); void mColoring (int k,int m,int *x); int **a; //二维数组a,存储图的邻接矩阵 int n,e; //n表示图的顶点数,e表示边数 };
无向图G
【实验内容与要求】
图的着色问题:设G=(V,E)是一连通无向图,有3 种颜色,用这些颜色为G的各顶点着色,每个顶点着 一种颜色,且相邻顶点颜色不同。试用回溯法设计一 个算法,找出所有可能满足上述条件的着色法。
无向图G
无向图G
对应这个无向图的状态空间树应该是怎样的?
是一个完全3叉树,共6层
实验四 回溯法 — 图的着色问题
图的着色问题是由地图的着色问题引申而来的: 用m种颜色为地图着色,使得地图上的每一个 区域着一种颜色,且相邻区域颜色不同。
问题处理:如果把每一个区域收缩为一个顶点, 把相邻两个区域用一条边相连接,就可以把一
个区域图抽象为一个平面图。
地图(map)中地区的相邻关系,在图(graph )中用边表示。
//若(i, j)是图的边,且相邻结点k和j颜色相同 //发生冲突,选下一种颜色
if (j==k) return; //成功选择一种颜色返回 }while (1); //循环尝试颜色 }
运行结果:

图论讲义第6章-图的着色问题

图论讲义第6章-图的着色问题

| c1 (ν ) | = 1 ,其中 ci (υ ) 表示 υ 阶第 i 类图的集合。这 v →∞ | c (ν ) ∪ c (ν ) | 1 2
vk
… v3 v2
i4 i3 i2
u
… H2
ik i0

im ik
i1
vm
v1
v
但是,因 vk 在 H 1 中的度为 2(恰与一条 i0 色边和一条 ik 色边相关联) ,故它在 H 2 中的 。这与 H 2 是奇圈矛盾。 (注意 vk 必在分支 H 2 中,因它与 度为 1(仅与一条 i0 色边相关联) 。由此可知反证法假设不能成立。证毕。 vk-1 有 i0、ik 交错路( H 1 的一段)相连) 对于有重边的图 G,设 μ (G ) 表示 G 中边的最大重数,Vizing 实际上证明了一个更一般 的结论: Δ (G ) ≤
(其中 v0 点的关联边有可能是同一种色) 。按这 样可得 G*的一个边 2-染色 c = ( E1 , E 2 ) , 种办法给 G*的边染色后,去掉 v0 及其关联的边,便得到 G 的一个边 2-染色。对于 G 中偶 度点,它关联的边及其颜色与 G*中相同;对 G 的任何奇度点 v,在 G 中比在 G*中少关联一 条边,但只要 d G ( v ) > 1 , 便有 d G ( v ) ≥ 3 , 故由染色的方法知,与 v 点关联的边中两种颜色 的都有。这说明 G 的边 2-染色 c = ( E1 ∩ E (G ), E 2 ∩ E (G )) 即为所求的边 2-染色。证毕。
… H1 vk-1
ikik i0
( Δ + 1) 边染色。由引理 6.1.2, G[ Ei′0 ∪ Ei′k ] 中含有 u 的那个分支 H 1 是个奇圈。

图论课件第七章图的着色

图论课件第七章图的着色
总结词
平面图的着色问题是一个经典的图论问题,其目标是在满足相邻顶点颜色不同 的条件下,使用最少的颜色对平面图的顶点进行着色。
详细描述
平面图的着色问题可以使用欧拉公式和Kuratowski定理进行判断和求解。此外 ,也可以使用贪心算法、分治策略等算法进行求解。
树图的着色问题
总结词
树图的着色问题是一个经典的图论问 题,其目标是使用最少的颜色对树图 的顶点进行着色,使得任意两个相邻 的顶点颜色不同。
分支限界算法
总结词
分支限界算法是一种在搜索树中通过剪枝和 优先搜索来找到最优解的算法。
详细描述
在图的着色问题中,分支限界算法会构建一 个搜索树,每个节点代表一种可能的着色方 案。算法通过优先搜索那些更有可能产生最 优解的节点来加速搜索过程,同时通过剪枝 来排除那些不可能产生最优解的节点。分支 限界算法可以在较短的时间内找到最优解,
尤其适用于大规模图的着色问题。
03
图的着色问题的复 杂度
计算复杂度
确定图着色问题的计算复杂度为NP-完全,意味着该问题在多项式时间 内无法得到确定解,只能通过近似算法或启发式算法来寻找近似最优解 。
图着色问题具有指数时间复杂度,因为对于n个顶点的图,其可能的颜色 组合数量为n^k,其中k为每个顶点可用的颜色数。
02
图的着色算法
贪心算法
总结词
贪心算法是一种在每一步选择中都采取当前状态下最好或最优(即最有利)的选 择,从而希望导致结果是最好或最优的算法。
详细描述
贪心算法在图的着色问题中的应用是通过逐个对顶点进行着色,每次选择当前未 被着色的顶点中颜色数最少的颜色进行着色,直到所有顶点都被着色为止。这种 算法可以保证最小化使用的颜色数量,但并不保证得到最优解。

图着色问题的整数规划模型

图着色问题的整数规划模型

图着色问题的整数规划模型图着色问题是指给定一个图,如何用有限的颜色对图中的每个顶点进行染色,同时要求相邻的顶点不能具有相同的颜色。

该问题在图论和离散优化领域中具有重要的研究价值和应用意义。

在本文中,我们将介绍一种用整数规划模型来解决图着色问题的方法。

一、问题描述给定一个无向图G=(V,E),其中V是顶点的集合,E是边的集合。

现在需要为图中的每个顶点分配一种颜色,并且要求相邻的顶点之间不能分配相同的颜色。

也就是说,如果两个顶点在图中存在一条边相连,则它们不能分配相同的颜色。

二、整数规划模型为了描述图着色问题的整数规划模型,我们首先定义一组决策变量。

设顶点v属于集合V,颜色c属于集合C,那么决策变量x_vc表示顶点v是否被分配颜色c,取1表示被分配,取0表示未被分配。

接下来,我们可以定义以下约束条件:1. 每个顶点只能被分配一种颜色:对于每个顶点v,有∑(c∈C) x_vc = 1,其中∑表示求和。

2. 相邻的顶点不能分配相同的颜色:对于任意的边(u,v)∈E,有∑(c∈C) x_uc ≠ ∑(c∈C) x_vc。

3. 决策变量的取值范围:x_vc只能取0或1。

4. 目标函数:为了最小化所需的颜色数量,我们可以定义目标函数为最大化∑(v∈V) x_vc。

三、求解方法将图着色问题转化为整数规划模型后,可以使用相应的求解方法来找到最优解。

常用的求解方法包括线性规划、整数规划和混合整数规划等。

对于线性规划,我们忽略决策变量的整数限制,将约束条件和目标函数设计成线性的形式。

然后使用线性规划求解器求解可以得到一个最优解。

但需要注意的是,线性规划得到的解可能不是整数解,需要进一步进行舍入处理。

对于整数规划,我们将决策变量的整数约束加入模型中。

这样可以确保得到的解是整数解。

但整数规划问题通常是NP难问题,求解难度较大。

对于混合整数规划,我们可以采用分支定界、割平面等方法来进行求解。

这些方法可以在规模较大的问题中得到较好的解。

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

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