离散数学实验指导书_工程认证(实验6:洒水车路线问题)
- 格式:doc
- 大小:94.50 KB
- 文档页数:4
实验六洒水车路线问题
●实验所属系列:离散数学课程实验
●实验对象:本科
●相关课程及专业:离散数学,计算机科学与技术
●实验类型:设计型实验
●实验时数(学分):4学时
实验目的
解决与图论中欧拉回路有关的实际问题,扩展对于书本知识的理解,提高程序设计能力和逻辑思维能力。
实验内容与要求
一辆洒水车从所在的市政办公点出发,需要在所有负责的街道上洒水,并最后回到原点。
问洒水车如何设计路线才能使得走的路程最短。
实验的软硬件环境
PC机一台,装有C/C++/JA V A语言集成开发环境。
实验过程和方法
1)对给定问题进行理论分析;
将这个问题抽象成图论的语言,就是给定一个连通图,每条边的权值就是街道的长度,本问题转化为在图中求一条回路,使得回路的总权值最小。
如果街道的连通图为欧拉图,则只要求出图中的一条欧拉回路即可。
否则,洒水车要完成任务就必须在某些街道上重复走若干次。
如果重复走一次,就加一条平行边,于是原来对应的图形就变成了多重图。
只是要求加进的平行边的总权值最小就行了。
于是,问题就转化为,在一个有奇度数结点的赋权连通图中,增
加一些平行边,使得新图不含奇度数结点,并且增加的边的总权值最小。
因此,问题的关键在于如何增加这些平行边。
设V1为图中所有奇度数节点的集合,下面给出了算法:
1.使用弗洛伊德算法计算图中任一两结点间的最短路径长度。
2.构成一个|V1|×|V1|的矩阵,这个矩阵给出了图中每两个奇度数结点间的最短路径长度,
3.将矩阵中的结点进行两两组合,找出一个最佳的组合情况,这种组合使得他们的最短路径长度之和最小。
4.根据前面得到的最佳组合,求出各对组合的最短路径。
并将最短路径上的每条边都加一条平行边。
5.利用Fleury算法求欧拉回路。
下面举例说明这个算法:
上图的奇度数结点为1,3,6,11
奇度数结点构成的矩阵为
13611
1-153876
315-2476
63824-52
11767652-
结点的最佳组合为:
13611
1-153876
315-2476
63824-52
11767652-
由于是对称的矩阵,我们只关心上三角部分:
13611
1-153876
315-2476
63824-52
11767652-
现在我们得到1和3,6和11之间的最短路径(1;3) (6;9), (9;11)
将最短路径上的边各添加一条平行边。
之后针对这个新的赋权多重图求欧拉回路,可能的一条回路是
(0;1), (0;5), (5;10), (10;11), (11,8), (8;7), (7;2), (2;3), (3;1), (1;3), (3;0), (0;2), (2;6), (6;9), (9;11), (11;9), (9;6), (6;4), (4;0)
如下图所示
2)实现上述算法;
3)添加其它必要的代码,将结果显示在计算机屏幕上。
实验开设方式
个人实验;上机4学时。
实验思考
还有其它可以解决这个问题的算法么?。