图论最短路径选址问题之令狐文艳创作
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
姓名:
令狐文艳
学号:
专业:
图论的实际应用——蔬菜批发市场选址问题
摘要:在现实生活和生产实践中,有许多管理、组织与计划中的优化问题,都可借助图论知识得以解决,而最短路问题是利用图论解决的一个典型的实际问题。图论中最典型的两种求最短路径的算法分别为Dijkstra算法和Floyd算法,其中Floyd 算法广泛应用于求任意两点间的最短路径。本文介绍了利于Floyd算法来解决城市蔬菜批发市场选址的问题。
关键词:最短路;Floyd算法;选址问题
0.引言
对于许多地理问题,当它们被抽象为图论意义下的网络图时,问题的核心就变成了网络图上的优化计算问题。其中,最为常见的是关于路径和顶点的优选计算问题[5]。在路径的优选计算问题中,最常见的是最短路径问题,最短路径可能是给定两点间的最短路径,也可能是任意各点间的最短路径。而在顶点的优选计算问题中,最为常见的是选址问题,所谓选址问题就是在某一地理区域构成的网络中选择一个顶点,建立服务设施,为该网络中的各个点提供服务,使得服务效率最高[3]。
选址问题,在规划建设中经常可以碰到,这里所谓的服务设施,可以是某些公共服务设施,如医院,消防站,物流中心等。也可以是生产服务设施,如仓库,转运站等等。可以认为,选址问题,就是把服务设施与服务对象,反映与统一的网络中,便于对问题进行研究[4]。尽管对选址的目标、要求有不
同的评判标准,但是要求服务对象与服务设施之间易于沟通、易于达到,这是一个最基本的要求。
1.最短路径问题
最短路径问题是图论研究的一个经典算法问题,其目的是求出给定两点之间的长最短的路径,这里所说的长具有广泛意义,即可指普通意义的距离,也可是时间或费用等[2]。因此,最短路径问题通常可以归纳为三类:(1)距离意义上的最短路径,即求两点间距离最短的路径;(2)经济意义上的最短路径,即为两点间的费用最少的路径;(3)时间意义上的最短路径,即选择两点间最节省时间的路径。以上三类问题,都可以抽象为同一类问题,即带权图上的最短路径问题。不同意义下的距离都可以被抽象为网络图中边的权值,权值既可以代表“纯距离”,又可以代表“经济距离”,还可以代表“时间距离”。
1.1 Dijkstra算法
Dijkstra算法是一种求解最短路径方法。它是一个按路径长度递增的顺序产生最短路径的算法,其基本思想是:设图中所有顶点集合为V,另设置两个顶点集合S和T=V- S,集合S 中存放已找到最短路径的顶点,集合T存放当前还未找到最短路径的顶点。初始状态时,集合S中只包含源点V1,然后不断从集合T中选取到顶点V1 的路径长度最短顶点Vi 加入到集合S中,集合S每加入一个新的顶点Vi,都要修改顶点V1到集合T中剩余顶点的最短路径长度值,此过程不断重复,直到集合T中的顶点全部加入到S中为止。这样,就可以求出一点到其它的任一顶点的最短路径。
Dijkstra算法简单易懂,在求给定两点间的最短距离时效率很高,但是其只能求图中一个特定结点到其他各个结点的最短路[1]。当需要求出图中任意两顶点的最短路径时,就需要以图中的每个顶点为起点,依次求出到另外顶点的最短路径,在
顶点数目比较多的情况下,其效率将非常低下。
1.2 Floyd 算法
Floyd 算法为另外一种求最短路径的算法。在某些问题中,需要求出图中任意两顶点之间的最短路径,这时,Floyd 算法将比Dijkstra 算法具有明显优势。Floyd 算法借助于权矩阵的运算直接可以求出任意两点之间的最短路径[2]。
Floyd 算法的实现思路为:首先定义赋权图的边权矩 D =[d ij )]n x n ,即dij=w(i,j),若结点i 到j 无边相连时,则去dij=∞。然后依次计算出矩阵D [2],D [3],…,D
[n]。其中D [2]=D*D=(d
[2]ij )n x n ,d [2]ij =min{d i1+d 1j ,d i2+d 2j ,…,d in +d nj }表示从vi 出发两步可以到达vj 的道路中距离最短者;D [k]=(d [k]ij )n x n ,d [k]
ij 表示从vi 出发k 步可以到达vj 的道路距离中最短路
径。 D [n] = D
[n-1]*D = (d [n]ij )n x n S = D ⊗D [2]⊗D [3]⊗…⊗D [n] = (S ij )n x n
由定义可知d 表示从结点i 到j 经过k 边的路(在有向图中即为有向路)中的长度最短者,而S ij 为结点i 到j 的所有路中的长度最短者。
2.最短路径问题在蔬菜批发市场中的应用
河南某城市市政管理部门决定新建一个蔬菜批发市场,为周边的几个小区的菜市场集中供应新鲜蔬菜。由于蔬菜水果容易变质,小区菜市场的商贩必须在每天早晨把蔬菜从批发市场运送回店铺,这就要求批发市场的地址不能距离小区太远。该城市管理部门经过征求意见后,决定将批发市场建在其中的一个小区旁边,现在的问题是该将此批发市场建在那个小区才能使最远的小区距离该批发市场距离最短。
2.1 分析问题并建立模型
已知该城市的小区位置及相互连通道路分布示意图如图1所示,其中结点v1,v2,v3,v4,v5,v6,v7表示七个小
区,结点间的数字表示小区间的距离。
图1 小区位置分布示意图
由上面的小区位置及道路分布图可知,若找一个合适的小区来建造批发市场,使该小区到其它小区的最远距离最短,即求无向简单图图1中的一点,使该点到其它点的最大值为最小。为此,我们可以使用Floyd 算法来求解问题。首先根据图1画出对应的权矩阵D :
∞ 30 ∞∞∞∞∞
30 ∞ 20 ∞∞ 15 ∞
∞20 ∞ 20 60 25 ∞
D = ∞∞ 20 ∞ 30 18 ∞ ∞ 7 ∞ 3 ∞∞∞
∞ 15 25 18 ∞∞ 15
∞∞∞∞∞ 15 ∞
2.2 Floyd 算法求各点间最短路径
通过7阶加权简单图的权矩阵D ,分别算出矩阵D[2],
V1 V2
V6
V3
V5
V7
V4
30 60 20 15
15 18
20 30
25