当前位置:文档之家› 数学建模与数学实验

数学建模与数学实验


r ( qm
) j

j
则由点i到j的最短路的路径为: i, pk ,, p2 , p1,q1, q2 ,, qm , j
i
pk
p3 p2 p1
q1
q2
qm
j
返回
算法步骤
Floyd 算法:求任意两点间的最短路.
D(i,j):i 到 j 的距离. R(i,j):i 到 j 之间的插入点. 输入: 带权邻接矩阵 w(i,j)
若rij( ) p1 ,则点 p1 是点 i 到点 j 的最短路的中间点.
然后用同样的方法再分头查找.若:
(1)向点 i 追朔得:rip(1 )

p2
r,
( ) ip 2

p3 ,…,rip(k )

pk
(2) 向点
j
追朔得:
r ( ) p1 j

q1
r,
( ) q1 j
q2
,…,
r (k) ij

k rij(k 1)
若d
(k ij
1)

d (k 1) ik

d
(k kj
1)
否则
即当vk被插入任何两点间的最短 路径时,被记录在R(k)中,依次 求 D时() 求得 ,R() 可由 来R() 查找 任何点对之间最短路的路径.
返回
算法原理—— 查找最短路路径的方法
(1) 若 V1 V,E1 E,且当 e E1 时,1 (e)= (e),则称 G1 是 G 的子图.
特别的,若 V1=V,则 G1 称为 G 的生成子图.
(2) 设 V1 V,且 V1 ,以 V1 为顶点集、两个端点都在 V1 中的
图 G 的边为边集的图 G 的子图,称为 G 的由 V1 导出的子图,记为 G[V1].
(2)更新l(v) 、 z(v) : v S V \ S ,若l(v) 则令l(v) = l(u) W (u, v) ,z(v) = u
>l(u) W(u,v)
(3) 设v* 是使l(v) 取最小值的S 中的顶点,则令 S=S∪v{* }, u v*
(4) 若S φ ,转 2,否则,停止.
用上述算法求出的l(v) 就是u0 到v 的最短路的权,从v 的父亲标 记 z(v) 追溯到u0 , 就得到u0 到v 的最短路的路线.
例 求下图从顶点 u1 到其余顶点的最短路. TO MATLAB (road1)
先写出带权邻接矩阵:
0
2 0
1
8 6
1






W

通路Wv1v4 v1e4v4e5v2e1v1e4v4 道路 Tv1v4 v1e1v2e5v4e6v2e2v3e3v4 路径 Pv1v4 v1e1v2e5v4
定义2 (1)任意两点均有路径的图称为连通图. (2)起点与终点重合的路径称为圈. (3)连通而无圈的图称为树.
定义3 (1)设 P(u,v)是赋权图 G 中从 u 到 v 的路径,
)

,其中d
(1) ij

min{
d
(0) ij
,
d (0) i1

d (0) 1j
}
d (1) ij
是从
vi

vj
的只允许以
v1 作为中间点的路径中最短路的长度.
(2)D(2)=
(d
(2) ij
)
,其中
d
(2) ij

min{
d (1) ij
,
d
(1)
i2
d
(1) 2j
}
d (2) ij
(3)设 E1 E,且 E1 ,以 E1 为边集,E1 的端点集为顶点集的图 G 的子图,
称为 G 的由 E1 导出的子图,记为 G[E1].
G
G[{v1,v4,v5}]
G[{e1,e2,e3}]
返回
关联矩阵
对无向图G,其关联矩阵M= (mij ) ,其中:
mij 10
若vi与e j相关联 若vi与e j不关联
对有向图G=(V,E),其邻接矩阵 A (aij ) ,其中:
aij 10
若(vi,v j) E 若(vi,v j) E
对有向赋权图G,其邻接矩阵 A (aij ) ,其中:
wij aij 0

