当前位置:文档之家› 第8节 图论应用实例_图着色问题

第8节 图论应用实例_图着色问题

第8节 图论应用实例_图着色问题
第8节 图论应用实例_图着色问题

预备知识_回溯法

回溯法:在实际生活中,有些问题是不能用数学公式去解决的,它需要通过一个过程,此过程要经过若干个步骤才能完成,每一个步骤又分为若干种可能;同时,为了完成任务,还必须遵守一些规则,但这些规则无法用数学公式表示,对于这样一类问题,一般采用搜索的方法来解决,回溯法就是搜索算法(广度优先、深度优先等)中的一种控制策略,它能够解决许多搜索中问题。 回溯法基本思想:试探法,撞了南墙就回头。(一般采用深度优先搜索策略) 搜索策略:深度优先(不撞南墙不回头)。

在搜索过程中,如果求解失败,则返回搜索步骤中的上一点,去寻找新的路径,以求得答案。要返回搜索,前进中的某些状态必须保存,才能使得退回到某种状态后能继续向前。

白话搜索:如果用数组存放搜索信息,i 表示数组下标(当前状态), ++i 表示往前走(下一个状态),--i 表示回溯(往回退,返回上一次状态)。

第8节 图论应用实例_图着色(graph coloring )问题

数学定义:给定一个无向图G=(V , E ),其中V 为顶点集合,E 为边集合,图着色问题即为将V 分为k 个颜色组(k 为颜色数),每个组形成一个独立集,即其中没有相邻的顶点。其优化版本是希望获得最小的k 值。

典型应用:地图的着色、调度问题等。

k-着色判定问题:给定无向连通图G 和k 种不同的颜色。用这些颜色为图G 的各顶点着色,每个顶点着一种颜色,是否有一种着色法使G 中任意相邻的2

个顶点着不同颜色?

例 四色问题。设有如图1的地图,每个区域代表一个省,区域中的数字表示省的编号,现在要求给每个省涂上红、蓝、黄、白四种颜色之一,同时使相邻的省份以不同的颜色区分。 课外拓展:搜索“四色问题”,了解四色问题相关知识。

图1

问题分析:

(1)属于图的搜索问题。将问题简化:将每个省抽象为一个点,省之间的联系看为一条边,可以得到图2。

图2

(2)用邻接矩阵表示各省之间的相邻关系,二维数组实现:

[]??

?=不相邻

与省表示省相邻

与省表示省j i j i j i r 0 1, 由图2可以得到如下矩阵:(对称矩阵) 1 2 3 4 5 6 7 1

2 3 4 5 6 7

(3)从编号为1的省开始按四种颜色顺序填色,当第1个省颜色与相邻省颜色不同时,就可以确定第1个省的颜色,然后,再依次对第2、第3,……,进行处理,直到所有省份颜色都涂上为止。

(4)问题关键在于填色过程中,如果即将填的颜色与相邻省的颜色相同,而且四种颜色都试探过,均不能满足要求,则需要回溯到上一个点(即前一个省),修改上一个省的颜色,重新试探下一个省的颜色。 参考代码:(学生版本) //回溯法:地图四色问题

// 大致思路:从第1个节点开始扫描,第1个节点颜色为1,第i 个节点欲试探的颜色为color(color 从1开始),

//循环判断i 与已着色的前i-1个节点是否相邻,如果相邻且颜色也相同,那么颜色color 则不合适,立刻跳出循环,

//下一个试探的颜色为++color ,并且重新开始循环判断,试探下一个颜色是否合适。

//如果i与前i-1个节点循环判断后没有既相邻又同颜色的,那么第i个节点颜色为当前的color。

// 但是如果color到4都没有符合条件,那么我们就需要重新对i-1节点重新着色(回溯),它的颜色应该+1,并且继续循环判断i-1节点。

#include

#include

using namespace std;

const int MAX=100;

void mapcolor(int x[],int r[][MAX],int n);//x数组:各节点着色结果;r数组:节点关系邻接矩阵;n:节点数int main()

