MATLAB编程:最短路问题

相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

定 义 3 ( 1 ) 设 P (u ,v)是 赋 权 图 G 中 从 u 到 v 的 路 径 , 则 称 w(P)
e E ( P )
w (e) 为 路 径
P 的权.
(2 )
在赋权图 G 中,从顶点 u 到顶点 v 的具有最小权的路
P (u , v ) , 称 为 u 到 v 的 最 短 路 .
返回
顶点的次数
定义 (1)在无向图中,与顶点 v 关联的边的 数目(环 算两次) 称 为 v 的 次 数 , 记 为 d (v). (2)在有向图中,从顶点 v 引出的边的数目称为 v 的出度, 记 为 d + ( v), 从 顶 点 v 引 入 的 边 的 数 目 称 为 的 入 度 , 记 为 d - (v), d ( v)= d + ( v)+ d - ( v) 称 为 v 的 次 数 .
a ij
w ij 0
若 ( v i , v j ) E , 且 w ij 为其权 若i j 若 (v i , v j ) E
无向赋权图 的邻接矩 阵可类似 定义.
v1 0 A= 2 7
v2 2 0 8 3
v3 8 0 5
v4 7 v1 3 v2 5 v3 0 v4
(e )= (e ),则 称 G 1 是 G 的 子 图 .
V , E (1 ) 若 V 1 1
(2)
E ,且 当 e E 1 时 , 1
特 别 的 , 若 V 1= V , 则 G 1 称 为 G 的 生 成 子 图 .
设 V 1 V , 且 V 1 , 以 V 1 为 顶 点 集 、 两 个 端 点 都 在 V 1 中 的
8 7



10 10
6 10 12 10 12 9 12 12
z (v )
0
2
u1
u1
u1
1 u 7 6
u2
3
u5
6
u4
9
u 5 12
l (u i ) u u 1 2
最后标记:
u 3
1
u 4 7
u6
u5 3
G 的图解如图.
定义
在 图 G 中 , 与 V 中 的 有 序 偶 (v i, v j )对 应 的 边 e , 称 为 图 的 有 向 边 ( 或 弧 ) 而 与 V 中 顶 点 的 无 序 偶 v iv j 相 对 应 的 边 e , 称 为 图 , 的 无 向 边 .每 一 条 边 都 是 无 向 边 的 图 , 叫 无 向 图 ; 每 一 条 边 都 是 有向边的图,称为有向图;既有无向边又有有向边的图称为 混 合图.
w ( v 0 e 1 v 1 e 2 v k 1 e k v k ) 称 为 一 条 从v 0 到v k 的 通 路 , 记 为W v 0 v k
( 2 ) 边 不 重 复 但 顶 点 可 重 复 的 通 路 称 为 道 路 , 记 为T v 0 v k ( 3 ) 边 与 顶 点 均 不 重 复 的 通 路 称 为 路 径 , 记 为 Pv 0 v k
G
G[{v 1 ,v 4 ,v 5 }]
G[{e 1 ,e 2 ,e 3 }]
返回
关联矩阵
对 无 向 图 G , 其 关 联 矩 阵 M = ( m ij ) , 其 中 :
m ij
1 0
若 v i 与 e j 相关联 若 v i 与 e j 不关联
e1 1 M= 1 0 0 e2 0 1 0 1 e3 0 0 1 1
对 每 个 顶 点 , 定 义 两 个 标 记 ( l ( v ) ,z ( v ) ) 其 中 : ,
l (v ) : 表 从 顶 点 u0 到 v 的 一 条 路 的 权 . z(v ) : v 的 父 亲 点 , 用 以 确 定 最 短 路 的 路 线
算 法 的 过 程 就 是 在 每 一 步 改 进 这 两 个 标 记 , 使 最 终l(v ) 为 从 顶 点 u0 到 v 的 最 短 路 的 权 .
例1 设 G = ( V,E, ) , 其 中 V= { v 1 ,v 2 , v 3 , v 4 } , E= { e 1 , e2 , e 3 , e 4, e5 } ,
[1 ] V = { v 1 , v 2 , , v n } 是 有 穷 非 空 集 , 称 为 顶 点 集 ,
( e1 ) v 1 v 2 , ( e 2 ) v 1 v 3 , ( e 3 ) v 1 v 4 , ( e 4 ) v 1 v 4 , ( e 5 ) v 3 v 3 .
*
返回
固 定 起 点 的 最 短 路
最短路是一条路径,且最短路的任一段也是最短路. 假设在u0-v0的最短路中只取一条,则从u0到其 余顶点的最短路将构成一棵以u0为根的树.
因此, 可采用树生长的过程来求指定顶点到其余顶点 的最短路.
Dijkstra 算 法 : 求 G 中 从 顶 点 u 0 到 其 余 顶 点 的 最 短 路 设 G 为赋权有 向图或无 向图, G 边上的 权均非负 .
d

