【数学建模与MATLAB】第8讲 最短路线问题
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
( d ij2) 是从 v i 到 v j 的只允许以 v 1 、 v 2 作为中间点的路径中最短路的长度.
…
( ( ( )D(ν)= (d ij ) ) ,其中 dij ) min{ ij 1) , di( 1) d(j 1) } d(
( d ij ) 是从 v i 到 v j 的只允许以 v 1、 v 2、…、 v 作为中间点的路径中最短路 的长度.即是从 v i 到 v j 中间可插入任何顶点的路径中最短路的长,因此
规定用记号 和 分别表示图的顶点数和边数.
常用术语: (1)端点相同的边称为环. (2)若一对顶点之间有两条以上的边联结,则这些边称为重边. (3)有边联结的两个顶点称为相邻的顶点,有一个公共端点的边 称为相邻的边. (4)边和它的端点称为互相关联的. (5)既没有环也没有平行边的图,称为简单图. (6)任意两顶点都相邻的简单图,称为完备图,记为 Kn,其中 n 为顶点的数目. ( 7)若 V=X Y,X Y= ,且 X 中任两顶点不相邻,Y 中任两顶 点不相邻,则称 G 为二元图;若 X 中每一顶点皆与 Y 中一切顶点 相邻,则 G 称为完备二元图,记为 Km,n,其中 m,n 分别为 X 与 Y 的顶 点数目.
设 G 为赋权有向图或无向图,G 边上的权均非负.
对每个顶点,定义两个标记( l (v) , z(v ) ) ,其中:
l (v) :表从顶点 u0 到 v 的一条路的权. z(v ) :v 的父亲点,用以确定最短路的路线
算法的过程就是在每一步改进这两个标记,使最终 l (v) 为从顶点
u0 到 v 的最短路的权.
对有向赋权图G,其邻接矩阵 A (aij ) ,其中:
wij aij 0
若(vi , v j ) E, 且wij为其权 若i j 若(vi , v j ) E
无向赋权图的邻接矩阵可类似定义.
v1 v 2 0 2 A= 2 0 8 7 3
定义2 (1)任意两点均有路径的图称为连通图. (2)起点与终点重合的路径称为圈. (3)连通而无圈的图称为树.
定义3 (1)设 P(u , v) 是赋权图 G 中从 u 到 v 的路径, 则称 w( P)
eE ( P )
w(e) 为路径 P 的权.
(2)
在赋权图 G 中,从顶点 u 到顶点 v 的具有最小权的路
3.子图
二、 图 的 矩 阵 表 示
1. 关联矩阵
2. 邻接矩阵
返回
图的定义
定义 有序三元组G=(V,E, )称为一个图,如果:
[1] V= {v1 , v2 ,, vn } 是有限非空集,V 称为顶点集, 其中的元素叫图 G 的顶点. [2] E 称为边集,其中的元素叫图 G 的边. [3] 是从边集 E 到顶点集 V 中的有序或无序的元素 偶对构成集合的映射,称为关联函数. 例1 设 G=(V,E, ),其中
w (v0 e1v1e2 vk 1ek vk ) 称为一条从 v0 到 vk 的通路,记为 Wv0vk
(2)边不重复但顶点可重复的通路称为道路,记为 Tv0vk (3)边与顶点均不重复的通路称为路径,记为 Pv 0 v k
通路 W v1v4 v1 e 4 v 4 e5 v 2 e1 v1 e 4 v 4 道路 Tv1v4 v1 e1 v 2 e5 v 4 e 6 v 2 e 2 v 3 e3 v 4 路径 Pv1v4 v1 e1 v 2 e5 v 4
S:具有永久标号的顶点集
输入: G 的带权邻接矩阵 w(u , v)
算法步骤:
(1)赋初值:令 S={ u0 }, l ( u0 ) =0
v S V \ S ,令 l (v) = W (u0 , v ) , z(v ) = u0 u u0 (2)更新 l (v) 、z(v ) : v S V \ S ,若 (v) > l (u) W (u, v ) l 则令l (v) = l (u) W (u, v ) ,z(v ) u=
P (u, v) ,称为 u 到 v 的最短路.
返回
固 定 起 点 的 最 短 路
最短路是一条路径,且最短路的任一段也是最短路. 假设在u0-v0的最短路中只取一条,则从u0到其 余顶点的最短路将构成一棵以u0为根的树.
因此, 可采用树生长的过程来求指定顶点到其余顶点 的最短路.
Dijkstra 算法:求 G 中从顶点 u0 到其余顶点的最短路.
l (ui )
u1
0 0
u2
2 2
u3
1
u4
8 8 8 8 7
u5
3
u6
6
u7
10 10 10 10 9
u8
12 12 12 12 12 u5
l (v) z (v)
0
2
1
u1
u1
u1
7 u6
3 u2
6 u5
9 u4
l (ui )
u1
最后标记:
d (v4 ) 4
d (v4 ) 2 d (v4 ) 3 d (v4 ) 5
定理1
vV (G )
d (v) 2 (G)
推论1 任何图中奇次顶点的总数必为偶数.
例 在一次聚会中,认识奇数个人的人数一定是偶数.
返回
子图
定义 设图 G=(V,E, ),G1=(V1,E1, 1 )
注:假设图为简单图
v4 v1 v2 v 3 v 4
v1 v2 v3 0 1 0 1 A= 1 0 1 1 0 1 0 1 1 1 1 0
对有向图G=(V,E) ,其邻接矩阵 A (aij ) ,其中:
aij 1 0
若(vi,v j) E 若(vi,v j) E
数学建模与数学实验 最短路问题
实验目的
1.了解最短路的算法及其应用 2.会用MATLAB软件求最短路
实验内容
1.图 论 的 基 本 概 念
2.最 短 路 问 题 及 其 算 法
3.最 短 路 的 应 用
4.建模案例:最优截断切割问题
5.实验作业
图论的基本概念
一、 图 的 概 念 1.图的定义 2.顶点的次数
G
G[{v1,v4,v5}]
G[{e1,e2,e3}]
返回
关联矩阵
对无向图G,其关联矩阵M= (mij ) ,其中:
1 mij 0
若vi与e j 相关联 若vi与e j不关联 e1 e2 1 0 M= 1 1 0 0 0 1
注:假设图为简单图
e3 e4 e5 0 0 1 v1 0 1 0 v2 1 1 0 v3 1 0 1 v4
(3) 设 v 是使 l (v) 取最小值的 S 中的顶点,则令 S=S∪{ v },
* *
u v*
(4) 若S φ ,转 2,否则,停止.
用上述算法求出的 l (v) 就是 u0 到 v 的最短路的权,从 v 的父亲标记
z (v) 追溯到 u0 , 就得到 u0 到 v 的最短路的路线.
例 求下图从顶点 u 1 到其余顶点的最短路. TO MATLAB(road1)
(或弧) 而与 V 中顶点的无序偶 vivj 相对应的边 e , , 称为图的无 向边.每一条边都是无向边的图,叫无向图;每一条边都是有向 边的图,称为有向图;既有无向边又有有向边的图称为混合图.
定义 若将图 G 的每一条边 e 都对应一个实数 w ( e ),则称 w ( e )为边的
权,并称图 G 为赋权图.
D(ν)即是距离矩阵.
返回
算法原理—— 求路径矩阵的方法
在建立距离矩阵的同时可建立路径矩阵R.
R= (rij ) , rij 的含义是从 v i 到 v j 的最短路要经过点号为 rij 的点.
R(0) (rij(0) ) , rij(0) j
每求得一个 D(k)时,按下列方式产生相应的新的 R(k)
(k ) ij
r
k r ( k 1) ij
( ( ( 若d ijk 1) d ikk 1) d kjk 1) 否则
即当 v k被插入任何两点间的最 短路径时,被记录在R(k)中,依 次求 D( ) 时求得 R( ) ,可由 R( )来查 找任何点对之间最短路的路径.
先写出带权邻接矩阵:
0 2 1 8 0 6 1 0 7 9 0 5 1 2 W 0 3 0 4 0
9 6 3 0
因 G 是无向图,故 W 是对称矩阵.
迭代 次数 1 2 3 4 5 6 7 8 最后标记:
对有向图G,其关联矩阵M= (mij ) ,其中:
1 mij 1源自文库0
若vi 是e j的起点 若vi 是e j的终点 若vi 与e j 不关联
返回
邻接矩阵
对无向图G,其邻接矩阵 A (aij ) ,其中:
aij 1 0
若vi 与v j 相邻 若vi 与v j 不相邻
算法的基本思想
直接在图的带权邻接矩阵中用插入顶点的方法 依次构造出 个矩阵 D(1)、 D(2)、… 、D( ),使最 后得到的矩阵 D( )成为图的距离矩阵,同时也求出 插入点矩阵以便得到两点间的最短路径.
返回
算法原理—— 求距离矩阵的方法
( 把带权邻接矩阵 W 作为距离矩阵的初值,即 D(0)= (d ij0) ) =W
( ( (1)D(1)= (d ij1) ) ,其中 dij1) min{ ij0) , di(10) d1( 0) } d( j
( d ij1) 是从 v i 到 v j 的只允许以 v 1 作为中间点的路径中最短路的长度.
( 1 ( ( (2)D(2)= (d ij2) ) ,其中 d ij2) min{ ij1) , d i(2) d 21j) } d(
u2
2
u3
1
u4
7 u6
u5
3 u2
u6
6 u5
u7
9 u4
u8
12 u5
l (v) z (v)
0
u1
u1
u1
u2
u5
u1
u4
u6
u8
返回
u3
u7
每 对 顶 点 之 间 的 最 短 路
(一)算法的基本思想
(二)算法原理
1.求距离矩阵的方法
2.求路径矩阵的方法
3.查找最短路路径的方法
(三)算法步骤
返回
(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]. (3)设 E1 E,且 E1 ,以 E1 为边集,E1 的端点集为顶点集的图 G 的子图, 称为 G 的由 E1 导出的子图,记为 G[E1].
(e1 ) v1v2 , (e2 ) v1v3 , (e3 ) v1v4 , (e4 ) v1v4 , (e5 ) v4v4 .
G 的图解如图
V={v1 ,v2 , v3 , v4}, E={e1, e2 , e3, e4, e5},
定义 在图 G 中, V 中的有序偶(vi, vj)对应的边 e , 与 称为图的有向边
返回
顶点的次数
定义 (1)在无向图中,与顶点 v 关联的边的数目(环算两次)称 为 v 的次数,记为 d (v) . (2)在有向图中,从顶点 v 引出的边的数目称为 v 的出度, 记为 d + (v) ,从顶点 v 引入的边的数目称为 v 的入度,记为 d - (v) ,
d (v) = d +(v) + d -(v) 称为 v 的次数.
v3 v 4 7 v1 8 3 v2 0 5 v3 5 0 v4
返回
最短路问题及其算法
一、 基 本 概 念 二、固 定 起 点 的 最 短 路 三、每 对 顶 点 之 间 的 最 短 路
返回
基 本 概 念
定义1 在无向图 G=(V,E, )中: (1)顶点与边相互交错且 (ei ) vi 1vi (i=1,2,…,k)的有限非空序列