{

int r[MAX][MAX],x[MAX];

int n,i,j;

ifstream cin("map.txt");

cin>>n;

for(i=0;i

for(j=0;j

r[i][j]=-1;

for(i=0;i

for(j=0;j

cin>>r[i][j];

mapcolor(x,r,n);//节点着色

for(i=0;i

cout<<"color of node "<

return 0;

}

void mapcolor(int x[],int r[][MAX],int n)

{

int i,color,j;//i:欲着色的当前节点,j:已着色的节点

x[0]=1;//第1个节点颜色为1

i=1;//节点计数

color=1;//颜色,从1开始

while(i

while(color<=4 && i

{

for(j = 0; j

{

if(r[i][j] == 1 && x[j] ==color) //相邻节点,且颜色相同,则跳出循环

break;

}

if(j < i)

++color;//下一个欲试探的颜色

else

{

x[i]=color;//欲着的颜色和前i-1个已着色的节点不冲突,当前节点着色为color颜色

++i;//准备试探下一个节点

color=1;//颜色重新赋值

}

if(color>4)//没有可用颜色,回溯到上一个节点

{

--i;

color=x[i]+1;//倒退后,当前节点下一个试探的颜色

}

}

}

输入:

7

0 1 0 0 0 0 1

1 0 1 1 1 1 1

0 1 0 1 0 0 0

0 1 1 0 1 0 0

0 1 0 1 0 1 0

0 1 0 0 1 0 1

1 1 0 0 0 1 0

输出:

验证:上述运行结果图形化结果如下图所示。

颜色号及对应颜色:1:红色;2:绿色;3:淡紫;4:浅蓝色

图着色

算法设计课程设计 题目图着色问题 姓名学号 专业年级 指导教师职称 2014年 12月 4日

图的m着色问题 1 摘要 (3) 2 图的着色问题 (4) 2.1 图的着色问题的来源 (4) 2.2 图的着色问题的描述 (4) 3算法的基本思想 (4) 3.1 求极小覆盖法----布尔代数法 (4) 3.2 穷举法-Welch Powell着色法 (4) 3.3 回溯法 (4) 3.4 贪心法 (4) 3.5 蚁群算法 (5) 4算法步骤 (5) 4.1 求极小覆盖法----布尔代数法 (4) 4.2 穷举法-Welch Powell着色法 (4) 4.3 回溯法 (4) 4.4 贪心法 (4) 4.5 蚁群法 (4) 5 理论分析(复杂度比较)、实验性能比较 (7) 5.1 复杂度分析 (4) 5.2 实验性能比较 (4) 6 心得体会 (8) 7参考文献 (8) 8 附录 (8)

摘要 图论是近年来发展迅速而又应用广泛的一门新兴学科,已广泛应用于运筹学、网络理论、信息论、控制论、博奕论以及计算机科学等各个领域。一般说来,图的着色问题最早起源于著名的“四色问题”,染色问题不但有着重要的理论价值,而且,它和很多实际问题有着密切联系,例如通讯系统的频道分配问题,更有着广泛的应用背景. 本文首先讨论了人工智能的状态搜索方法在图着色中的具体应用,并用可视化方法展示了低维的着色空间和约束的具体意义。 关键词:图着色 c++代码 2、图的着色问题 2.1图的着色问题的来源 1852年,毕业于伦敦大学的弗南西斯·格思里(Francis Guthrie)在一家科研单位从事地图着色工作时,发现“任何一张地图似乎只用四种颜色就能使具有共同边界的国家着上不同的颜色。” 用数学语言来表示,即“将平面任意地细分为不相重迭的区域,每一个区域总可以用1,2,3,4这四个数字之一来标记,而不会使相邻的两个区域得到相同的数字。”这就是源于地图着色的四色猜想问题。这里所指的相邻区域,是指有一整段边界是公共边界。如果两个区域只相遇于一点或有限多点,就不叫相邻。因为用相同的颜色给它们着色不会引起混淆。 用四种颜色着色的世界地图: 采用四种颜色着色的美国地图: 2.2图的着色问题的描述 (一)图的着色问题是由地图的着色问题引申而来的:用m种颜色为地图着色,使得地图上的每一个区域着一种颜色,且相邻区域颜色不同。 (二)通常所说的着色问题是指下述两类问题:

图论期末考试整理复习资料

目录 第一章图的基本概念 (2) 二路和连通性 (4) 第二章树 (4) 第三章图的连通度 (6) 第四章欧拉图与哈密尔顿图 (8) 一,欧拉图 (8) 二.哈密尔顿图 (10) 第五章匹配与因子分解 (14) 一.匹配 (14) 二.偶图的覆盖于匹配 (15) 三.因子分解 (16) 第六章平面图 (20) 二.对偶图 (24) 三.平面图的判定 (25) 四.平面性算法 (28) 第七章图的着色 (34) 一.边着色 (34) 二.顶点着色 (35)

第九章 有向图 (40) 二 有向树 (41) 第一章 图的基本概念 1. 点集与边集均为有限集合的图称为有限图。 2. 只有一个顶点而无边的图称为平凡图。 3. 边集为空的图称为空图。 4. 既没有环也没有重边的图称为简单图。 5. 其他所有的图都称为复合图。 6. 具有二分类(X, Y )的偶图(或二部图):是指该图的点集可以分解为两个(非空)子 集 X 和 Y ,使得每条边的一个端点在 X 中,另一个端点在Y 中。 7. 完全偶图:是指具有二分类(X, Y )的简单偶图,其中 X 的每个顶点与 Y 的每个顶点 相连,若 |X|=m ,|Y|=n ,则这样的偶图记为 Km,n 8. 定理1 若n 阶图G 是自补的(即 ),则 n = 0, 1(mod 4) 9. 图G 的顶点的最小度。 10. 图G 的顶点的最大度。 11. k-正则图: 每个点的度均为 k 的简单图。 例如,完全图和完全偶图Kn,n 均是正则图。 12. 推论1 任意图中,奇点的个数为偶数。 ()G δ()G ?

13. 14.频序列:定理4 一个简单图G的n个点的度数不能互不相同。 15.定理5 一个n阶图G相和它的补图有相同的频序列。 16. 17. 18.对称差:G1△G2 = (G1∪G2) - (G1∩G2) = (G1-G2)∪(G2-G1) 19.定义:联图在不相交的G1和G2的并图G1+G2中,把G1的每个顶点和G2的每个 顶点连接起来所得到的图称为G1和G2的联图,记为G1∨G2 20.积图:积图设G1= (V1, E1),G2 = (V2, E2),对点集V = V1×V2中的任意两个点u = (u1,u2)和v = (v1,v2),当(u1 = v1和u2 adj v2) 或(u2 = v2 和u1 adj v1) 时就把u 和v 连接起来所得到的图G称为G1和G2积图。记为G = G1×G2 设G1= (V1, E1),G2 = (V2, E2),对点集V = V1×V2中的任意两个点u = (u1,u2)和v = (v1,v2),当(u1 adj v1) 或(u1= v1 和u2 adj v2) 时就把u 和v 连接起来所得到的图G称为G1和G2的合成图。记为G=G1[G2]。

运筹学期末试题

《运筹学》试题样卷(一) 一、判断题(共计10分,每小题1分,对的打√,错的打X ) 1. 无孤立点的图一定是连通图。 2. 对于线性规划的原问题和其对偶问题,若其中一个有最优解, 另一个也一定有最优解。 3. 如果一个线性规划问题有可行解,那么它必有最优解。 4.对偶问题的对偶问题一定是原问题。 5.用单纯形法求解标准形式(求最小值)的线性规划问题时,与0 >j σ对应的变量 都可以被选作换入变量。 6.若线性规划的原问题有无穷多个最优解时,其对偶问题也有无穷 多个最优解。 7. 度为0的点称为悬挂点。 8. 表上作业法实质上就是求解运输问题的单纯形法。 9. 一个图G 是树的充分必要条件是边数最少的无孤立点的图。 二、建立下面问题的线性规划模型(8分) 某农场有100公顷土地及15000元资金可用于发展生产。农场劳动力情况为秋冬季3500人日;春夏季4000人日。如劳动力本身用不了时可外出打工,春秋季收入为25元 / 人日,秋冬季收入为20元 / 人日。该农场种植三种作物:大豆、玉米、小麦,并饲养奶牛和鸡。种作物时不需要专门投资,而饲养每头奶牛需投资800元,每只鸡投资3元。养奶牛时每头需拨出1.5公顷土地种饲料,并占用人工秋冬季为100人日,春夏季为50人日,年净收入900元 / 每头奶牛。养鸡时不占用土地,需人工为每只鸡秋冬季0.6人日,春夏季为0.3人日,年净收入2元 / 每只鸡。农场现有鸡舍允许最多养1500只鸡,牛栏允许最多养200头。三种作物每年需要的人工及收入情况如下表所示: 试决定该农场的经营方案,使年净收入为最大。

三、已知下表为求解某目标函数为极大化线性规划问题的最终单纯形表,表中54,x x 为 (1)写出原线性规划问题;(4分) (2)写出原问题的对偶问题;(3分) (3)直接由上表写出对偶问题的最优解。(1分) 四、用单纯形法解下列线性规划问题(16分) 3212max x x x Z +-= s. t. 3 x 1 + x 2 + x 3 ≤ 60 x 1- x 2 +2 x 3 ≤ 10 x 1+ x 2- x 3 ≤ 20 x 1 , x 2 , x 3 ≥0 五、求解下面运输问题。 (18分) 某公司从三个产地A 1、A 2、A 3 将物品运往四个销地B 1、B 2、B 3、B 4,各产地的产量、各销地的销量和各产地运往各销地每件物品的运费如表所示: 问:应如何调运,可使得总运输费最小? 六、灵敏度分析(共8分) 线性规划max z = 10x 1 + 6x 2 + 4x 3 s.t. x 1 + x 2 + x 3 ≤ 100 10x 1 +4 x 2 + 5 x 3 ≤ 600 2x 1 +2 x 2 + 6 x 3 ≤ 300 x 1 , x 2 , x 3 ≥ 0

回溯法实验(最大团问题)

算法分析与设计实验报告第七次附加实验

} } 测试结果 当输入图如下时: 当输入图如下时: 1 2 3 4 5 1 2 3 4 5

当输入图如下时: 1 2 3 4 5

附录: 完整代码(回溯法) //最大团问题回溯法求解 #include using namespace std; class Clique { friend void MaxClique(int **,int *,int ); private: void Backtrack(int i); int **a; //图的邻接矩阵 int n; //图的顶点数 int *x; //当前解 int *bestx; //当前最优解 int cn; //当前顶点数 int bestn; //当前最大顶点数 }; void Clique::Backtrack(int i) { //计算最大团 if(i>n) //到达叶子节点 { for(int j=1;j<=n;j++) bestx[j]=x[j]; bestn=cn;

cout<<"最大团:("; for(int i=1;i=bestn) { //修改一下上界函数的条件,可以得到 x[i]=0; //相同点数时的解 Backtrack(i+1); } } void MaxClique(int **a,int *v,int n) { //初始化Y Clique Y; Y.x=new int[n+1]; Y.a=a; Y.n=n; https://www.doczj.com/doc/c310805882.html,=0; Y.bestn=0; Y.bestx=v; Y.Backtrack(1); delete [] Y.x; cout<<"最大团的顶点数:"<

用回溯法求解图的m着色问题

实验二用回溯法求解图的m着色问题 一、实验目的 1 2、使用回溯法编程求解图的m着色问题。 二、实验原理 回溯法是一个既带有系统性又带有跳跃性的的搜索算法。回溯法在包含问题的所有解的解空间树中,按照深度优先的策略,从根结点出发搜索解空间树。算法搜索至解空间树的任何一个结点时,总是先判断该结点是否肯定不包含问题的解,如果肯定不包含,则跳过对以该结点为根的子树搜索。否则,进入该子树,继续按深度优先的策略进行搜索。 回溯法在用来求问题的所有解时,要回溯到根,且根结点的所有子树都已被搜索遍才结束。而回溯法在用来求问题的任一解时,只要搜索到问题的一个解就可结束。 回溯法从开始结点(根结点)出发,以深度优先搜索的方式搜索整个解空间。这个开始结点就成为一个活结点,同时也成为当前的扩展结点。在当前的扩展结点处,搜索向纵深方向移至一个新结点。这个新结点就成为一个新的活结点,并成为当前扩展结点。如果在当前的扩展结点处不能再向纵深方向移动,则当前的扩展结点就成为死结点。此时,应往回移动(回溯)至最近的一个活结点处,并使这个活结点成为当前的扩展结点。回溯法即以这种工作方式递归地在解空间中搜索,直至找到所要求的解或解空间中已无活结点时为止。 三、问题描述 给定一个无向连通图G和m种不同的颜色。用这些颜色为图G的各顶点着色,每个顶点着一种颜色。若一个图最少需要m种颜色才能使图中任何一条边连接的2个顶点着有不同的颜色,则称这个数m为该图的色数。求一个图的色数m的问题称为图的m可着色优化问题。设计一个算法,找出用m种颜色对一个图进行着色的不同方案。 四、算法设计与分析 用邻接矩阵a来表示一个无向连通图G=(V,E)。用整数1,2,…,m来表示m种不同的颜色。x[i]表示顶点i所着的颜色来,则问题的解向量可以表示为n元组x[1:n]。问题的解空间可表示一棵高度为n+1的完全m叉树。解空间树的第i层中每一结点都有m个儿子,每个儿子相应于x[i]的m个可能的着色之一,第n+1层结点均为叶结点。 在回溯算法Backtrack中,当i>n时,表示算法已搜索至一个叶结点,得到一个新的m着色方案,因此当前已找到的可m着色方案数sum增1。当i≤n时,当前扩展结点Z是解空间树中的一个内部结点。该结点有x[i]=1,2,…,m。对当前扩展结点Z的每一个儿子结点,由函数Ok检查其可行性,并以深度优先的方式递归地对可行子树进行搜索,或剪去不可行子树。 五、实验结果 源程序: #include using namespace std;

图论与组合数学期末复习题含答案

组合数学部分 第1章 排列与组合 例1: 1)、求小于10000的含1的正整数的个数; 2、)求小于10000的含0的正整数的个数; 解:1)、小于10000的不含1的正整数可看做4位数,但0000除外.故有9×9×9×9-1=6560个.含1的有:9999-6560=3439个 2)、“含0”和“含1”不可直接套用。0019含1但不含0。在组合的习题中有许多类似的隐含的规定,要特别留神。不含0的1位数有19个,2位数有29个,3位数有39个,4位数有49个 不含0小于10000的正整数有() ()73801919999954321=--=+++个含0小于10000的正整数9999-7380=2619个。 例2: 从[1,300]中取3个不同的数,使这3个数的和能被3整除,有多少种方案? 解:将[1,300]分成3类: A={i|i ≡1(mod 3)}={1,4,7,…,298}, B={i|i ≡2(mod 3)}={2,5,8,…,299}, C={i|i ≡0(mod 3)}={3,6,9,…,300}. 要满足条件,有四种解法: 1)、3个数同属于A; 2)、3个数同属于B ; 3)、3个数同属于C; 4)、A,B,C 各取一数;故共有3C(100,3)+1003=485100+1000000=1485100。 例3:(Cayley 定理:过n 个有标志顶点的数的数目等于2-n n ) 1)、写出右图所对应的序列; 2)、写出序列22314所对应的序列; 解: 1)、按照叶子节点从小到大的顺序依次去掉节点(包含与此叶子 节点相连接的线),而与这个去掉的叶子节点相邻的另外一个点值则记入序列。如上图所示,先去掉最小的叶子节点②,与其相邻的点为⑤,然后去掉叶子节点③,与其相邻的点为①,直到只剩下两个节点相邻为止,则最终序列为51155.。 2)、首先依据给定序列写出(序列长度+2)个递增序列,即1234567,再将给出序列按从小到大顺序依次排列并插入递增序列得到:7。我们再将给出序列22314写在第一行,插入后的递增序列写在第二行。如下图第一行所示: ??→????? ??--②⑤67112223344522314??→???? ? ??--②⑥11223344672314 ??→????? ??--③②11233447314??→???? ? ??--①③11344714