d (v4 ) 4
(v4 ) 2 (v4 ) 3
d
d (v4 ) 5
定理1
v V ( G )
d ( v ) 2 (G )
推论1 任何图中奇次顶点的总数 必为偶数 .
例 在一次聚会中,认识奇数个人的人数一定是偶数。
返回
子图
定 义 设 图 G= (V,E , ),G 1 = (V 1 ,E 1 1, )
因 G 是无向图,故 W 是对称阵.
迭代 次数 1 2 3 4 5 6 7 8 最v ) 标 记 : l( 后
l (u i )
u u u 1 2 3

u 4
u5
u 6
u 7

u8
0 2 1 8 2 8 8 3
*
中 的 顶 点 , 则 令 S = S ∪ {v
*
},
u v*
( 4) 若S φ , 转 2, 否 则 , 停 止 .
u 用 上 述 算 法 求 出 的 l(v ) 就 是0 u 记 z ( v ) 追 溯 到u 0 , 就 得 到 0
到 v 的 最 短 路 的 权 , 从v 的 父 亲 标
通路 Wv
1v 4
v 1 e 4 v 4 e 5 v 2 e1 v 1 e 4 v 4
道 路 T v1 v 4 v 1 e 1 v 2 e 5 v 4 e 6 v 2 e 2 v 3 e 3 v 4 路 径 Pv1 v 4 v 1 e 1 v 2 e 5 v 4
定义2 (1)任意两点均有路径的图称为连通图. (2)起点与终点重合的路径称为圈. (3)连通而无圈的图称为树.
返回
邻接矩阵
对 无 向 图 G , 其 邻 接 矩 阵 A ( a ij ) , 其 中 :
a ij
1 0
若 v i 与 v j 相邻 若 v i 与 v j 不相邻
v1 A= 0 1 0 1 v2 1 0 1 1 0 1 0 1
注:假设图为简单图
返回
最短路问题及其算法
一、 基 本 概 念 二、固 定 起 点 的 最 短 路 三、每 对 顶 点 之 间 的 最 短 路
返回
基 本 概 念
定 义 1 在 无 向 图 G= (V,E , )中 : ( 1 ) 顶 点 与 边 相 互 交 错 且 ( e i ) v i 1 v i (i= 1 ,2 ,… k )的 有 限 非 空 序 列
v3 v4 1 v1 1 v2 1 v3 0 v4
对 有 向 图 G = ( V , E ) 其 邻 接 矩 阵 A ( a ij ) , 其 中 : ,
a ij
1 0
若( v i, v j) E 若( v i, v j) E
对 有 向 赋 权 图 G , 其 邻 接 矩 阵 A ( a ij ) , 其 中 :
数学建模与数学实验 最短路问题
后勤工程学院数学教研室
实验目的
1、了解最短路的算法及其应用 2、会用Matlab软件求最短路
实验内容
1、图 论 的 基 本 概 念
2、最 短 路 问 题 及 其 算 法
3、最 短 路 的 应 用
4、建模案例:最优截断切割问题
5、实验作业
图论的基本概念
一、 图 的 概 念 1、图的定义 2、顶点的次数
( 2 ) 更 新 l ( v ) 、 z ( v ) : v S V \ S ,若 l ( v ) > l ( u ) W ( u , v )
z 则 令 l(v ) = l(u ) W (u , v ) , (v ) = u
( 3) 设 v 是 使 l(v ) 取 最 小 值 的 S
图 G 的 边 为 边 集 的 图 G 的 子 图 , 称 为 G 的 由 V 1 导 出 的 子 图 , 记 为 G[V 1 ]. (3)设 E 1 E ,且 E 1 ,以 E 1 为 边 集 ,E 1 的 端 点 集 为 顶 点 集 的 图 G 的 子 图 , 称 为 G 的 由 E 1 导 出 的 子 图 ,记 为 G[E 1 ].
定义
若 将 图 G 的 每 一 条 边 e 都 对 应 一 个 实 数 w (e ), 称 w (e)为 边 的 权 , 并称图 G 为赋权图.
规 定 用 记 号 和 分 别 表 示 图 的 顶 点 数 和 边 数 .
常用术语: (1)端点相同的边称为环. (2)若一对顶点之间有两条以上的边联结,则这些边称为重边. (3)有边联结的两个顶点称为相邻的顶点,有一个公共端点的边 称为相邻的边 . (4)边和它的端点称为互相关联的. (5)既没有环也没有平行边的图,称为简单图. ( 6 ) 任 意 两 顶 点 都 相 邻 的 简 单 图 , 称 为 完 备 图 , 记 为 K n, 其 中 n 为顶点的数目. ( 7 )若 V = X Y , X Y = , X 中 任 两 顶 点 不 相 邻 , Y 中 任 两 顶 点不相邻,称 G 为二元图;若 X 中每一顶点皆与 Y 中一切顶点 相 邻 , 称 为 完 备 二 元 图 , 记 为 K m, n, 其 中 m ,n 分 别 为 X 与 Y 的 顶 点数目.
u2
u 6
6
u5
3、子图
二、 图 的 矩 阵 表 示
1、 关联矩阵
2、 邻接矩阵
返回
图的定义
定义 有序三元组G=(V,E, )称为一个图.
其中的元素叫图 G 的顶点. [2 ] E 称 为 边 集 , 其 中 的 元 素 叫 图 G 的 边 . [3 ] 是 从 边 集 E 到 顶 点 集 V 中 的 有 序 或 无 序 的 元 素 偶对的集合的映射,称为关联函数.
到v 的 最 短 路 的 路 线 .

求下图从顶点 u 1 到其余顶点的最短路.
TO MATLAB (road1)
先写出带权邻接矩阵:
0 W
2 0
1 0
8 6 7 0
1 5 0
1 3 0
9 2 4 0
9 6 3 0
注:假设图为简单图
e4 0 1 1 0 e5 1 v1 0 v2 0 v3 1 v4
对 有 向 图 G , 其 关 联 矩 阵 M = ( m ij ) , 其 中 :
ห้องสมุดไป่ตู้
m ij
1 1 0
若 v i 是 e j 的起点 若 v i 是 e j 的终点 若 v i 与 e j 不关联
S: 具 有 永 久 标 号 的 顶 点 集
输 入 : G 的 带 权 邻 接 矩 阵 w (u , v )
算法步骤:
( 1 ) 赋 初 值 : 令 S= { u 0 }, l ( u 0 ) =0
v S V \ S ,令 l ( v ) =W ( u 0 , v ) ,z ( v ) = u 0 u u 0
相关文档
最新文档