当前位置:文档之家› 第6讲 matlab数学建模最短路问题

第6讲 matlab数学建模最短路问题

返回
基本概念
定义1 在无向图 G=(V,E, )中: (1)顶点与边相互交错且(ei ) vi1vi (i=1,2,…k)的有限非空序列 w (v0e1v1e2 vk1ek vk ) 称为一条从v0 到vk 的通路,记为Wv0vk (2)边不重复但顶点可重复的通路称为道路,记为Tv0vk (3)边与顶点均不重复的通路称为路径,记为Pv0 vk
7 10 12
9 12
12
最l(v后) 标记: z (v)
02
u1 u1
1
u1
u
7
6
u2 3 u5 6 u49 u152
l(ui )
u1 u2 u3 u4 u5 u6 u7 u8
最后标记:
l(v)
02
17
3
6 9 12
z (v)
u1 u1
u1 u6
u2
u5
p2
r,
( ) ip 2
p3 ,…,rip(k )
pk
(2) 向点
j
追朔得:
r ( ) p1 j
q1
r,
( ) q1 j
q2
,…,
r ( qm
) j
j
则由点i到j的最短路的路径为: i, pk , , p2 , p1,q1, q2 , , qm , j
i
pk
p3 p2 p1
q1
q2
qm
j
返回
算法步骤
因此, 可采用树生长的过程来求指定顶点到其余顶点 的最短路.
Dijkstra 算法:求 G 中从顶点 u0 到其余顶点的最短路 设 G 为赋权有向图或无向图,G 边上的权均非负.
对每个顶点,定义两个标记(l(v) ,z(v) ),其中: l(v) :表从顶点 u0 到 v 的一条路的权. z(v) :v 的父亲点,用以确定最短路的路线
0 4 6
0
3 0
因 G 是无向图,故 W 是对称阵.
迭代 次数
1 2 3 4 5 6 7 8
l(ui )
u1 u2 u3 u4 u5 u6 u7 u8

0 2 1 8
2
8
8
3
10
10
8
6 10 12
通路Wv1v4 v1e4v4e5v2e1v1e4v4 道路 Tv1v4 v1e1v2e5v4e6v2e2v3e3v4 路径 Pv1v4 v1e1v2e5v4
定义2 (1)任意两点均有路径的图称为连通图. (2)起点与终点重合的路径称为圈. (3)连通而无圈的图称为树.
定义3 (1)设 P(u,v)是赋权图 G 中从 u 到 v 的路径,
特别的,若 V1=V,则 G1 称为 G 的生成子图.
(e),则称 G1 是 G 的子图.
(2) 设 V1 V,且 V1 ,以 V1 为顶点集、两个端点都在 V1 中的
图 G 的边为边集的图 G 的子图,称为 G 的由 V1 导出的子图,记为 G[V1].
(3)设 E1 E,且 E1 ,以 E1 为边集,E1 的端点集为顶点集的图 G 的子图,
)
min{
d
( ij
1)
,
d
( i
1)
d(j 1) }
d
( ij
)
是从
vi