运筹学期末试题

一、判断题(共计10分,每小题1分,对的打√,错的打X) 1.无孤立点的图一定是连通图。 2.对于线性规划的原问题和其对偶问题,若其中一个有最优解, 另一个也一定有最优解。 3.如果一个线性规划问题有可行解,那么它必有最优解。 4.对偶问题的对偶问题一定是原问题。 5.用单纯形法求解标准形式(求最小值)的线性规划问题时,与 > j σ 对应的变量都可以被选作换入变量。 6.若线性规划的原问题有无穷多个最优解时,其对偶问题也有无穷 多个最优解。 7. 度为0的点称为悬挂点。 8. 表上作业法实质上就是求解运输问题的单纯形法。 9. 一个图G 是树的充分必要条件是边数最少的无孤立点的图。 二、建立下面问题的线性规划模型(8分) 某农场有100公顷土地及15000元资金可用于发展生产。农场劳动力情况为秋冬季3500人日;春夏季4000人日。如劳动力本身用不了时可外出打工,春秋季收入为25元/ 人日,秋冬季收入为20元/ 人日。该农场种植三种作物:大豆、玉米、小麦,并饲养奶牛和鸡。种作物时不需要专门投资,而饲养每头奶牛需投资800元,每只鸡投资3元。 养奶牛时每头需拨出1.5公顷土地种饲料,并占用人工秋冬季为100人日,春夏季为50人日,年净收入900元 / 每头奶牛。养鸡时不占用土地,需人工为每只鸡秋冬季0.6人日,春夏季为0.3人日,年净收入2元 / 每只鸡。农场现有鸡舍允许最多养1500只 三、已知下表为求解某目标函数为极大化线性规划问题的最终单纯形表,表中5 4 ,x x 为松弛变量,问题的约束为?形式(共8分)

