1.引言地图着色问题与著名四色定理:四色定理是一个著名的数学定理:如果在平面上划出一些邻接的有限区域,那么可以用四种颜色来给这些区域染色,使得每两个邻接区域染的颜色都不一样;另一个通俗简洁的说法是:每个地图都可以用不多于四种颜色来染色,而且不会有两个邻接的区域颜色相同。这就是著名的四色定理,由四色定理可以想到只需要四种颜色就可以为一个区域的地图染上颜色,而且相邻区域的颜色不相同。2.需求分析2.1问题分析地图着色问题是一个抽象的图形学问题,用程序实现对各个区域进行着色,并且相邻省所用的颜色不同,同时保证颜色的总数最少,那么就是如何将这些抽象的进行数据化。如何将程序所需要的功能模拟着色在计算机中编程实现。2.2问题解决计算机中,图主要可以用两种方法表示:邻接矩阵和邻接链表。N个顶点的邻接矩阵是一个N*N的布尔矩阵,图中的每一个顶点都由一行或者一列来表示,如果从第i个顶点和第j个顶点之间有边连接,则矩阵第i行,第j列的元素等于1,如果没有边连接,则等于0.这就是图的邻接矩阵表示 那么地图也可以抽象为一个图,其可以用邻接矩阵来进行模拟:对于每一个地图, 我们可以把每一个区〔 区域或国家)看作一个点, 而区与区之间的邻接关系看作点与点之间的连线。从而将地图抽象为一个图,然后就可以用邻接矩阵抽象。如下图: 其邻接矩阵为:A B C D EA 0 1 1 0 0 B 1 0 1 1 1 C 1 1 0 0 1D 0 1 0 0 1 E 0 1 1 1 12.3运行环境和开发工具运行环境:windows系统开发工具:DVC++编程工具2.4功能需求: 2.4.1:地图的抽象及输入: 给定一个地图,要求画出绘制出其图的形式,并在计算机上用邻接矩阵实现。相应的顶点为0,则表示两点邻接,否则,就不邻接,为1. 2.4.2:地图着色的算法设计: 回溯法:本题可采用回溯法进行着色。当t=1时,对当前第t个顶点开始着色:若t>n,则已求得一个解,输出着色方案即可。否则,依次对顶点t着色1-m, 若t与所有其它相邻顶点无颜色冲突,则继续为下一顶点着色;否则,回溯,测试上一颜色。回溯法的主要就是选择各种颜色,直到把此点着完色为止。 贪心法:选择一种颜色,以任意顶点作为开始顶点,依次考察图中的未被着色的每个顶点,如果一个顶点可以用颜色1着色,换言之,该顶点的邻接点都还未被着色,则用颜色1为该顶点着色,当没有顶点能以这种颜色着色时,选择颜色2和一个未被着色的顶点作为开始顶点,用第二种颜色为尽可能多的顶点着色,如果还有未着色的顶点,则选取颜色3并为尽可能多的顶点着色,依此类推,直到所有顶点都着上颜色。贪心法就是选择一种颜色,最大化的将图中的各点都用这种颜色着上。3程序流程图
地图染色问题课程设计
最新推荐文章于 2024-06-02 20:09:15 发布