杨利霞 发表于 2020-3-24 16:31

数学建模之图论


数学建模之图论概览

问题引入与分析
图论的基本概念
最短路问题及算法
最小生成树及算法
旅行售货员问题
模型建立与求解
1.        问题引入与分析

1) 98年全国大学生数学建模竞赛B题“最佳灾情巡视路线”中的前两个问题是这样的:

今年(1998年)夏天某县遭受水灾. 为考察灾情、组织自救,县领导决定,带领有关部门负责人到全县各乡(镇)、村巡视. 巡视路线指从县政府所在地出发,走遍各乡(镇)、村,又回到县政府所在地的路线.
a. 若分三组(路)巡视,试设计总路程最短且各组尽可能均衡的巡视路线。
b. 假定巡视人员在各乡(镇)停留时间T=2小时,在各村停留时间t=1小时,汽车行驶速度V =35公里/小时. 要在24小时内完成巡视,至少应分几组;给出这种分组下最佳的巡视路线.

https://img-blog.csdnimg.cn/20190822183247344.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L25hcmNpc3N1czJf,size_16,color_FFFFFF,t_70
公路边的数字为该路段的公里。

2) 问题分析:

本题给出了某县的公路网络图,要求的是在不同的条件下,灾情巡视的最佳分组方案和路线.
将每个乡(镇)或村看作一个图的顶点,各乡镇、村之间的公路看作此图对应顶点间的边,各条公路的长度(或行驶时间)看作对应边上的权,所给公路网就转化为加权网络图,问题就转化图论中一类称之为旅行售货员问题,即在给定的加权网络图中寻找从给定点O出发,行遍所有顶点至少一次
再回到点O,使得总权(路程或时间)最小.

本题是旅行售货员问题的延伸-多旅行售货员问题.
本题所求的分组巡视的最佳路线,也就是m条经过同一点并覆盖所有其他顶点又使边权之和达到最小的闭链(闭迹).
如第一问是三个旅行售货员问题,第二问是四个旅行售货员问题.
众所周知,旅行售货员问题属于NP完全问题,即求解没有多项式时间算法.
显然本问题更应属于NP完全问题. 有鉴于此,一定要针对问题的实际特点寻找简便方法,想找到解决此类问题的一般方法是不现实的,对于规模较大的问题可使用近似算法来求得近似最优解.

2.        图论的基本概念

图的概念
赋权图与子图
图的矩阵表示
图的顶点度
路和连通
1) 图的概念
https://img-blog.csdnimg.cn/20190822184352693.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L25hcmNpc3N1czJf,size_16,color_FFFFFF,t_70

https://img-blog.csdnimg.cn/20190822184821160.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L25hcmNpc3N1czJf,size_16,color_FFFFFF,t_70

https://img-blog.csdnimg.cn/20190822184944247.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L25hcmNpc3N1czJf,size_16,color_FFFFFF,t_70

https://img-blog.csdnimg.cn/20190822184952893.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L25hcmNpc3N1czJf,size_16,color_FFFFFF,t_70

https://img-blog.csdnimg.cn/20190822184959226.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L25hcmNpc3N1czJf,size_16,color_FFFFFF,t_70

https://img-blog.csdnimg.cn/20190822185005998.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L25hcmNpc3N1czJf,size_16,color_FFFFFF,t_70


https://img-blog.csdnimg.cn/20190822190225861.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L25hcmNpc3N1czJf,size_16,color_FFFFFF,t_70

https://img-blog.csdnimg.cn/20190822190305250.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L25hcmNpc3N1czJf,size_16,color_FFFFFF,t_70

https://img-blog.csdnimg.cn/20190822190346687.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L25hcmNpc3N1czJf,size_16,color_FFFFFF,t_70

https://img-blog.csdnimg.cn/20190822221809814.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L25hcmNpc3N1czJf,size_16,color_FFFFFF,t_70

https://img-blog.csdnimg.cn/20190822221834277.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L25hcmNpc3N1czJf,size_16,color_FFFFFF,t_70

https://img-blog.csdnimg.cn/20190822221853189.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L25hcmNpc3N1czJf,size_16,color_FFFFFF,t_70

https://img-blog.csdnimg.cn/20190822221902860.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L25hcmNpc3N1czJf,size_16,color_FFFFFF,t_70




3. 最短路

Dijkstra算法



Floyd算法

算法的基本思想

直接在图的带权邻接矩阵中用插入顶点的方法依次构造出ν 个矩阵D(1)、D(2)、…、D(ν) D(1)、 D(2)、 … 、D(ν)D(1)、D(2)、…、D(ν),使最后得到的矩阵 D(ν) D(ν )D(ν)成为图的距离矩阵,同时也求出插入点矩阵以便得到两点间的最短路径。
(I)求距离矩阵的方法.
(II)求路径矩阵的方法.
(III)查找最短路路径的方法.

Floyd有两个矩阵,一个是D矩阵(代表距离),一个是R矩阵(代表中介点)

https://img-blog.csdnimg.cn/20190822230644841.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L25hcmNpc3N1czJf,size_16,color_FFFFFF,t_70

https://img-blog.csdnimg.cn/20190822230655317.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L25hcmNpc3N1czJf,size_16,color_FFFFFF,t_70
在这里相当于v1 v_1v
1
​       
被打通了,此时v1 v_1v
1
​       
就可以作为中介点连接。
于是遍历和v1 v_1v
1
​       
连接的点,例如此时遍历到v2 v_2v
2
​       

然后再以v2 v_2v
2
​       
为基准,遍历和v1 v_1v
1
​       
连接的点。
所有遍历到的点都尝试一下是否可以变化距离矩阵,如果可以变化,那么再他们的中介点矩阵上打入"1"的标记。


https://img-blog.csdnimg.cn/20190822231545908.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L25hcmNpc3N1czJf,size_16,color_FFFFFF,t_70

https://img-blog.csdnimg.cn/20190822231553966.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L25hcmNpc3N1czJf,size_16,color_FFFFFF,t_70

https://img-blog.csdnimg.cn/20190822231614299.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L25hcmNpc3N1czJf,size_16,color_FFFFFF,t_70

https://img-blog.csdnimg.cn/20190822231642215.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L25hcmNpc3N1czJf,size_16,color_FFFFFF,t_70
这里的逻辑是这样的:
最小生成树

(略)
————————————————
版权声明:本文为CSDN博主「Mr. Water」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/narcissus2_/article/details/100022182


页: [1]
查看完整版本: 数学建模之图论