(1)写出原线性规划问题;(4分) (2)写出原问题的对偶问题;(3分) (3)直接由上表写出对偶问题的最优解。(1分) 四、用单纯形法解下列线性规划问题(16分) 3212max x x x Z +-= s. t. 3 x 1 + x 2 + x 3 ≤ 60 x 1- x 2 +2 x 3 ≤ 10 x 1+ x 2- x 3 ≤ 20 x 1, x 2 , x 3 ≥0 五、求解下面运输问题。 (18分) 某公司从三个产地A 1、A 2、A 3 将物品运往四个销地B 1、B 2、B 3、B 4,各产地的产量、各销地的销量和各产地运往各销地每件物品的运费如表所示: 六、灵敏度分析(共8分) 线性规划max z = 10x 1 + 6x 2 + 4x 3 s.t. x 1 + x 2 + x 3 ≤ 100 10x 1 +4 x 2 + 5 x 3 ≤ 600 2x 1 +2 x 2 + 6 x 3 ≤ 300 x 1 , x 2 , x 3 ≥ 0 的最优单纯形表如下:

第8节图论应用实例_图着色问题

第8节图论应用实例_图着色问题 预备知识_回溯法 回溯法:在实际生活中,有些问题是不能用数学公式去解决的,它需要通过一个过程,此过程要经过若干个步骤才能完成,每一个步骤又分为若干种可能;同时,为了完成任务,还必须遵守一些规则,但这些规则无法用数学公式表示,对于这样一类问题,一般采用搜索的方法来解决,回溯法就是搜索算法(广度优先、深度优先等)中的一种控制策略,它能够解决许多搜索中问题。 回溯法基本思想:试探法,撞了南墙就回头。(一般采用深度优先搜索策略) 搜索策略:深度优先(不撞南墙不回头)。 在搜索过程中,如果求解失败,则返回搜索步骤中的上一点,去寻找新的路径,以求得答案。要返回搜索,前进中的某些状态必须保存,才能使得退回到某种状态后能继续向前。 白话搜索:如果用数组存放搜索信息,i表示数组下标(当前状态), ++i表示往前走(下一个状态),--i表示回溯(往回退,返回上一次状态)。 第8节图论应用实例_图着色(graph coloring)问题数学定义:给定一个无向图G=(V, E),其中V为顶点集合,E为边集合,图着色问题即为将V分为k个颜色组(k为颜色数),每个组形成一个独立集,即其中没有相邻的顶点。其优化版本是希望获得最小的k值。 典型应用:地图的着色、调度问题等。 k-着色判定问题:给定无向连通图G和k种不同的颜色。用这些颜色为图G的各顶点着色,每个顶点着一种颜色,是否有一种着色法使G中任意相邻的2个顶点着不同颜色,