vj
的只允许以
v1、v2、…、v
作为中间点的路径中最短路
的长度.即是从 vi 到 vj 中间可插入任何顶点的路径中最短路的长,因此
D( )即是距离矩阵.
返回
算法原理—— 求路径矩阵的方法
在建立距离矩阵的同时可建立路径矩阵R.
为顶点的数目.
( 7)若 V=X Y,X Y= ,X 中任两顶点不相邻,Y 中任两顶
点不相邻,称 G 为二元图;若 X 中每一顶点皆与 Y 中一切顶点 相邻,称为完备二元图,记为 Km,n,其中 m,n 分别为 X 与 Y 的顶 点数目.
返回
顶点的次数
定义 (1)在无向图中,与顶点 v 关联的边的数目(环算两次) 称为 v 的次数,记为 d(v). (2)在有向图中,从顶点 v 引出的边的数目称为 v 的出度, 记为 d+(v),从顶点 v 引入的边的数目称为的入度,记为 d-(v), d(v)=d+(v)+d-(v)称为 v 的次数.
数学建模与数学实验 最短路问题
后勤工程学院数学教研室
实验目的 1、了解最短路的算法及其应用
2、会用Matlab软件求最短路
实验内容
1、图 论 的 基 本 概 念 2、最 短 路 问 题 及 其 算 法 3、最小生成树问题及其算法
4、最 短 路 的 应 用
5、建模案例:最优截断切割问题
6、实验作业
图论的基本概念
算法的过程就是在每一步改进这两个标记,使最 终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
即当vk被插入任何两点间的最短 路径时,被记录在R(k)中,依次 求 D时() 求得 ,R() 可由 来R() 查找 任何点对之间最短路的路径.
返回
算法原理—— 查找最短路路径的方法
若rij( ) p1 ,则点 p1 是点 i 到点 j 的最短路的中间点.
然后用同样的方法再分头查找.若:
(1)向点 i 追朔得:rip(1 )
u4
u5
u2
u5
u1
u4
u3
u6 u7
u8
返回
每对顶点之间的最短路
(一)算法的基本思想 (二)算法原理
1、求距离矩阵的方法 2、求路径矩阵的方法 3、查找最短路路径的方法 (三)算法步骤
返回
算法的基本思想
直接在图的带权邻接矩阵中用插入顶点的方法
依次构造出 个矩阵 最后得到的矩阵 D(
D(1)、 D(2)、… 、D( ),使
d (v4 ) 4
d (v4 ) 2 d (v4 ) 3 d (v4 ) 5
定理1 d(v) 2(G) vV (G)
推论1 任何图中奇次顶点的总数必为偶数.
例 在一次聚会中,认识奇数个人的人数一定是偶数。
返回
子图
定义 设图 G=(V,E, ),G1=(V1,E1, 1 ) (1) 若 V1 V,E1 E,且当 e E1 时,1 (e)=
(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,否则,停止.
则称w(P) w(e) 为路径 P 的权. eE ( P)
(2) 在赋权图 G 中,从顶点 u 到顶点 v 的具有最小权的路
P* (u, v) ,称为 u 到 v 的最短路.
返回
固定起点的最短路
最短路是一条路径,且最短路的任一段也是最短路. 假设在u0-v0的最短路中只取一条,则从u0到其 余顶点的最短路将构成一棵以u0为根的树.
用上述算法求出的l(v) 就是u0 到v 的最短路的权,从v 的父亲标 记 z(v) 追溯到u0 , 就得到u0 到v 的最短路的路线.
例 求下图从顶点 u1 到其余顶点的最短路. TO MATLAB(road1)
先写出带权邻接矩阵:
0
2 0
1
0
8 6
7
1
9
W
0 5 1 2 0 3 9
[3] 是从边集 E 到顶点集 V 中的有序或无序的元素
偶对的集合的映射,称为关联函数. 例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 .
一、 图 的 概 念 1、图的定义 2、顶点的次数 3、子图
二、 图 的 矩 阵 表 示 1、 关联矩阵
2、 邻接矩阵
返回
图的定义
定义 有序三元组G=(V,E, )称为一个图.
[1] V={v1, v2 , , vn } 是有穷非空集,称为顶点集,
其中的元素叫图 G 的顶点. [2] E 称为边集,其中的元素叫图 G 的边.
wij aij 0
若(vi , v j ) E,且wij为其权 若i j
若(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
返回
最短路问题及其算法
一、 基 本 概 念 二、固 定 起 点 的 最 短 路 三、每 对 顶 点 之 间 的 最 短 路
称为 G 的由 E1 导出的子图,记为 G[E1].
G
G[{v1,v4,v5}]
G[{e1,e2,e3}] 返回
关联矩阵
对无向图G,其关联矩阵M= (mij ) ,其中:
mij 10
若vi与e j相关联 若vi与e j不关联
注:假设图为简单图
e1 e2 e3 e4 e5
1 0 0 0 1 v1
(3) 若 k= ,停止.否则 k k+1,转(2).
例 求下图中加权图的任意两点间的距离与路径.
相关主题