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