例四色问题。设有如图1的地图,每个区域代表一个省,区域中的数字表示省的编号,现在要求给每个省涂上红、蓝、黄、白四种颜色之一,同时使相邻的省份以不同的颜色区分。 课外拓展:搜索“四色问题”,了解四色问题相关知识。 5 6 74 2 31 图1 问题分析: (1)属于图的搜索问题。将问题简化:将每个省抽象为一个点,省之间的联系看为一条边,可以得到图2。 1 67 5 1 4 32 图2 (2)用邻接矩阵表示各省之间的相邻关系,二维数组实现: 1 表示省i与省j相邻, ,,ri,j,,0 表示省i与省j不相邻, 由图2可以得到如下矩阵:(对称矩阵) 1 2 3 4 5 6 7

用回溯法分析着色问题

算法设计与分析课程设计 题目:用回溯法分析着色问题 学院:理学院 专业:信息与计算科学 班级:09信科二班 姓名:蔡秀玉 学号: 200910010207

用回溯法分析着色问题 目录 1 回溯法 (3) 1.1回溯法的概述 (3) 1.2 回溯法的基本思想 (3) 1.3 回溯法的一般步骤 (3) 2 图的m着色问题 (3) 2.1图的着色问题的来源 (3) 2.2通常所说的着色问题 (3) 2.3图的着色问题描述 (3) 2.4回溯法求解图着色问题 (5) 2.5图的m可着色问题的回溯算法描述 (6) 2.5.1回溯算法 (6) 2.5.2 m着色回溯法递归 (8) 2.5.3 m着色回溯法迭代 (9) 2.5.4例题利用回溯法给图着色 (11) 2.6复杂度分析着色回溯法迭代 (12)

§1 回溯法 1.1回溯法的概述 回溯法是一种系统地搜索问题解的搜索算法。它在包含问题的所有解的解空间树中,按照深度优先的策略,从根结点出发搜索解空间树。算法搜索至解空间树的任一结点时,总是先判断该结点是否肯定不包含问题的解。如果肯定不包含,则跳过对以该结点为根的子树的系统搜索,逐层向其祖先结点回溯。否则,进入该子树,继续按深度优先的策略进行搜索。回溯法在用来求问题的所有解时,要回溯到根,且根结点的所有子树都已被搜索遍才结束。而回溯法在用来求问题的任一解时,只要搜索到问题的一个解就可以结束。这种以深度优先的方式系统地搜索问题的解的算法称为回溯法,它适用于解一些组合数较大的问题。 1.2回溯法的基本思想 回溯法的基本思想是,在确定了解空间的组织结构后,回溯法就从开始结点(根结点)出发,以深度优先的方式搜索整个解空间。这个开始结点就成为一个活结点,同时也成为当前的扩展结点。在当前的扩展结点处,搜索向纵深方向移至一个新结点。这个新结点就成为一个新的活结点,并成为当前扩展结点。如果在当前的扩展结点处不能再向纵深方向移动,则当前扩展结点就成为死结点。换句话说,这个结点不再是一个活结点。此时,应往回移动(回溯)至最近的一个活结点处,并使这个活结点成为当前的扩展结点。回溯法即以这种工作方式递归地在解空间中搜索,直至找到所要求的解或解空间中已没有活结点时为止。 1.3回溯法的一般步骤 用回溯法解题的一般步骤: (1)针对所给问题,定义问题的解空间; (2)确定易于搜索的解空间结构; (3)以深度优先方式搜索解空间,并在搜索过程中用剪枝函数避免无效搜索。 §2 图的m着色问题 2.1图的着色问题的来源 图的着色问题是由地图的着色问题引申而来的:用m种颜色为地图着色,使得

集合论图论 期中考试试题及答案

08信安专业离散数学期中考试试题 1.设A, B, C, D为4个集合. 已知A?B且C?D.证明: A∪C?B∪D; A∩C?B∩D . (15分) 2.化简以下公式: A∪((B―A)―B) (10分) 3.设R是非空集合A上的二元关系.证明:R∪R-1是包含R的 最小的对称的二元关系. (15分) 4.设A={1,2,…,20},R={|x,y∈A∧x≡y(mod 5)}.证 明:R为A上的等价关系. 并求商集A/R. (15分) 5.给出下列偏序集的哈斯图,并指出A的最大元,最小元,极 大元和极小元. A={a,b,c,d,e},?A= I A∪{,, ,,,,} (15分) 6.设g:A→B, f:B→C.已知g f是单射且g是满射,证明:f 是单射. (10分) 7.设S={0,1}A, 其中A={a1,a2,…,a n}.证明:P(A)与S等势. (10分) 8.证明:任何一组人中都存在两个人,他们在组内认识的人 数恰好相等(假设,若a认识b,则a与b互相认识). (10分)

期中考试试题解答 1.证明: ?x, x∈A∪C x∈A∩C ?x∈A∨x∈C ?x∈A∧x∈C ?x∈B∨x∈D (A?B,C?D) ?x∈B∧x∈D (A?B,C?D) ?x∈B∪D ?x∈B∩D ∴A∪C?B∪D ∴A∩C?B∩D 2.解: A∪((B―A)―B) =A∪((B∩∽A)∩∽B) =A∪(∽A∩(B∩∽B)) =A∪(∽A∩φ) =A∪ф =A . 3.证明:首先证R∪R-1是对称关系. ?, ∈R∪R-1 ?∈R∨∈R-1 ?∈R-1∨∈R ?∈R-1∪R ?∈R∪R-1

专业的设计师必定对颜色的使用十分敏感

专业的设计师必定对颜色的使用十分敏感,不管是设计网页,平面图,标志等。我们都会使用各种不同的颜色。比如经常会用白色,黑色,灰色作为主色调。搭配其他的鲜艳颜色进行相关设计,本文讨论的内容主要也是关于如何在设计中应用颜色搭配,使最后获得的效果不乱,不呆板。并且具有美感。 利用色轮,我们可以将一张度假酒店的宣传卡片轻易变成一系列不同颜色搭配的设计。

