第二讲 图论基础
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
其中,矩阵B为:
v1
v2
v3
v4 v5 v6 v7 v8 v9
V10 v11 v12 v13 v14 v15 v16 v17 v18
记a(k)ij为Ak中的(i,j)元,目标是使a(k)1,10不等于0的最小的 自然数k. 利用matlab容易计算出k=11,且a(11)1,10 =4,即小船至少11次才 能把所有人全部运到右岸,说明共有4种不同的过河方案。继续计 算可得出a(19)1,10 =45060,如果允许小船过河19次的话,共有 45060中不同的方案。
1, 若vi与v j 关联 aij 无向图: 0, 若vi与v j 不关联
数学建模-图论
二、图的矩阵表示 例3:分别写出右边两图的关联矩阵 解:分别为:
1 0 0 1 1 0 1 1 1 0 0 0 0 0 A 0 1 1 0 1 1 0 0 0 1 1 0 1 1
数学建模-图论
二、图的矩阵表示
邻接矩阵(结点与结点的关系) 关联矩阵(结点与边的关系) 路径矩阵(任意两结点之间是否有路径) 可达性矩阵 直达矩阵 等等……
数学建模-图论
二、图的矩阵表示
1 有向图的邻接矩阵 A = (aij )n×n (n为结点数)
1, vi v j E aij 0, vi v j E
0 0 A 0 1 1 0 1 0 0 1 0 1 1 0 0 0 0 1 1 0 1 0 1 0 0
e
e1
e3
d
e2
b
Байду номын сангаас
e4
c
e5
a
数学建模-图论
二、图的矩阵表示(应用实例及解法分析)
商人过河问题:假如有三个商人各带一名随从要过河,只有一
条船,每次最多只能坐两个人。为安全起见,商人数不能少于随 从数,否则随从会杀人越货。船过一次河需要5分钟,问最短几 分钟能使他们都过去?
例1:写出右图的邻接矩阵: 解:
0 0 A 1 1 1 0 0 0 0 1 0 1 1 0 1 0
数学建模-图论
二、图的矩阵表示
2 有向图的权矩阵A = (aij ) n×n (n为结点数)
F vi v j , aij 0, , vi v j E i j vi v j E
2 V2 6 4 5 4
7
v0
13 10 8
6
v3
4
w(u, v) 。
v8
10
v4 Dijkstra 算法: (1) 令 l (v0 ) 0, l (v) , v v0 ; S 0 v0 , i 0;
v6
9
7
6
v5
v7
V7
(2) 对每个 v Si ,用 minl (v), l (vi ) w(vi , v)代替 l (v) ; 设 vi 1 是使 l (v) 取最小值的 Si 中的顶点( Si 是 Si 的补集) ,令
如果各条边都加上方向,则称为有向图,否则称为无向图。 如果有的边有方向,有的边无方向,则称为混合图。
如果任两顶点间最多有一条边,且每条边的两个端点皆 不重合的图,则称为简单图。
4 2015年8月8日
数学建模-图论
一、图的基本概念 若将图G的每一条边e都对应一个实数F(e), 则称F(e) 为该边的权, 并称图G为赋权图, 记为G = (V, E , F ). 设G = (V, E )是一个图, v0, v1, … , vk∈V, 且 “1≤i≤k, vi-1 vi∈E, 则称v0 v1 … vk是G的一条通路.
v1 v2 v3 v4 v5 v6 v7 v8 v9
G=<V,E>的邻接矩阵为:
0 B A (对称阵) B 0
V10 v11 v12 v13 v14 v15 v16 v17 v18
数学建模-图论
二、图的矩阵表示(应用实例及解法分析)
0 0 0 0 B 0 1 0 1 1 0 0 0 0 1 0 1 1 0 0 0 0 1 1 1 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 1 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
v4
9
7
6
v6
v5
v7
V7
即可以求出 v0 到其余各结点的最短距离。
22
2015年8月8日
数学建模-图论
三、最短路问题及其算法
改进后的 Dijkstra 算法:
改进后的 Dijkstra 算法,可求出任意两顶点间的最短距 离,避免了很多的重复计算,并且提高了效率。另外,还有 一种 Warshall-Floyd 算法求任意两顶点间的最短距离问题也 较简单。改进算法后 Dijkstra 算法的 Matlab 程序如下:
W ( P(v0 , v)) min W ( P) .
P
即从 v0 到 v 的所有轨道长中寻求最小的一个。 W ( P) 是轨道 P 上各边长之和。
17 2015年8月8日
数学建模-图论
三、最短路问题及其算法
注意: 若 u, v V (G) , 当 u, v 不 相 邻 时 , 则
v1 v2
数学建模-图论
二、图的矩阵表示(应用实例及解法分析)
渡河可以理解为上面状态的转移,例如状态v1渡河一次可 以转化为其他状态v15 v17 v18,其他状态也易列出。以V={v1, v2,... v18}为顶点集,当两种状态可以互相转化时,就在相 应的来那个顶点间连一边,从而建立一个二分图G=<V,E>,如 右图所示。
19 2015年8月8日
数学建模-图论
三、最短路问题及其算法 Dijkstra 算法 Matlab 程序如下:
function [d,index1,index2]=Dijkf(a) M=max(max(a)); pb(1:length(a))=0; pb(1)=1; index1=1; % index1 到指定点距离从大到小的排序 index2=ones(1,length(a)); %index2 每个点到指定点最短路径所含边的条数 d(1:length(a))=M; d(1)=0; temp=1; while sum(pb)<length(a) tb=find(pb==0); d(tb)=min(d(tb),d(temp)+a(temp,tb)); tmpb=find(d(tb)==min(d(tb))); temp=tb(tmpb(1)); pb(temp)=1; index1=[index1,temp]; index=index1(find(d(index1)==d(temp)-a(temp,index1))); if length(index)>=2 index=index(1); end index2(temp)=index; end
20 2015年8月8日
数学建模-图论
三、最短路问题及其算法
上述例题的 Matlab 程序如下:
clear M=100000; a(1,:)=[0,7,M,6,10,10,13,8,M]; a(2,:)=[zeros(1,2),2,M,M,M,M,M,6]; a(3,:)=[zeros(1,3),M,5,M,M,M,4]; a(4,:)=[zeros(1,4),M,M,M,4,M]; a(5,:)=[zeros(1,5),M,9,M,4]; a(6,:)=[zeros(1,6),7,6,M]; a(7,:)=[zeros(1,7),M,M]; a(8,:)=[zeros(1,8),M]; a(9,:)=zeros(1,9); a=a+a'; [d index1 index2]=Dijkf(a); d
例2:写出右图的权矩阵: 解:
0 6 8 0 7 A 3 0 2 4 5 0
数学建模-图论
二、图的矩阵表示 3 有向图的关联矩阵A =(aij )n×m (n为结点数m为边数)
有向图:
1, 若vi是ei的始点 aij 1, 若vi是ei的终点 0, 若v 与e 不关联 i i
如果通路中没有相同的顶点, 则称此通路为路径, 简称 路. 始点和终点相同的路称为圈或回路.
数学建模-图论
一、图的基本概念 顶点u与v称为连通的,如果存在u到v通路,任二顶 点都连通的图称为连通图,否则,称为非连通图。极大 连通子图称为连通分图。 连通而无圈的图称为树, 常用T 表示树. 树中最长路的边数称为树的高,度数为1的顶点 称为树叶。其余的顶点称为分枝点。树的边称为树 枝。 设G是有向图,如果G的底图是树,则称G是 有向树,也简称树。
数学建模-图论
2、应用实例:最短路问题 三、最短路问题及其算法 设有给定连接若干城市的公路网,寻求从指定城 市到各城市的最短路线。
问题的数学模型:
设任一城市为图的一个顶点 v ,连接任意两个城 市的公路为图的边,记为 e , w(e) 为图的边 e 之长。 对任意的 v V (G) ,寻求轨道 P(v0 , v) ,使得
数学建模-图论
三、最短路问题及其算法 若将图G的每一条边e都对应一个实数F(e), 则称F(e) 为该边的权, 并称图G为赋权图, 记为G = (V, E , F ). 设G = (V, E )是一个图, v0, v1, … , vk∈V, 且 “1≤i≤k, vi-1 vi∈E, 则称v0 v1 … vk是G的一条通路. 如果通路中没有相同的顶点, 则称此通路为路径,简称路.
用邻接矩阵来解决:设(m,n,l)表示左岸商人m人,随从n人;设 (m,n,r)表示右岸有商人m人,随从n人。从左岸到右岸去,所有可 能的状态为: v1=(3,3,l), v2=(3,2,l), v3=(3,1,l), v4=(3,0, l), v5=(2,2,l), v6=(1,1,l), v7=(0,3,l), v8=(0,2,l), v9=(0,1,l), v10=(3,3,r), v11=(3,2,r), v12=(3,1,r), v13=(3,0,r), v14=(2,2,r), v15=(1,1,r), v16=(0,3,r), v17=(0,2,r), v18=(0,1,r).
Si 1 Si vi 1 (i 0,1,2,);
18
2015年8月8日
数学建模-图论
三、最短路问题及其算法
(3) 若 i V (G) 1 , 则停止; 若 i V (G) 1, 令 i i 1转 (2) ;
算法结束时,从 v0 到各顶点 v 的距离由 v 的最后一次的 标号 l (v) 给出,在 v 进入 Si 之前的标号 l (v) 叫 T 标号, v 进 入 Si 时的标号 l (v) 叫 P 标号,算法就是不断修改各个点的 T 标号,直至获得 P 标号。若在算法运行过程中,将每一顶点 获得 P 标号所由来的边在图上标明,则当算法结束时, v0 至 各个点的最短路也在图上标示出来了。
21
2015年8月8日
数学建模-图论
三、最短路问题及其算法
运行结果如下:
d= 0 index1 = 1 index2 = 1 1 2 1 1 1 1 1 2 4 2 8 3 5 6 7 9 7 9 6 10 10 13 8 13
v1 v2
2 V2 6 4 5 4
7
v0
13 10 8
6
v3
4
v8
10
第二讲:图论模型
7月30日
图论基础专题(老内容)
一 二
三 四
图的基本概念
图的矩阵表示 最短路问题及其算法 最小生成树问题
新内容
欧拉图与哈密顿图 匹配问题 网络流 图的染色
数学建模-图论
一、图的基本概念
假设平面上的 n 个点,把其中的一些点对用曲线或直 线连接起来,不考虑点的位置与连线曲直长短,形成的一 个关系结构称为一个图。 记 G V (G), E (G) , V V (G) 是顶点集, E E (G) 是边集。
对于赋权图,路的长度(即路的权)通常指路上所有边 的权之和。
最短路问题:求赋权图上指定点之间的权最小的路。
数学建模-图论
三、最短路问题及其算法
重要性质:
若v0 v1 … vm 是G 中从v0到vm的最短路, 则 对1≤k≤m, v0v1 … vk 必为G 中从v0到vk的 最短路. 即:最短路是一条路,且最短路的任一段 也是最短路。