地图着色课程设计.docx
《地图着色课程设计.docx》由会员分享,可在线阅读,更多相关《地图着色课程设计.docx(26页珍藏版)》请在沃文网上搜索。
1、内 容 提 要此题为地图着色问题,由地图着色问题很容易想到图的着色问题,因此可以把地图抽象为无向图来解决地图的着色问题。对地图的抽象相当于对图的抽象,即以邻接矩阵来实现地图的区域相邻的描绘,而对地图的区域数即以图的顶点数来描绘。设计说明书的内容包括需求分析,概要设计,详细设计,代码实现,后期测试等内容,需求分析是对此问题所需要实现的功能的介绍,概要设计是对所需要实现功能的模块划分,以及初步的实现思想,详细设计通过编写大致的代码来实现功能,代码实现则是具体的解决问题,解决此问题设计了两个算法,贪心,回溯,在程序的测试阶段,回溯算法对同一个问题的解决速率高于贪心算法,但是结果都是以最少的颜色数来染
2、色。课题实现的环境是在window环境下的eclipse中,通过在其中输入地图的区域数,图的连接情况,来选择相应的算法来实现染色,本次课题所采用的数据结构主要是二维数组来抽象图的邻接矩阵。目 录1引言(或绪论)12 需求分析22.1 问题分析 22.3问题解决22.3 运行环境及开发工具32.4 功能需求 32.4.1 地图的抽象及输入 32.4.2 地图着色的算法设计 32.4.3 界面设计 32.4.4 输出设计 32.5任务分配 43概要设计 43.1 数据定义 43.2 功能模块定义 43.2.1 地图的抽象输入模块 43.2.2 输出模块 43.2.3 地图染色模块 43.2.4 界
3、面设计模块 53.2.5 主模块 53.3 程序流程图 64 详细设计 74.1 地图输入模块 74.1.1 数据类型 74.1.2 具体实现 74.2 界面设计模块 74.2.1 数据类型 74.2.2 具体实现 74.3 算法设计模块 9 4.3.1 回溯法过程9 4.3.2 贪心法过程.105 程序设计模块115.1 界面设计代码115.2 染色实现模块156 程序测试196.1 运行结果196.2 贪心、回溯着色结果及分析197 算法时间、空间复杂度分析227.1 递归回溯227.2 贪心算法228 课设总结 228.1 已实现功能及不足228.2 心得体会22参考文献241 引言(或
4、绪论)此次课程设计的要求是已知某地图(如中国地图),对各区域进行着色,要求相邻省所使用的颜色不同,并保证使用的颜色总数最少。此问题就是经典的地图着色问题,地图着色问题与四色定理是紧密相关的。地图着色问题与著名四色定理:四色定理是一个著名的数学定理:如果在平面上划出一些邻接的有限区域,那么可以用四种颜色来给这些区域染色,使得每两个邻接区域染的颜色都不一样;另一个通俗简洁的说法是:每个地图都可以用不多于四种颜色来染色,而且不会有两个邻接的区域颜色相同。这就是著名的四色定理,由四色定理可以想到只需要四种颜色就可以为一个区域的地图着上颜色,而且相邻区域的颜色不相同。2 需求分析2.1 问题分析:地图着
5、色问题是一个抽象的图形学问题,用程序实现对各个区域进行着色,并且相邻省所用的颜色不同,同时保证颜色的总数最少,那么就是如何将这些抽象的进行数据化。如何将程序所需要的功能模拟着色在计算机中编程实现。2.2 问题解决:计算机中,图主要可以用两种方法表示:邻接矩阵和邻接链表。N个顶点的邻接矩阵是一个N*N的布尔矩阵,图中的每一个顶点都由一行或者一列来表示,如果从第i个顶点和第j个顶点之间有边连接,则矩阵第i行,第j列的元素等于1,如果没有边连接,则等于0.这就是图的邻接矩阵表示那么地图也可以抽象为一个图,其可以用邻接矩阵来进行模拟:对于每一个地图, 我们可以把每一个区 区域或国家) 看作一个点, 而
6、区与区之间的邻接关系看作点与点之间的连线。从而将地图抽象为一个图,然后就可以用邻接矩阵抽象。如下图:其邻接矩阵为:ABCDEA 01100B10111C11001D01001E011112.3运行环境及开发工具:运行环境:windows系统开发工具:eclipse编程工具2.4 功能需求:2.4.1:地图的抽象及输入:给定一个地图,要求画出绘制出其图的形式,并在计算机上用邻接矩阵实现。相应的顶点为0,则表示两点邻接,否则,就不邻接,为1.2.4.2:地图着色的算法设计:回溯法:本题可采用回溯法进行着色。当t=1时,对当前第t个顶点开始着色:若tn,则已求得一个解,输出着色方案即可。否则,依次对
7、顶点t着色1-m, 若t与所有其它相邻顶点无颜色冲突,则继续为下一顶点着色;否则,回溯,测试上一颜色。回溯法的主要就是选择各种颜色,直到把此点着完色为止。贪心法:选择一种颜色,以任意顶点作为开始顶点,依次考察图中的未被着色的每个顶点,如果一个顶点可以用颜色1着色,换言之,该顶点的邻接点都还未被着色,则用颜色1为该顶点着色,当没有顶点能以这种颜色着色时,选择颜色2和一个未被着色的顶点作为开始顶点,用第二种颜色为尽可能多的顶点着色,如果还有未着色的顶点,则选取颜色3并为尽可能多的顶点着色,依此类推,直到所有顶点都着上颜色。贪心法就是选择一种颜色,最大化的将图中的各点都用这种颜色着上。2.4.3:界
8、面设计:地图着色的软件界面设计,选择何种算法,以及选择几种颜色来为相应的地图桌上颜色。2.4.4:输出设计按要求输出动态的着色过程以及最终的染色结果,同时输出最终的着色结果,以及最少颜色数,在输出框里面输出。2.5 任务分配:xxx:贪心法算法设计,界面设计xxx:回溯法算法设计3概要设计3.1 数据定义:int cn+1n+1:邻接矩阵的中的数据只为0.1int color n+1:存取对对应的点的颜色,颜色用1,2,3,4表示int n:定义对应的点数int N 着色的颜色数3.2功能模块定义:3.2.1 地图的抽象输入模块:按操作者要求输入相应地图对应图的点数,以及相应点与其他点的连接情
9、况,此输入在界面输入,其中点数表示某个区域的地区数,而连接情况表示各区域的相邻情况,用此来抽象地图。 3.2.2 输出模块:按操作者输入的数据,执行相应的算法,并且在界面上显示出来最终的结果,输出的有图的邻接矩阵,着色方案,还有图的着色的最少颜色数。3.2.3 地图的染色模块:利用贪心算法以及回溯算法来为地图进行着色,即判断相应的点应该着那种颜色。回溯法算法过程:设数组colorn+1表示各顶点的着色情况,其中n表示相应的点数,回溯法: 1将数组colorn初始化为0;2s=1;3while (s=n)3.1 依次考察每一种颜色,若顶点s的着色与其他顶点的着色不发生冲突,则转步骤3.2;否则,
10、搜索下一个颜色;3.2 若顶点已全部着色,则输出数组colorn+1,以及数组colorn+1返回;3.3 否则, 3.3.1 若顶点s是一个合法着色,则s=s+1,转步骤3处理下一个顶点; 3.3.2 否则,重置顶点k的着色情况,换第二种颜色给顶点k着色,转步骤3。主要函数:hscolor()贪心法算法过程:设数组colorn+1表示各顶点的着色情况,算法如下:1m=0,sum=0; /m着色的最少颜色数,sum已经着色的顶点数顶点12.while(sumn)3m=m+14. for (i=1; i=n; i+)5.寻找可以着颜色1的第一个点,找到就终止此循环6for (i=2; i=n5输
11、出colorn,已经最少的颜色数主要函数:txcolor3.2.4 界面设计模块:按题目要求在界面上输入地图的区域数,各区域的连接情况以及选择何种算法来进行着色。结果输出在结果框。3.2.5 主模块:利用以上设计的各个模块来进行调用,其中要选择相应的算法(回溯,贪心)来实现着色,从而完成地图着色,并且直观的结果在屏幕上显示出来。3.3 程序流程图开始输入区域数n按钮?选择算法输入chscolor()txcolor()输出结果结束贪心算法回溯算法4 详细设计4.1 地图输入模块4.1.1数据类型:int n; 顶点数int cn+1n+1; 邻接矩阵String data;地图中各点的邻接连接情
12、况,用0.1表示4.1.2 具体实现: n = textField.getText();/将定义的textField中的数据给n String data = textArea1.getText().split( );/将textArea1中的0.1数组给data for (int i = 1; i n+1; i+) for (int j = 1; j n)/递归出口,递归的最终出口 output();/输出结果 else for(i=1;i=N;i+)/对每一种色彩逐个测试 colors=i;if(colorsame(s)=0)/当测试这个颜色i=1为某个点着色不合格时,用第二种颜色着色,i=
13、2进行判断,合格进行递归调用,不合格就使用第三种颜色,即i=3 trycolor(s+1);/进行下一块的着色 break;/停止回溯,因为已经着色成功 4.3.2 贪心法主要代码while(sum n)/最终的判定条件,即将所有点着色完毕 m+;/第一次循环,m=1,m即为颜色数 for(int i=1;i=n;i+)/此循环用来查找第一个为着色的并且可以着色m的点 if(colori=0) j=i;/j=1 colorj=m; sum+; break;/结束当前循环 for(int i=j+1;i=n;i+)/i=2 if(colori!=0) continue;/colori的起始值为零
- 1.请仔细阅读文档,确保文档完整性,对于不预览、不比对内容而直接下载带来的问题本站不予受理。
- 2.下载的文档,不会出现我们的网址水印。
- 3、该文档所得收入(下载+内容+预览)归上传者、原创作者;如果您是本文档原作者,请点此认领!既往收益都归您。
下载文档到电脑,查找使用更方便
20 积分
下载 | 加入VIP,下载更划算! |
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 地图 着色 课程设计