你是否曾经想过,要如何才能让你付出越少,收获更多?在本文中,我们将讨论一个系列卡片的设计,每一张卡片色调完全不一样,但却让人感觉是一个系列的设计,这种设计我们可以轻易完成,设计起来所花的时间和精力都不多。我们利用了一张矢量图片来产生不同视觉效果的设计,看一下我们是如何实现的。从矢量格式图片开始: 矢量图片是利用绘制的程序产生而成,它与照片不一样,矢量格式的线条及形状是对象,而不是象素。 有两种图片格式:

栅格格式: 一般的照片是由栅格中的微小象素构成,其优点是它色泽丰富逼真,而且渐变丰富。而缺点则是图片修改起来非常麻烦。Raster一词来源于德语,意思就是栅格。 矢量格式: 矢量格式是利用定位点将直线及曲线连接起来,象Adobe Illustrator软件,就是处理矢量格式的软件。矢量格式的优点是对图片的修整非常轻松,而且你可以任意放大缩小都不会降低图片质量,而且存储的文件也非常小。“矢量”是一个数学术语,意思是空间中的一个点与其它对象的关系。 矢量格式非常容易调整: 矢量格式的特点使它非常容易进行移动元素、改变形状、填充颜色等操作。

仔细观察:在你开始工作前,让我们先花些时间来看一下我们所要面对的这个图案的构成及各个元素之间的关系。

回溯法

第8章回溯法 (1) 8.1概述 (1) 8.1.1 问题的解空间树 (1) 8.1.2 回溯法的设计思想 (2) 8.1.3 回溯法的时间性能 (3) 8.1.4 一个简单的例子——素数环问题 (4) 8.2图问题中的回溯法 (5) 8.2.1 图着色问题 (5) 8.2.2 哈密顿回路问题 (8) 8.3组合问题中的回溯法 (10) 8.3.1 八皇后问题 (10) 8.3.2 批处理作业调度问题 (13) 习题8 (16)

第8章回溯法 教学重点回溯法的设计思想;各种经典问题的回溯思想教学难点批处理作业调度问题的回溯算法 教学内容 和 教学目标 知识点 教学要求 了解理解掌握熟练掌握问题的解空间树√ 回溯法的设计思想√ 回溯法的时间性能√ 图着色问题√ 哈密顿回路问题√ 八皇后问题√ 批处理作业调度问题√ 8.1 概述 回溯法(back track method)在包含问题的所有可能解的解空间树中,从根结点出发,按照深度优先的策略进行搜索,对于解空间树的某个结点,如果该结点满足问题的约束条件,则进入该子树继续进行搜索,否则将以该结点为根结点的子树进行剪枝。回溯法常常可以避免搜索所有的可能解,所以,适用于求解组合数较大的问题。 8.1.1 问题的解空间树 复杂问题常常有很多的可能解,这些可能解构成了问题的解空间(solution space),并且可能解的表示方式隐含了解空间及其大小。用回溯法求解一个具有n个输入的问题,一般情况下,将问题的可能解表示为满足某个约束条件的等长向量X=(x1, x2, …, x n),其中分量x i(1≤i≤n)的取值范围是某个有限集合S i={a i,1, a i,2, …, a i,r i },所有可能的解向量构成了问题的解空间。例如,对于有n个物品的0/1背包问题,其可能解由一个等长向量{x1, x2, …, x n}组成,其中x i=1(1≤i≤n)表示物品i装入背包,x i=0表示物品i没有装入背包,则解空间由长度为n的0/1向量组成。当n=3时,其解空间是:

电子科技大学2017年图论期末试卷

1 2017年图论课程练习题 一.填空题 1.图1中顶点a 到顶点b 的距离d (a ,b )= 。 a b 9 图1 1 2.已知图G 的邻接矩阵0 11011 01001 1010001011001 0A = ,则G 中长度为2的途径总条数为 。 3.图2中最小生成树T 的权值W (T )= 。 4.图3的最优欧拉环游的权值为 。 12 图 2

2 图3 5.树叶带权分别为1,2,4,5,6,8的最优二元树权值为 。 二.单项选择 1.关于图的度序列,下列说法正确的是( ) (A) 对任意一个非负整数序列来说,它都是某图的度序列; (B) 若非负整数序列12(,,,)n d d d π= 满足1n i i d =∑为偶数,则它一定是图序 列; (C) 若图G 度弱于图H ,则图G 的边数小于等于图H 的边数; (D) 如果图G 的顶点总度数大于或等于图H 的顶点总度数,则图G 度优 于图H 。 2.关于图的割点与割边,下列说法正确的是( ) (A) 有割边的图一定有割点; (B) 有割点的图一定有割边; (C) 有割边的简单图一定有割点; (D) 割边不在图的任一圈中。 3.设()k G ,()G λ,()G δ分别表示图G 的点连通度,边连通度和最小度。下面说法错误的是( )

3 (A) 存在图G ,使得()k G =()G δ=()G λ; (B) 存在图G ,使得()()()k G G G λδ<<; (C) 设G 是n 阶简单图,若()2n G δ ≥ ,则G 连通,且()()G G λδ=; (D) 图G 是k 连通的,则G 的连通度为k 。 4.关于哈密尔顿图,下列命题错误的是( ) (A) 彼得森图是非哈密尔顿图; (B) 若图G 的闭包是哈密尔顿图,则其闭包一定是完全图; (C) 若图G 的阶数至少为3且闭包是完全图,则图G 是哈密尔顿图; (D) 设G 是三阶以上简单图,若G 中任意两个不邻接点u 与v ,满足 ()()d u d v n +≥,则G 是哈密尔顿图。 5.下列说法错误的是( ) (A) 有完美匹配的三正则图一定没有割边; (B) 没有割边的三正则图一定存在完美匹配; (C) 任意一个具有哈密尔顿圈的三正则图可以1因子分解; (D) 完全图21n K +是n 个哈密尔顿圈的和。 三、 设无向图G 有10条边,3度与4度顶点各2个,其余顶点度数均小于3,问G 中至少有几个顶点?在最少顶点数的情况下,写出G 的度序列,该度序列是一个图序列吗?。

