地图着色课程设计
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
算法分析与设计课程设计说明书
地图着色
学院:计算机与控制工程学院
专业:计算机科学与技术
学生姓名:xxxxx学号:成绩
学生姓名:xxxxx 学号:成绩
指导教师:
内容提要
此题为地图着色问题,由地图着色问题很容易想到图的着色问题,因此可以把地图抽象为无向图来解决地图的着色问题。对地图的抽象相当于对图的抽象,即以邻接矩阵来实现地图的区域相邻的描绘,而对地图的区域数即以图的顶点数来描绘。设计说明书的内容包括需求分析,概要设计,详细设计,代码实现,后期测试等内容,需求分析是对此问题所需要实现的功能的介绍,概要设计是对所需要实现功能的模块划分,以及初步的实现思想,详细设计通过编写大致的代码来实现功能,代码实现则是具体的解决问题,解决此问题设计了两个算法,贪心,回溯,在程序的测试阶段,回溯算法对同一个问题的解决速率高于贪心算法,但是结果都是以最少的颜色数来染色。
课题实现的环境是在window环境下的eclipse中,通过在其中输入地图的区域数,图的连接情况,来选择相应的算法来实现染色,本次课题所采用的数据结构主要是二维数组来抽象图的邻接矩阵。
目录
1引言(或绪论) (1)
2需求分析 (2)
2.1 问题分析 (2)
2.3问题解决 (2)
2.3 运行环境及开发工具 (3)
2.4功能需求 (3)
2.4.1 地图的抽象及输入 (3)
2.4.2 地图着色的算法设计 (3)
2.4.3 界面设计 (3)
2.4.4 输出设计 (3)
2.5任务分配 (4)
3概要设计 (4)
3.1 数据定义 (4)
3.2 功能模块定义 (4)
3.2.1 地图的抽象输入模块 (4)
3.2.2 输出模块 (4)
3.2.3 地图染色模块 (4)
3.2.4 界面设计模块 (5)
3.2.5 主模块 (5)
3.3 程序流程图 (6)
4 详细设计 (7)
4.1 地图输入模块 (7)
4.1.1 数据类型 (7)
4.1.2 具体实现 (7)
4.2 界面设计模块 (7)
4.2.1 数据类型 (7)
4.2.2 具体实现 (7)
4.3 算法设计模块 (9)
4.3.1 回溯法过程 (9)
4.3.2 贪心法过程 (10)
5 程序设计模块 (11)
5.1 界面设计代码 (11)
5.2 染色实现模块 (15)
6 程序测试 (19)
6.1 运行结果 (19)
6.2 贪心、回溯着色结果及分析 (19)
7 算法时间、空间复杂度分析 (22)
7.1 递归回溯 (22)
7.2 贪心算法 (22)
8 课设总结…………………………………………………………………………
2 2 8.1 已实现功能及不足 (22)
8.2 心得体会 (22)
参考文献 (24)
1引言(或绪论)
此次课程设计的要求是已知某地图(如中国地图),对各区域进行着色,要求相邻省所使用的颜色不同,并保证使用的颜色总数最少。此问题就是经典的地图着色问题,地图着色问题与四色定理是紧密相关的。
地图着色问题与著名四色定理:
那么可以用四种颜色来给这些区域染色,使得每两个邻接区域染的颜色都不一
不会有两个邻接的区域颜色相同。这就是著名的四色定理,
由四色定理可以想到只需要四种颜色就可以为一个区域的地图着上颜色,而且相邻区域的颜色不相同。
2 需求分析
2.1 问题分析:
地图着色问题是一个抽象的图形学问题,用程序实现对各个区域进行着色,并且相邻省所用的颜色不同,同时保证颜色的总数最少,那么就是如何将这些抽象的进行数据化。如何将程序所需要的功能模拟着色在计算机中编程实现。
2.2 问题解决:
计算机中,图主要可以用两种方法表示:邻接矩阵和邻接链表。N个顶点的邻接矩阵是一个N*N的布尔矩阵,图中的每一个顶点都由一行或者一列来表示,如果从第i个顶点和第j个顶点之间有边连接,则矩阵第i行,第j列的元素等于1,如果没有边连接,则等于0.这就是图的邻接矩阵表示
那么地图也可以抽象为一个图,其可以用邻接矩阵来进行模拟:对于每一个地图,我们可以把每一个区〔区域或国家) 看作一个点,而区与区之间的邻接关系看作点与点之间的连线。从而将地图抽象为一个图,然后就可以用邻接矩阵抽象。如下图:
其邻接矩阵为:
A B C D E
A 0 1 1 0 0
B 1 0 1 1 1
C 1 1 0 0 1
D 0 1 0 0 1
E 0 1 1 1 1
2.3运行环境及开发工具:
运行环境:windows系统
开发工具:eclipse编程工具
2.4 功能需求:
2.4.1:地图的抽象及输入:
给定一个地图,要求画出绘制出其图的形式,并在计算机上用邻接矩阵实现。相应的顶点为0,则表示两点邻接,否则,就不邻接,为1.
2.4.2:地图着色的算法设计:
回溯法:本题可采用回溯法进行着色。当t=1时,对当前第t个顶点开始着色:若t>n,则已求得一个解,输出着色方案即可。否则,依次对顶点t着色1-m,若t与所有其它相邻顶点无颜色冲突,则继续为下一顶点着色;否则,回溯,测试上一颜色。回溯法的主要就是选择各种颜色,直到把此点着完色为止。
贪心法:选择一种颜色,以任意顶点作为开始顶点,依次考察图中的未被着色的每个顶点,如果一个顶点可以用颜色1着色,换言之,该顶点的邻接点都还未被着色,则用颜色1为该顶点着色,当没有顶点能以这种颜色着色时,选择颜色2和一个未被着色的顶点作为开始顶点,用第二种颜色为尽可能多的顶点着色,如果还有未着色的顶点,则选取颜色3并为尽可能多的顶点着色,依此类推,直到所有顶点都着上颜色。贪心法就是选择一种颜色,最大化的将图中的各点都用这种颜色着上。
2.4.3:界面设计:
地图着色的软件界面设计,选择何种算法,以及选择几种颜色来为相应的地图桌上颜色。
2.4.4:输出设计
按要求输出动态的着色过程以及最终的染色结果,同时输出最终的着色结果,以及最少颜色数,在输出框里面输出。
2.5 任务分配:
xxx:贪心法算法设计,界面设计
xxx:回溯法算法设计
3概要设计