若(vi , v j ) E,且wij为其权 若i j
依次构造出 个矩阵 最后得到的矩阵 D(
D(1)、 D(2)、… 、D( ),使
)成为图的距离矩阵,同时也
求出插入点矩阵以便得到两点间的最短路径.
返回
算法原理—— 求距离矩阵的方法
把带权邻接矩阵 W 作为距离矩阵的初值,即 D(0)=(di(j0) ) =W
(1)D(1)=
(d
(1) ij
若vi与e j不关联
返回
邻接矩阵
对无向图G,其邻接矩阵 A (aij ) ,其中:
aij 10
若vi与v j相邻 若vi与v j不相邻
注:假设图为简单图
v1
0
A= 1

0 1
v2 v3 v4
1 0 1 v1
0 1 1 v2
1 1
0 1
1 0

v3 v4
偶对的集合的映射,称为关联函数. 例1 设 G=(V,E, ),其中
V={v1 ,v2 , v3 , v4}, E={e1, e2 , e3, e4, e5},
(e1) v1v2 , (e2 ) v1v3, (e3 ) v1v4 , (e4 ) v1v4 , (e5 ) v3v3 .
则称w(P) w(e) 为路径 P 的权. eE ( P)
(2) 在赋权图 G 中,从顶点 u 到顶点 v 的具有最小权的路
P* (u, v) ,称为 u 到 v 的最短路. 返回
固定起点的最短路
最短路是一条路径,且最短路的任一段也是最短路. 假设在u0-v0的最短路中只取一条,则从u0到其 余顶点的最短路将构成一棵以u0为根的树.
算法的过程就是在每一步改进这两个标记,使最终l(v) 为从顶点
u0 到 v 的最短路的权. S:具有永久标号的顶点集
输入: G 的带权邻接矩阵w(u, v)
算法步骤:
(1)赋初值:令 S={u0 }, l(u0 ) =0 v S V \ S ,令l(v) =W (u0 , v) , z(v)u=0 u u0
vj
中间可插入任何顶点的路径中最短路的长,因此
返回
算法原理—— 求路径矩阵的方法
在建立距离矩阵的同时可建立路径矩阵R.
R= (rij ) , rij 的含义是从 vi 到 vj 的最短路要经过点号为 rij 的点.
R(0) (rij(0) ) ,
r (0) ij

j
每求得一个 D(k)时,按下列方式产生相应的新的 R(k)
最后标记:
l(v) z (v)
02
u1 u1
17
u1 u6
3 u2
6 9 12
u5
u4
u5
u2
u5
u1
u4
u6
u8
u3
u7
返回
每对顶点之间的最短路
(一)算法的基本思想 (二)算法原理
1、求距离矩阵的方法 2、求路径矩阵的方法 3、查找最短路路径的方法 (三)算法步骤
返回
算法的基本思想
直接在图的带权邻接矩阵中用插入顶点的方法
并称图 G 为赋权图.
规定用记号 和 分别表示图的顶点数和边数.
常用术语: (1) 端点相同的边称为环. (2) 若一对顶点之间有两条以上的边联结,则这些边称为重边. (3) 有边联结的两个顶点称为相邻的顶点,有一个公共端点的边
称为相邻的边. (4) 边和它的端点称为互相关联的. (5) 既没有环也没有平行边的图,称为简单图. (6)任意两顶点都相邻的简单图,称为完备图,记为 Kn,其中 n
若(vi , v j ) E
无向赋权图的邻接矩阵可类似定义.
v1
0 A= 2

7
v2 v3 v4
2 7 v1
0 8 3 v2
8 3
0 5
5 0

v3 v4
返回
最短路问题及其算法
一、 基 本 概 念 二、固 定 起 点 的 最 短 路 三、每 对 顶 点 之 间 的 最 短 路
注:假设图为简单图
e1 e2 e3 e4 e5
1 0 0 0 1 v1
M= 1 1 0 1 0 v2

0 0
0 1
1 1
1 0
0 1

v3 v4
对有向图G,其关联矩阵M= (mij ) ,其中:
1 mij 1
0
若vi
是e
的起点
j
若vi
是e
的终点
j
二、 图 的 矩 阵 表 示 1、 关联矩阵
2、 邻接矩阵
返回
图的定义
定义 有序三元组G=(V,E, )称为一个图.
[1] V={v1, v2 ,, vn } 是有穷非空集,称为顶点集,
其中的元素叫图 G 的顶点. [2] E 称为边集,其中的元素叫图 G 的边.
[3] 是从边集 E 到顶点集 V 中的有序或无序的元素
Байду номын сангаасG 的图解如图.
定义 在图 G 中,与 V 中的有序偶(vi, vj)对应的边 e,称为图的有向
边(或弧),而与 V 中顶点的无序偶 vivj 相对应的边 e,称为图 的无向边.每一条边都是无向边 的图,叫无向图 ;每一条边都是 有向边的图,称为有向图;既有无向边又有有向边的图称为混 合图.
相关主题