图的m着色问题回溯法

图的m着色问题 1.问题描述 给定无向量图G顶点和m种不同的颜色。用这些颜色为图G的各顶点着色,每个顶点着一种颜色。是否有一种着色法使G图中每条边的两个顶点着不同的颜色。这个问题是图的m 可着色判定问题。若一个图最少需要m种颜色才能使图中每条边连接的两个顶点着不同的颜色,则称这个数m为该图的色数。求一个图的色数m的问题称为图的m可着色问题。2.算法设计 一般连通图的可着色法问题并不仅限于平面图。给定图G=(V,E)和m种颜色,果这个图不是m可着色,给出否定回答,如果这个图是m的可着色的,找出所有不同的着色法。 下面根据回朔法的递归描述框架backtrack设计图的m着色算法。用图的邻接矩阵a表示无向量连通图G=(V,E)。若(i,j)属于图G=(V,E)的边集E,则a[i][j]=1,否则a[i][j]=0。整数1,2,…,m用来表示m种不同颜色。顶点i所有颜色用x[i]表示,数组x[1:n]是问题的解向量。问题的解空间可表示为一棵高度为n+1的完全m叉树。解空间树的第I (1<=i<=n)层中每一结点都有m个儿子,每个儿子相应于x[i]的m个可能的着色之一。第n+1层结点均为叶结点。 在算法backtrack中,当i>n时,算法搜索至叶结点,得到新的m着色方案,当前找到的m着色方案数sum增1。 当I

2015电子科技大学_图论期末考试复习题

2015电子科技大学 图论考试复习题 关于图论中的图,以下叙述不正确的是 A .图中点表示研究对象,边或有向边表示研究对象之间的特定关系。 B .图论中的图,画边时长短曲直无所谓。 C .图中的边表示研究对象,点表示研究对象之间的特定关系。 D .图论中的图,可以改变点与点的相互位置,只要不改变点与点的连接关系。 一个图中最长的边一定不包含在最优生成树内。 下面哪个图形不与完全二分图K 3,3同构? A . B . C . D . 有10条边的5顶单图必与K 5同构。 完全二分图K m ,n 的边数是 A .m B .n C .m +n D .mn 无向完全图K n 的边数为 A .n B .n 2 C .n (n -1) D .n (n -1)/2 若一个无向图有5个顶点,如果它的补图是连通图,那么这个无向图最多有 条边。 对于两个图,如果顶点数目相等,边数相等,次数相等的顶点数目也相等,则这两个图同构。 有15个顶的单图的边数最多是 A .105 B .210 C .21 D .45 图G 如右,则dacbeb A .是G 中的一条道路 B .是G 中的一条道路但不是行迹 C .是G 中的一条行迹但不是轨道 D .不是G 的一条道路 图G 如右,则befcdef A .是G 的一个圈 B .是G 的一条道路但不是行迹 C .是G 的一条行迹但不是轨道 D .是G 的一条轨道但不是圈

v1 36 7 图G如右图所示,则ω (G)= A.1 B.2 C.7 D.8 下列图形中与其补图同构的是 A.B.C.D. 求下图中顶u0到其余各顶点的最短轨长度。 u0v1=8,u0v2=1,u0v3=4,u0v4=2,u0v5=7,v1v2=7,v1v3=2,v1v6=4,v2v4=2,v2v7=3,v3v5=3,v3v6=6,v4v5=5,v4v7=1, v5v 6 =4,v 5 v7=3,v6v7=6, 请画出6阶3正则图。 请画出4个顶,3条边的所有非同构的无向简单图。 设图G={V(G),E(G)}其中V ={ a1, a2, a3, a4, a5},E(G)={(a1, a2),(a2, a4),(a3, a1),(a4, a5),(a5, a2)},试给出G的图形表示并画出其补图的图形。 一个图的生成子图必是唯一的。 不同构的有2条边,4个顶的无向简单图的个数为 A.1 B.2 C.3 D.4 画出5个具有5个结点5条边的非同构的无向连通简单图。 u0到v1的最短轨长度为6,u0到v2的最短轨长度为1,u0 到v3的最短轨长度为4,u0到v4的最短轨长度为2,u0到v5的最短轨长度为6 ,u0到v6的最短轨长度为9,u0到v7的最短轨长度为3。

m着色问题

图的m着色问题 问题描述: 给定无向连通图G和m种不同的颜色。用这些颜色为图G的各顶点着色,每个顶点着一种颜色。如果有一种着色法使G中每条边的2个顶点着不同颜色,则称这个图是m 可着色的。图的m着色问题是对于给定图G和m种颜色,找出所有不同的着色法。 编程任务: 对于给定的无向连通图G和m种不同的颜色,编程计算图的所有不同的着色法。 数据输入: 由文件input.txt给出输入数据。第1行有3个正整数n,k和m,表示给定的图G 有n 个顶点和k条边,m种颜色。顶点编号为1,2,…,n。接下来的k行中,每行有2个正整数u,v,表示图G的一条边(u,v)。 结果输出: 程序运行结束时,将计算出的不同的着色方案数输出到文件output.txt中。 输入文件示例输出文件示例 input.txt output.txt 58448 12 13 14 23 24 25 34 45

/*图的m着色问题求解程序(回溯算法)*/ #include #include #include class color {private: int n,//图的顶点个数 m,//可用颜色数 **a,//图的邻接矩阵,用来表示一个无向连通图G *x;//当前解 long sum;//当前已找到的可m着色方案数 public: color(); int ok(int k); void backtrack(int t); void op(); ~color(); }; /*构造函数的定义*/ color::color() {int k;//边数 int i,j; int v1,v2;//构成边的两顶点 ifstream fin("input.txt",ios::nocreate); if(!fin) {cerr<<"文件不存在"; exit(0);} fin>>n>>k>>m;//读入顶点数、颜色数和边数if(!(a=new int*[n+1])) {cerr<<"insufficient memory!"<>v1>>v2; a[v1][v2]=a[v2][v1]=1;//对有连接的两个顶点v1,v2表示的边a[v1][v2]或a[v2][v1]赋值 } if(!(x=new int[n+1])) {cerr<<"insufficient memory!"<

