当前位置:文档之家› 第五章地理信息系统-路径遍历与最短路径

第五章地理信息系统-路径遍历与最短路径

例如,某公司在10大港口C1,C2,…,C10 设有货栈,从Ci到Cj之间的直接航运价格,是 由市场动态决定的。如果两个港口之间无直接 通航路线,则通过第三个港口转运。那么,各 个港口之间最廉价的货运线路是什么?
“时间”意义上的最短路径 例如,某家经营公司有一批货物急需从一个
城市运往另一个城市,那么,在由公路、铁路、 河流航运、航空运输等4种运输方式和各个运输线 路所构成的交通网络中,究竟选择怎样的运输路 线最节省时间?
先给它一个T标号;算法的每一步就是把顶点的T标号
逐步修改,将其变为P标号。
那么,最多经过k-1步,就可以求得到从起点v1到 每一个顶点的最短路径及其长度。
标号法具体计算步骤
开始,先给v1标上P标号P(v1)= 0,其余各点 标上T标号T(vj)=+∞(j≠1)。
① 如果刚刚得到P标号的点是vi,那么,对于
1 Initialization:
2 S = {u}
3 for all nodes v
4 if v adjacent to u then
5
D(v) = c(u,v)
6 else D(v) = ∞
7
8 Loop
9 find w not in S with the smallest D(w)
10 add w to S
11 update D(v) for all v adjacent to w and not in S:
12 D(v) = min{D(v), D(w) + c(w,v)}
13 until all nodes in S
15Biblioteka 标号法例子标号法例子
最短路径生成树
v
2
y
3
1
1
x
4
u
21
5
t
w4
3
s
节点 u v zw y x s t z
首先从v1开始,给每一个顶点标一个数,称为标 号。这些标号,又进一步区分为T标号和P标号两种类
型。其中,每一个顶点的T标号表示从起点v1到该点的 最短路径长度的上界,这种标号为临时标号;P标号表
示从v1到该点的最短路长度,这种标号为固定标号。 在最短路径计算过程中,对于已经得到P标号的顶
点,不再改变其标号;对于凡是没有标上P标号的顶点,
以上3类问题,都可以抽象为同一类问题,即 赋权图上的最短路径问题。
不同意义下的距离都可以被抽象为网络图中 边的权值。
权——这种权值既可以代表“纯距离 ”,又 可以代表“经济距离 ”,也可以代表“时间距 离 ”。
(二)最短路径的算法
标号法 1959年E.W.Dijkstar 提出的标号法是最短路径
Next
For j=1 to NUMOFITEMS(w) Call BreadthFirstSearch( w(j) )
Next End Sub
二、最短路径问题
(一)最短路径的含义
二、最短路径问题
(一)最短路径的含义
“纯距离”意义上的最短路径 例如,需要运送一批物资从一个城市到另
一个城市,选择什么样的运输路线距离最短? “经济距离”意义上的最短路径
物流信息管理
大连海事大学
第五章 地理信息系统
路径遍历与最短路径
一、路径遍历 1. 深度优先遍历 2. 广度优先遍历
二、最短路径 1. 数学模型 2. 标号法 3. 程序流程
一、路径遍历
1.深度优先遍历
(1) 首 先 访 问 顶 点 i , 并 将 其 访 问 标 记 置 为 访 问 过 , 即 visited(i) =1; (2) 然后搜索与顶点i有边相连的下一个顶点j,若j未被 访问过,则访问它,并将j的访问标记置为访问过, visited(j)=1,然后从j开始重复此过程,若j已访问,再 看与i有边相连的其它顶点; (3) 若与i有边相连的顶点都被访问过,则退回到前一 个访问顶点并重复刚才过程,直到图中所有顶点都被 访问完为止。
深度优先遍历算法描述
Sub DeepthFirstSearch(v as Integer) ‘从v出发深度优先遍历图g Call visit(v) visited(v) = 1 w=FIRSTADJ(v) ‘w为v的邻接点 Do while visited(w)=0 ‘当邻接点未访问 Call DeepthFirstSearch(w) w=NEXTADJ(v) ‘找下一邻接点 Loop
所有这样的点 vj vi , vj E,而且vj的标号是T标号
将其T标号修改为:min[T(vj),P(vi)+wij]。
v j0
② 若G中没有T标号,则停止。否则,把点 的T标号修改为P标号,然后再转入①。
其中,v j0 满足 T (v j0 ) min T (v j )
标号法算法描述
广度优先遍历算法描述
Call visit(s) visited(s) = 1
Sub BreadthFirstSearch(v as Integer) ‘从v出发广度优先遍历图g
For i=1 to NUMOFADJ(v) w(i) = NEXTADJ(v) ‘找下一邻接点 If visited( w(i) ) = 0 Then Call visit( w(i) ) visited( w(i) ) = 1 End If
前溯节点 u u u v w w x y
问题最好的求解方法 。 标号法优点
不仅可以求出起点到终点的最短路径及其长度 ,而且可以求出起点到其他任何一个顶点的最短路 径及其长度;同时适用于求解有向图或无向图上的 最短路径问题。.
标号法的基本思想
设G是一个赋权有向图,即对于图中的每一条边, 都赋予了一个权值。在图G中指定两个顶点,确定为起 点和终点,不妨设v1为起点,vk为终点。
End Sub
2.广度优先遍历
广度优先搜索遍历类似于树的按层次遍历。设图G的初 态是所有顶点均未访问,在G 中任选一顶点i作为初始点, 则广度优先搜索的基本思想是: (1) 首先访问顶点i,并将其访问标志置为已被访问,即 visited(i)=1; (2) 接着依次访问与顶点i有边相连的所有顶点W1, W2,…,Wt; (3) 然后再按顺序访问与W1,W2,…,Wt有边相连又 未曾访问过的顶点; 依此类推,直到图中所有顶点都被访问完为止 。
相关主题