1、数学实验大作业-图的着色1136005 班摘要:图的着色问题是典型的优化问题,用 Matlab 求图的着色的色多项式问题,运用 B-L 约化算法求解。本文将从背景知识、数学模型和课后习题解答三方面来叙述。关键词:Matlab 图的着色 数学模型 色多项式一、背景知识:图论Graph Theory是数学的一个分支。图论Graph Theory是数学的一个分支。它以图为研究对象。图论中的图是由若干给定的点及连接两点的线所构成的图形,这种图形通常用来描述某些事物之间的某种特定关系,用点代表事物,用连接两点的线表示相应两个事物间具有这种关系。1. 欧拉柯尼斯堡七桥问题图论起源于著名的柯尼斯堡七桥问题。
2、在柯尼斯堡的普莱格尔河上有七座桥将河中的岛及岛与河岸联结起来。问题是要从这四块陆地中任何一块开始,通过每一座桥正好一次,再回到起点。然而无数次的尝试都没有成功。欧拉在1736 年解决了这个问题,他用抽象分析法将这个问题化为第一个图论问题:即把每一块陆地用一个点来代替,将每一座桥用联接相应的两个点的一条线来代替,从而相当于得到一个图。欧拉证明了这个问题没有解,并且推广了这个问题,给出了对於一个给定的图可以某种方式走遍的判定法则。这项工作使欧拉成为图论及拓扑学的创始人。2. 四色猜想这个猜想说,在一个平面或球面上的任何地图能够只用四种颜色来着色,使得没有两个相邻的国家有相同的 颜色。每个国家必须由
3、一个单连通域构成,而两个国家相邻是指它们有一段公共的 边界,而不仅仅只有一个公共点。四色猜想有一段有趣的历史。每个地图可以导出一个图,其中国家都是点,当相应的两个国家相邻时这两个点用一条线来连接。所以四色猜想是图论中的一个问题。它对图的着色理论、平面图理论、代数拓扑图论等分支的发展起到推动作用。 1976 年,美国数学家阿佩尔与哈肯在美国伊利诺斯大学的两台不同的电子计算机上,用了 1200 个小时,作了 100 亿判断,终于完成了四色定理的证明。3. 图论应用在 19 世纪和 20 世纪的前半期,图论中主要研究一些游戏问题,诸如迷宫问题、博弈问题和棋盘上马的行走路线等等。1847 年,克希荷夫
4、应用图论的方法来分析电网络,奠定了现代网络理论的基础,这就是电工原理中的克希荷夫电流定律和克希荷夫电压定律,这是第一次将图论应用于工程技术领域。1936 年哥尼格发表了第一本图论专著,从此图论成为一门独立的学科。当应用图论来解决实际问题时,不管是电网络的分析、电路设计、数据的结构或社会科学方面的问题,几乎需要引出复杂的图形,这些图形,如果没有计算机的帮助实际上是不大可能分析的。近几十年来,图论盛行于世,高速数字计算机的出现是其原因之一。二、数学模型-B-L 约化算法如图(b)所示,给出一种计算 P(F,x)的方法,参阅图(b) 、 (d) 、 (f).注意图(b)中标有 e 的边,对图的任意一
5、种正常着色,V1 与 V2 相邻,必须涂为不同种颜色,若无边 e,则 V1 与 V2 颜色可以相同,亦可以不同。所以对 V1与 V2 及 e 而言,有如下等式:(d)的正常着色数=(b)的正常着色数+(b)的非正常着色数。而(b)关于 V1 与 V2 的非正常着色数=(f)的正常着色数。所以有如下等式:(b)的正常着色数=(d)的正常着色数-(f)的正常着色数。这里(f)是合并(d)中 V1 与 V2 而得到的,即假设(d)中 V1 与 V2 涂同一种颜色时,考察其涂色方式,其方法数为(b)中关于 V1 与 V2 的非正常着色数,而这一非正常着色数显然为(f)的正常着色数。注意合并(d)的顶点
6、 V1 与 V2 形成(f)的过程,我们将新顶点(1=2)与(f)中顶点 3,4 之间用边相连,当且仅当(d)中 3,4 与 1 或 2 之间有边相连。定义:用 x 种颜色对图 F 所有可能的正常着色数记为 P(F,x),称 P(F,x)为 F的色多项式。则将 B-L 约化算法的文字叙述以公式形式给出,有如下形式:P((b),x)= P(d),x)- P(f),x)。用同样的方法可以分别对(d),(f)进行去边分解,得到(d1),(d2)与(f1),(f2),则着色数 P(d),x)与 P(f),x)有完全类似的上式的形式,则这一过程可以继续下去,直到所有的图成为空图。三、课后习题解答问题 1
7、 顶点数 n=2,3,4,5,6 的完全图其色数是多少?(不要用计算机,仔细思考并清楚地说明你的理由)答:对应顶点数 n=2,3,4,5,6 的完全图的色数分别为 2,3,4,5,6。原因是在完全图中,图中每个顶点都与其余所有顶点相连,任何相连的点颜色不同,故最少染色需要的颜色即为顶点数。问题 2 F 为 n 个顶点的完全图,给出其色多项式 P(F,x)。答:P(F,x)=x!(xn)。问题 3 用 44 种颜色对图 6.9 着色,可以有多少种方法?用程序完成。另外,该图的色数和色多项式是什么?答:P(F,x)=15*x2-5*x-20*x3+15*x4-6*x5+x6。X=44,P(F,44
8、)= 6.3214*109.该图的色数为 2.问题 4 用所编程序给出图 6.10 中各图的多项式,它们的系数是多少?对每一幅图,你能否恰好用色数那么多种颜色给它们着色?答:这里不一一给出截图,算出结果。(1)、x4-3x3+2x2=x2*(x-1)*(x-2),色数为 3(2)、x4-4x3+6x2-3x=x*(x-1)2+(x-1)(x-2)2,色数为 2(3)、x5-5x4+10x3-10x2+4x=x2(x-1)2*(x-2)+(x-1)(x-2)3,色数为 3(4)、x4-3x3+3x2-1x=x*(x-1)3,色数为 2(5)、x5-4x4+6x3-4x2+x=x*(x-1)4,色
9、数为 2(6)、x6-5x5+10x4-10x3+5x2-1x=x*(x-1)5,色数为 2(7)、x4-5x3+8x2-4x=x(x-2)2*(x-1),色数为 3(8)、x6-9x5+36x4-75x3+78x2-31x=x(x-1)3+3x(x-1)(x-2)3+x(x-1)(x-2)(x-3)3,色数为 3(9)、x6-5x5+10x4-10x3+5x2-1x=x*(x-1)5 ,色数为 2(10)、x7-10x6+40x5-82x4+91x3-52x2+12x=x(x-1)3*(x-2)2*(x-3),色数为 4(11)、 x8-10x7+43x6-103x5+148x4-127x3
10、+60x2-12x= (x-1)2*x(x-1)2*(x-2)2+(x-1)(x-2)4, 色数为 3问题 5 n-路图的色数是多少(给出分析结果,在用程序验证)?答:n-图的色数是 2.原因是 n-图除两端点外,其余每两点仅与其相邻两点连接,故只需将 n-路图相间着色即可。问题 6 n-路图的色多项式是什么?同样,先分析再实验,分析所得结果和计算机程序所给结果形式上可能差距很大,但是事实上是一样的。答:P(F,x)=x*(x-1)(n-1) (n=3) P(F,x)=x2 (n=2)P(F,x)=x (n=1)问题 7 对 n-圈重新按问题 5 做,在这里的分析过程中,是否遇到什么障碍,问题
11、是什么?答:对于 n-圈,点首尾相接。当点数为偶数的时候,可以通过相见着色的方法对 n-圈进行着色,色数为 2;但是当点数为奇数的时候,由于首尾相接,故不能使用相见着色的方法,需要增加一种颜色,色数为 3.故(1)点数为偶数时,色数为 2(2)点数为奇数时,色数为 3问题 8 对 n-圈重新按问题 6 做,这一问题的障碍是什么?你可以再审视一下这时的 B-L 算法,别忘了将所得结果与计算机的数出相比较。答:遇到的障碍是对于未着色的点,除其相邻点的着色对其有影响外,其不相邻的点的着色也对其有影响。这时选用 B-L 算法将 n 圈分成 n-1 圈图和 n 路图,经过多次分解后即可求解色多项式。问题
12、 9 这是一个引导你进行分析的问题。如果一个图 F 的色数为 k,则 F 的色多项式中一定存在什么因子?答:一定存在(x-k+1)的因子。问题 10 利用计算机程序,分解得到的色多项式,可观察到怎样的规律?答:见问题 11 解答问题 11 我们已经看到,任何色多项式的常数项总为 0,且多项式的次数总等于 F 中的顶点数。本问题的目的是给出一些猜想,色多项式在其它方面还反映了图本身那些性质?仔细观察问题 4 的结果,同时用程序计算你自己选择的其它一些图的色多项式,能否描述出 P(F,x)系数是上的特点和规律?你能否发现这些系数反映图形上的任何特征?答:(10-11)观察到的规律:(1) 、最高项
13、次数与顶点个数相同系数为一。(2) 、常数项为 0。(3) 、从最高项开始各项系数正负相同。(4) 、图中无顶点数大于 3 的最小闭合圈的色多项式可以在实数域内完全分解。(5) 、图中顶点数大于 3 的最小闭合圈的色多项式在实数域内不能完全分解。(6) 、色多项式第二项系数为边数的相反数。(7) 、非空图色多项式正负系数和为 1,空图为 0。(8) 、图的色多项式系数绝对值之和为 。2n(9) 、圈的色多项式为 。)( )(*)xxn四、收获和不足在大作业的完成过程中,促进了我们对 GUI 进一步的学习,提高了我们编程实践的能力和解决实际问题的能力.但是,我们对 Matlab 的实际应用的掌握
14、知之甚少。所以做出的界面交互式功能仍然显得比较僵硬,能让界面更完美的则涉及到更复杂的功能,心有余而力不足。我们明白数学实验课程仅是一个对 MATLAB 的入门型介绍。课程结束以后,我们将会通过课余时间继续学习 MATLAB 相关功能, 来帮助我们学习掌握更多的关于 Matlab 的实际应用。 五、程序介绍程序功能介绍1. 点击 Matlab 图标2.在 command window 输入 guide 后回车打开文件即可得到如下的界面:点击如下按钮即可得到 3 的界面3.界面为:4.若用户不会使用,可以先点击帮助按钮,则在 Matlab 的 command window 中显示帮助信息。先确定画
15、点的个数,并输入,然后点击画点,一次性把所需要的点全部画完。如图,画了四个点 5.点击连线,一次点击只能连接一条线,若需要连多条线则需要多次点击连线6.点击求出色多项式,则可以求解7.若需要重新开始画点画线则点击重画,再次重复以上动作,若要退出,则点击退出按钮即可退出8.若要查看数学实验报告内容,只需点击作业文档即可。注意事项:由于 GUI 知识的匮乏,对于未按相关操作造成的无法求解情况未给与相关处理。所以在运行的时候请按照顺序进行操作。六、参考文献1.焦光虹.数学实验. 科学出版社.2.王朝瑞.图论.高等教育出版社.3.王海英.图论算法及其 MATLAB 实现.北航出版社.4.罗华飞.MATLAB GUI 设计学习手记.北航出版社.4百度 http:/wenku.ba