图节点着色问题中的禁忌搜索算法

图节点着色问题中的禁忌搜索算法 09-03-25 作者:编辑:校方人员 图节点着色问题是组合最优化中典型的非确定多项式(NP)完全问题,也是图论中研究得最久的一类问题。目前解决该问题的算法很多,如回溯算法、分支界定法、Welsh-Powell算法、神经网络、遗传算法以及模拟退火算法等。综合比较各种算法,前两种算法是精确算法,但时间复杂性太大;后三种属于近似算法,虽然时间复杂性可接受,能够得到较好的近似解,但算法本身过于复杂,算法效率难以保证。 本文采用禁忌搜索算法,它同时拥有高效性和鲁棒性。禁忌搜索是一种全局逐步寻优的人工智能算法,它常能有效的应用于一些典型NP问题,如TSP。但禁忌搜索存在一些参数较难设置,这也是应用于通信系统时研究的热点。本文提出针对着色问题的禁忌搜索的具体设计方案,较好的设置了参数,并优化了数据结构,通过实验比较得到了较好的效果。最后提出通过领域简单的变化,禁忌搜索能较好的用于一般算法难以实现的List着色问题。 1图节点着色问题 图的着色问题可分为边着色、顶点着色、List着色和全着色,其中最主要的

给定一个无向图G=(V,E),其中V是节点集V={1,2,…n},E是边集,其中(i,j)表示有连接(i,j)的一条边。若,且V i内部的任何两个节点没有E中的边直接相连,则称(V1,V2,…,V n)为V的一个划分。图的节点着色问题可以描述为:求一个最小的k,使得(V1,V2,…,V n)为V的一个划分。 通常的解决着色问题的算法采用蛮力法、贪婪法、深度优先或广度优先等思想可以得到最优解,但时间复杂性太大,如回溯法,其计算时间复杂性为指数阶的;有的在多项式时间内能得到可行解,但不是最优解,如Welsh-Powell算法和贪婪算法。Welsh-Powell算法只能保证最多使用(为图中顶点的最大度)种颜色给一个图正常着色,而由Brooks定理,对于既不是完全图又不是奇圈的简单连通图,所需的颜色数。故通常的算法在解决图节点着色问题这样的NP完全问题时,存在很大的瓶颈,难以得到满意的结果。而对于像遗传算法和神经网络这样复杂的启发式算法,通常算法本身复杂性较大,并且算法效率难以分析,最终得到的是近似解,其是否最优解也不能保证。

人对色彩是相当敏感的

人对色彩是相当敏感的,色彩包含了美学,光学,心理学和民俗学。空间色彩的重量感主要是由色彩的明度决定,因此空间的各个面从上到下的色序一般是从浅到深是顺序来设计。色彩可以对人的心情产生影响和冲击。从视觉科学上说,色彩比黑的色彩、质感、量感等表现得接近真实,因而也就增强了观看者对展品和商品的信任感。通过不同展品各自独特的色彩语言,顾客更容易辨认展品商品的亲近感。 我们作为家具展览馆的设计人员,我认为应该用奢华跨越灵动新鲜这几个关键词来形容。奢华:以床和床上用品为例子,颜色多用深沉的色调,打造奢华韵味。温和的视觉冲击,打造近乎遗忘年代的修饰,多样的陈设,古老而又鲜活,奢华自然而然彰显出来。 跨越:跨越元素的线条界限仅仅对于线条、轮廓和颜色这样简单细节的描述。所以可以构成风格概念的符号,都会在颠覆传统中获得重生,展览馆大胆的用色跨越了元素,使其独具一格。 灵动:展品中每一个装饰点的事物都无章可循,却又能感到灵动的现代触觉。饰品除了可供观赏外,最好还有其他的寓意,如写字板将商品廊架装饰的更加完整,又具有说明作用 新鲜:家具展展览馆以较暗的色调为主,与产品形成鲜明的对比,给人一种新鲜感。尝试应用暗色调营造出视觉感,在灯光的映衬下透出一种说不出的韵味,更彰显产品特质。 根据展览性质,展览标志来确定展览专用色。根据主题和展览时间来确定展场的色彩基调。是高调还是低调,是暖调还是冷调,根据展场的区位划分确定展区之间的色彩关系 照明设计 在展示设计中,良好的照明能够带来完全不同的感受,合理的照明设计不仅仅是展示照明的条件,而是表达空间形态、营造气氛的基本元素,同时还有利于确保展示活动的安全性。 照明的基本原理 照明有两个基本点,一是识别物体,二是增进环境气氛。良好的照明不但不要符合是觉得生理要求,也要达成情境的心理需要。直接灯光泛指那些直射式的光线,如吊灯及射灯等,光线直接散落在指定的位置上,投射出一圈圈的光影,作照明或突出主题之用,直接、简单。间接灯光在气氛营造上则能发挥独特的功能性,营造出不同的意境。它的光线不会直射至地面,而是被置于壁凹、天花背后,或是壁面铺饰的背后,光线被投射至墙上再反射至地面,柔和的灯光仿佛轻轻地洗刷整个空间 这两种灯光的适当配合,才能缔造出完美的空间意境。一些明亮活泼,一些柔和蕴藉,才能透过当中的对比表现出灯光的独有个性,散发出不凡的艺韵。 正确的投光方向与良好的造型立体感密切相关,我们在室内从事不同活动,不仅需要不同的照度,也要考虑照明方式的差异。譬如在阅读及书写时,光线宜来自后方(最好是左后方),以提高阅读效率;而在观察立体的东西时,光线宜来自左侧或右侧,以突出材料的立体感。可见,正确的投光方向有助于我们进行相应的视觉活动。 整体照明:整体照明由对称排列在展台上的若干灯具组成,展品可获得较好的亮度分布和照明均匀度,所采用的光源功率较大,而且有效高的照明效率 局部照明 局部照明是为满足展品某些部位的特殊需要,在一定单位内设置照明灯具的照明方式。局部照明方式在局部范围内以较小的光源功率获得较高的照明度,同时也易于改变和调整光的方向 成角照明 是采用特别设计的反射罩,使光线射向主要方向的一种办法。

相关主题
文本预览
相关文档 最新文档