[高等教育]图论方法建模

合集下载

图论算法总结及图论建模

图论算法总结及图论建模

算法演示
算法演示
算法演示
算法演示
完整代码
void tarjan(int i) { int j; DFN[i]=LOW[i]=++Dindex; instack[i]=true; Stap[++Stop]=i; for (edge *e=V[i];e;e=e->next) { j=e->t; if (!DFN[j]) { tarjan(j); if (LOW[j]<LOW[i]) LOW[i]=LOW[j]; } else if (instack[j] && DFN[j]<LOW[i]) LOW[i]=DFN[j]; }


路径和圈

一条路径(path)是一个结点序列, 路上的相邻结点在图上是邻接的 如果结点和边都不重复出现, 则称为简单路径(simple path). 如果 除了起点和终点相同外没有重复顶点和边, 称为圈(cycle). 不相交路(disjoint path)表示没有除了起点和终点没有公共点的路. 更严格地

V*V的二维数组A,A[i][j]=0,若(i,j)不相连,A[i][j]=1,若(i,j)相连

图1

图1的邻接矩阵表示
邻接矩阵

无向图的邻接矩阵是对称的 优点:查找/删除某条边是O(1)的 缺点
遍历某一点的邻居是O(V)的 • 空间复杂度很大,O(V*V)

邻接表

每个结点的邻居形成一个链表


判断后代关系可以借助定理1
边分类算法

当(u, v)第一次被遍历, 考虑v的颜色
白色, (u,v)为T边 • 灰色, (u,v)为B边 (只有它的祖先是灰色) • 黑色: (u,v)为F边或C边. 此时需要进一步判断

图论模型的构建

图论模型的构建
为此,我们必须寻找解决问题的更好途径。
【方形柱体堆砌问题分析】
对符合要求的方形柱体来讲,交换任意两个正 方体的上下位置,得到的方形柱体仍是符合要求的, 即它的4个侧面都有4种颜色。它的每一对对面由4 个正方体各一个对面组成,因此问题的要素是4个正 方体各3个对面的颜色的构成,于是从每个对面的着 色考虑。用字母b,g,r,y分别表示蓝、绿、红、黄4种 颜色,并作为图的4个 顶点,4个正方体的各三个对 面依各对面的颜色连以边,并分别标以e1、e2、e3、 e4,比如第一个正方体有一对面着蓝、黄两色,则 从顶点b到y引一条边标以e1,另两对面为红对红、红 对绿,故联结r,e和r,g,均标以 e1。同样地根据第二、 三、四正方体的各对面着色分别连以边并分别标以 e2 、e3、e4。则得图G,如图1—3所示。
si<si+p
(0≤i≤n-p)
si+q<si
(0≤i≤n-q)
【奇怪的数列分析】
下面,我们把每个si抽象成一个点,则根据上述两个不 等式可以建立一个有向图,图中共有n+1个顶点,分别 为s0,s1,……,sn。若si>sj(0≤i,j≤n),则从si往sj 引出一条有向边。例如对于n=6,p=5,q=3的情况, 我们可以建立图4
begin
if i+p<=n then begin
g[i+p,i]=1;
d[i]=d[i]+1;
end;
if i+q<=n then begin
g[i,i+q]=1;
d[i+q]=d[i+q]+1;
end;
end;
【奇怪的数列分析】
显然,按照上面的定义,如果建立的图可以拓扑排序,其 顶点的拓扑序列可以对应满足条件的整数数列;反之,不 存在这样的整数数列。 算法框架为:

图论建模(结合案例分析)

图论建模(结合案例分析)

e4 v1v4 , e5 v3v4 , e6 v3v4 .
(见图 2)
图. 称边 e (vi , v j ) 为有向边或弧,称 e (vi , v j )是从vi 连接 v j 的弧 ,称 vi 为e的尾,称 v j 为e的头. 若图G中的边均为无序偶对 vi v j ,称G为无向图.称 边 e viv j 为无向边,称e连接 vi 和 v j ,顶点 vi 和 v j 称 为e的端点. 既有无向边又有有向边的图称为混合图.
2004A:奥运会临时超市网点的设计问题 • 题型:属于社会事业问题,主要包括观众的出行、用餐 和购物的规律,各商区人流分布规律,以及各商区的大小 超市的设计数量等问题。 • 特点:海量数据、数据冗余、结构复杂,即时性、综 合性、实用性和开放性强。 • 方法:主题方法数据的处理、统计分析、数据挖掘、 数学规划等。 • 结果:不唯一,对结果没有明确要求。
图的作用
图是一种表示工具,改变问题的描述方式,往往是创造性的 启发式解决问题的手段.一种描述方式就好比我们站在一个位 置和角度观察目标,有的东西被遮挡住了,但如果换一个位置和 角度,原来隐藏着的东西就可能被发现.采用一种新的描述方式, 可能会产生新思想.图论中的图提供了一种直观,清晰表达已知 信息的方式.它有时就像小学数学应用题中的线段图一样,能使 我们用语言描述时未显示的或不易观察到的特征、关系,直观 地呈现在我们面前,帮助我们分析和思考问题,激发我们的灵感.
v 来表示;
用 G (V (G ), E (G )) 表示图,简记 G (V , E ). 也用 vi v j 来表示边 (vi , v j ).
例设 G (V (G ), E (G )) , 其中:V (G) {v1, v2 , v3 , v4},

图论建模

图论建模

(7,1,0)
(4,1,3)
(4,4,0)
实际上我们用的是穷举法,这个问题只有这两个解。其中第一 个步骤最少,是最好的解。 解题过程中借用了图论的工具,即用“点”表示状态,“边”表 示 状态间的转移关系。点和边的附加信息称为赋权 赋权,这样的图称 赋权 为赋权图 赋权图,有点权图、边权图的概念。 赋权图 例2.证明:任何六个人中,必有三人互相认识或三人互相不认识。 分析: 这里提到的认识是互相认识,类似于双方握过手。 证明“怎样或怎样”的命题,方法是否定一个证明另一个成立。 我们用点表示人,6个人分别用ABCDEF表示。两个人互相认识 就在两点之间连一个实线边,互相不认识就用虚线连。于是所 有的两点之间都有连线,不是实线就是虚线。图论中把任何两 点间都有连线的图称为完全图 完全图。 完全图 问题转化为在描述任意6个人的关系的图里如果没有实线三角形 就一定有虚线三角形。
节点号i 起始地址 弧编 号 终点 起点 权 1 2 3 4
1 2 3 4 5 6 1 1 3 6 8 9
2 3 4 2 3 3 1 1 4 8 9 0 5 3 5 6 6 7 8
反向
4 4 5
正向
5 2 4 7 6 3
1 2 3 4 5 6 7 8 4 1 2 5 7 8 3 6
应3)9,(2,4)6,(3,2)4,(4,3)0,(4,5)3, (5,3)6,(5,4)7就是关联阵的列的标号,括号外为边权。 对于图与网络中的边权,可以在关联矩阵下面增加一行来存 储,多个权就增加多个行。
3.弧表表示法
将图以弧表的形式存储,也就是每个弧对应一个列,从上到下 分别是起点、终点和权。各列间从前到后按照起点、终点的字 典序排列。这种结构存储效率比较高。
• • • • •

数学建模-图论模型

数学建模-图论模型

思路分析
• 每学期任课老师都有一定工作量的要求往往可能要上不止一门课 程。
• 每位同学需要在学期内完成若干门课程的学习。 • 某些对上课设施有特殊要求的课程,也不可以安排在同一时间。 • 为了方便开展一些全校性的活动,有些时段不安排课程。 • 受到教室数量的限制,在同一时段无法安排太多的课程。
模型建立
• 以每个课程为顶点,任何两个顶点之间连一条边当且仅当两门课 程的任课老师为同一人,或有学生同时选了这两门课或上课教室 冲突。
• 那么一个合理的课程安排就是将图中的点进行分化,使得每一个 部分里的点为一个独立集。
• 通过极小覆盖找出图中的极 大独立集,然后删去该极大 独立集,在剩下的图中找出 极大独立集,直到剩下的图 为一个独立集。
匈牙利算法
• 饱和点:M是图G的一个匹配,若G中顶点v是M中某条边的端 点,则称M饱和v,否则称v是M的非饱和点。
• 可扩路:一条连接两个非饱和点x和y的由M外的边和M的边交错 组成的路称为M的(x,y)可扩路。
• 算法基本步骤:
Kuhn-Munkres算法
1.2 图的独立集应用
• 问题描述:各大学学期临近结束时,需要根据老师任课 计划和学生选课情况,再结合教室资源情况安排下一学 期的课程及上课时间和地点。下表所示是某大学电信学 院的大三各专业部分课程情况。该学院每届学生按专业 分班,统一选课。另外,学院只有一间普通机房和一间 高级机房。那么应该如何合理地排这些课程呢?
则称其是双连通或强连通的。对于不是双连通的图,都可以分解成 若干个极大的双连通分支,且任意两分支之间的边是同向的。
举例:
• 右图所示竞赛图不是双连通的

为一条有向
的D哈密尔A顿路B。 C E

数学建模-图论模型及算法

数学建模-图论模型及算法
问题一:如何在组数一定(3组)的情况下,使走遍乡村的总路线最短 且三组的路程尽可能均衡。
问题二:若巡视人员要在乡停留T=2小时,村停留t=1小时,汽车时 速V=35公里/小时,那么至少分几组能在24小时内走完?并找出最佳巡 视路线。
乡镇、村的公路网示意图
问题分析
根据53组数据我们得到它的邻接矩阵,利用Kruskal算法用Matlab编 程处理后得到加权网络图的最小生成树。
例1 最短路问题(SPP-shortest path problem)
一名货车司机奉命在最短的时间内将一车货物从甲地运 往乙地。从甲地到乙地的公路网纵横交错,因此有多种行车 路线,这名司机应选择哪条线路呢?假设货车的运行速度是 恒定的,那么这一问题相当于需要找到一条从甲地到乙地的 最短路。
例2 公路连接问题
最小生成树的Kruskal算法: function [T c]=krusf(d,flag) if nargin==1
n=size(d,2); m=sum(sum(d~=0))/2; b=zeros(3,m); k=1; for i=1:n
for j=(i+1):n if d(i,j)~=0 b(1,k)=i;b(2,k)=j; b(3,k)=d(i,j); k=k+1; end
求最小生成树问题有很广泛的实际应用. 例如, 把n个乡镇 用高压电缆连接起来建立一个电网, 使所用的电缆长度之和最 短, 即费用最小, 就是一个求最小生成树问题.
最小生成树算法—Kruskal算法
• 思想:将图中所有边按权值从大到小排列,依次选所剩最 小的边加入边集T,只要不和前面加入的边构成回路,直到 T中有n-1条边,则T是最小生成树。
A
0 1 1
0 0 0

数学建模——图论篇

数学建模——图论篇

软件学院
图论原理 一. 图的概念 一个图 G=<V(G),E(G)>, 其中结点集V(G):是G的结 点的非空集合.(V(G)≠Φ),简记成V;边集E(G):是 G的边的集合. 有时简记成E. 结点: 用 表示, 旁边标上该结点的名称. 边:有向边:带箭头的弧线.从u到v的边表示成(u,v) 无向边:不带箭头的弧线.u和v间的边表示成(u,v)
v3
软件学院
图论原理
回路:如果一条路的起点和终点是一个结点,则称此路 是一个回路. 如果一条路中所有边都不同,则称此路为迹或简单通路. 如果一条回路中所有边都不同,则称此回路为闭迹或简 单回路. 如果一条路中所有结点都不同,则称此路为基本通路. 如果一条回路中所有结点都不同,则称此路为基本回路. 一条基本通路一定是简单通路,但是一条简单通路不 一定是基本通路

图论原理
图的同构 设G=<V,E>和G’=<V’,E’>是图,如果存在双射f:VV’ 且任何 vi,vj∈V,若边(vi,vj)∈E,当且仅当 边(f(vi),f(vj))∈E’, (则称G与G’同构,记作G≌G’. (同构图要保持边的“关联”关系) 例如:右边所示的两个图: a b 1 4 G=<V,E> G’=<V’,E’> c d 3 2 构造映射f:VV’ a 1 b 2 c 3 d 4 a 1 b 2 c 3 d 4
软件学院
图论原理
2.汉密尔顿图的判定: 到目前为止并没有判定H图的充分必要条件. 定理1 (充分条件):G是完全图,则G是H图.

K2

K3

K4


K5
定理2(充分条件)设G是有n(n>2)个结点的简单图,若对G中每 对结点度数之和大于等于n,则G有一条H路(H回路)。

数学建模中的图论方法

数学建模中的图论方法

数学建模中的图论方法一、前言我们知道,数学建模比赛中有问题A和问题B。

一般而言,问题A是连续系统中的问题,问题B是失散系统中的问题。

因为我们在大学数学教育内容中,连续系统方面的知识的比率较大,而离散数学比率较小。

所以好多人有这样的感觉,A题下手快,而B题不好下手。

其他,在有限元素的失散系统中,相应的数学模型又可以区分为两类,一类是存在有效算法的所谓P类问题,即多项式时间内可以解决的问题。

但是这种问题在MCM中特别少见,事实上,由于比赛是开卷的,参照有关文件,使用现成的算法解决一个P类问题,不可以显示参赛者的建模及解决实诘问题能力之大小;还有一类所谓的NP问题,这种问题每一个都还没有成立有效的算法,或许真的就不行能有有效算法来解决。

命题经常以这种NPC问题为数学背景,找一个详细的实质模型来考验参赛者。

这样增添了成立数学模型的难度。

但是这也其实不是说没法求解。

一般来说,因为问题是详细的实例,我们可以找到特其他解法,或许可以给出一个近似解。

图论作为失散数学的一个重要分支,在工程技术、自然科学和经济管理中的好多方面都能供给有力的数学模型来解决实诘问题,所以吸引了好多研究人员去研究图论中的方法和算法。

应当说,我们对图论中的经典例子或多或少仍是有一些认识的,比方,哥尼斯堡七桥问题、中国邮递员问题、四色定理等等。

图论方法已经成为数学模型中的重要方法。

好多灾题因为归纳为图论问题被奇妙地解决。

并且,从历年的数学建模比赛看,出现图论模型的频次极大,比方:AMCM90B-扫雪问题;AMCM91B-找寻最优Steiner树;AMCM92B-紧迫修复系统的研制(最小生成树)AMCM94B-计算机传输数据的最小时间(边染色问题)CMCM93B-足球队排名(特点向量法)CMCM94B-锁具装箱问题(最大独立极点集、最小覆盖等用来证明最优性)CMCM98B-灾情巡视路线(最优回路)等等。

这里面都直接或是间接用到图论方面的知识。

图论方法及其建模

图论方法及其建模
95-B
天车与冶炼炉的作业调度 — 动态规划、排队
论、图论
97-B
98-B
截断切割的最优排列 — 随机模拟、图论
灾情巡视的最佳路线 — 图论、组合优化
99-B
07-B
钻井布局 — 0-1规划、图论
乘公交,看奥运 — 双目标规划、图论 图论 0-1规划
5
11-B 交巡警服务平台的设置与调度
13
设 Pt { p1 , p2 , p3 , p4 } 是 t 时刻运行的程序集合,
Rt {r1 , r2 , r3 , r4 } 是 t 时刻所需的资源集合. 资源的分配 状况如下: p1 占有资源 r4 且申请资源 r1; p2 占有资源 r1 且申请资源 r2 及 r3; p3 占有资源 r2 且申请资源 r3; p4 占 有资源 r3 且申请资源 r1 及 r4 .它们的资源分配情况可用
25
2、根树
一棵非平凡的有向树,如果恰有一个结点的入度 为0,其余结点的入度均为1,则称此有向树为根树. 入度为0的结点称为根,出度为0的结点称为叶,出 度不为0的结点称为分枝点。
习惯上我们把根树的根 画在最上方,叶画在下方, 有向边的方向均指向下方, 这样就可以省去全部箭头。
26
3、欧拉图
如果图G中具有一条经过所有边的简单回路,称欧 拉回路,含欧拉回路的图称为欧拉图;如果图G中具 有一条经过所有边的简单(非回路)路径,称欧拉路。
(4) 有向图 G 是(弱)连通图当且仅当以它的邻接矩阵
A
A AT 作为邻接矩阵而得到 及其转置 A 的布尔和
T
的可达矩阵的元素全为 1。
21
另外,也可以利用图的可达性矩阵判断有无回 路:图G中存在回路当且仅当它的可达性矩阵的 主对角元不全为零。也可以利用可达矩阵求出无 向图的连通分支等。

数学建模图论方法专题.ppt

数学建模图论方法专题.ppt
[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 ) v4v4 .
10 12
9 12
12
6 9 12 u5 u4 u5
最后标记:
l (v) z (v)
l(ui )
u1 u2 u3 u4
u5 u6
u7 u8
0 2 1 7 3 6 9 12
u1 u1
u1 u6 u2
u5 u4
u5
u2
u5
u 1
u 4
u 6
u8
u 3
u 7
2.每对顶点之间的最短路
例 求下图中加权图的任意两点间的距离与路径.
十二面体的20个顶点代表世界上20个城市,能否 从某个城市出发在十二面体上依次经过每个城 市恰好一次最后回到出发点?
问题3:四色问题
对任何一张地图进行着色,两个共同边界 的国家染不同的颜色,则只需要四种颜色 就够了.
问题4:关键路径问题
一项工程任务,大到建造一座大坝,一座体 育中心,小至组装一台机床,一架电视机,都 要包括许多工序,这些工序相互约束,只有 在某些工序完成之后,一个工序才能开始, 即它们之间存在完成的先后次序关系,一 般认为这些关系是预知的,而且也能够完 成每个工序所需要的时间.
算法的过程就是在每一步改进这两个标记,使最终 l(v) 为从顶点 u0 到 v 的最短路的权.
S:具有永久标号的顶点集
输入: G 的带权邻接矩阵 w(u, v)

数学建模方法之图论模型

数学建模方法之图论模型
2) 在有向图中,从顶点v引出的边的数目称为顶点 v的出度,记为d+(v),从顶点v引入的边的数目称为 v的入度,记为d -(v). 称d(v)= d+(v)+d -(v)为顶点v的 度或次数.
定理 d (v) 2.
vV
推论 任何图中奇点 的个数为偶数. d (v1) 4
d (u3) 1
d (u3) 2
一个顶点记为 ui1,置 Si1 Si {ui1}.
3) 若 i 1,则停Hale Waihona Puke ;若 i 1,则用 i+1 代
替i,并转2).
S0 {u0},l(u j ) , j 1,2,...,7.
u1 S0 l(u1) min{,0 1}
Dijkstra算法: 求G中从顶点u0到其余顶点的最短路.
G[{v1,v2,v3}] G[{e3,e4,e5,e6}]
3) 若 V V,且 V ,以 V 为顶点集,以两端点 均在V 中的边的全体为边集的图 G 的子图,称 为G的由V 导出的子图,记为 G[V ] .
4) 若E E,且 E ,以 E为边集,以 E 的端点 集为顶点集的图 G 的子图,称为 G 的由E 导出的
第二讲 图论模型
1. 问题引入与分析
2. 图论的基本概念
3. 最短路问题及算法
4. 最小生成树及算法

5. 旅行售货员问题

6. 模型建立与求解 下
1. 问题引入与分析
1) 98年全国大学生数学建模竞赛B题“最佳灾 情巡视路线”中的前两个问题是这样的:
今年(1998年)夏天某县遭受水灾. 为考察灾情、 组织自救,县领导决定,带领有关部门负责人到 全县各乡(镇)、村巡视. 巡视路线指从县政府 所在地出发,走遍各乡(镇)、村,又回到县政 府所在地的路线.

图论建模方法

图论建模方法
• 定理10. 8设T是(n.m)非平凡图.则下列命题等价: • (1) T是树; (2)T无圈.m=n-1; • (3) T连通.m=n-1;(4)T无圈.任加一边有唯一圈; • (5)T连通.任去一边不连通;(6) T的任二顶点恰有一条路连通. • 由定理10. 8可直接导出下面的结果: • (1)树是边数最少的连通图; (2)连通图的极大无圈生成子图是生成树; • (3)连通图的极小连通生成子图是生成树. • 由此可见.在n个城市之间.修建n-1条直通高速公路足以形成连通的
• 称图G与图H同构.记为G= H.如果存在V (G)与V(H)的一一对应.同时存 在E(G)与E(H)的一一对应.且保持顶点与边的关联关系不变.例如.在图 10. 3中·图G与图H同构.同构的图可看成同一个图.只是顶点与边的标 号可能不同而已.
• 定义10. 3在无向图中.与顶点v关联的边的数目(环算两次)称为v的度. 记为dG (v).简记为d (v).对有向图.顶点v少的出关联边数称为出度.记 为dG' (v)或d' (v).人关联边数称为入度.记dG (v)或d(v).显然
• 我们可用定义或图形表示一个图.但注意到图的关联关系和邻接关系. 还可以用矩阵来表示一个图.从而更有利于计算机处理.
• 定义10. 5设G是(n.m)图·则以矩阵A = (aij) nx m表G的关联矩阵.其 中
• 以H=(hij )nx n表T邻接矩阵.其中hij为以顶点vi和vj为端点的边数(i,j =1.2...…n).
• 有n个顶点m条边的图称为(n,m)图.(n,0)图叫零图.特别地.(0,0)图叫空 图.(1 ,0)图叫平凡图.没有环与平行边的图称为简单图.任意两顶点都相 邻的简单图称为完全图.有n个顶点的完全图记为Kn.若V(G)能分解为 V1与V2,使得

图论方法建模2

图论方法建模2
2015/10/24
三、最小生成树问题
调用kruskal.m的m函数文件。
命令形式: [out,len]=kruskal (map) 功能:map是输入矩阵,
map=[起点1 终点1 边长1;起点2 终点2 边长2;............;起点n 终点n 边长n]
out—输出边阵:[起点 终点]; len—输出最小生成树的总长度; 并最终返回最小生成树的图形。
{x4,x1, {y2,y {y2,y3} x3} 3}
2015/10/24
N(s)=B
结束
四、匹配问题
• 最大匹配就是:
X1 X2 X3 X4
Y1
Y2
Y3
Y4
2015/10/24
四、匹配问题 调用pipei.m的m函数文件。 格式:[e,total]=pipei(d) 功能:d是二部图矩阵(0-1矩阵)。 e—输出匹配的路径; total—最大匹配的边数。
命令形式: [a,b]=mintreek (n,w) 功能:w是权矩阵,该矩阵中的主对角全部是inf; n是顶点数; a返回最小生成树的权的总长度,b是返回其具体 的节点。并最终返回最小生成树的图形。
2015/10/24
三、最小生成树问题 例13 用Kruskal算法求右图的最小生成树。
<<M=Inf;a1=[M,50,60,M,M,M,M]; a2=[50,M,M,65,40,M,M]; a3=[60,M,M,52,M,M,45]; a4=[M,65,52,M,50,30,42]; a5=[M,40,M,50,M,70,M]; a6=[M,M,M,30,70,M,M]; a7=[M,M,45,42,M,M,M]; w=[a1;a2;a3;a4;a5;a6;a7] <<n=7;[a,b]=mintreek(n,w)

图论模型的建立

图论模型的建立

常州市第一中学 林厚从
图论建模
例1、奇怪的电梯(LIFT.???) 问题描述: 呵呵,有一天我做了一个梦,梦见了一种很奇怪的电梯。大楼的每一层楼都可以停电梯,而且第i层 楼(1<=i<=N)上有一个数字Ki(0<=Ki<=N)。电梯只有四个按钮:开,关,上,下。上下的层数等于当前楼 层上的那个数字。当然,如果不能满足要求,相应的按钮就会失灵。例如:3 3 1 2 5代表了 Ki(K1=3,K2=3,……),从一楼开始。在一楼,按“上”可以到4楼,按“下”是不起作用的,因为没有-2 楼。那么,从A楼到B楼至少要按几次按钮呢?
图论建模
[问题分析] 1、问题的数据规模只有200,所以很容易想到用搜索, 由于要输出最优解(要求的是最快的次数),所以是宽搜。 2、对于A楼而言,实际上对它最多只能做2个操作, 上到A+X层或下到A-X层,当然前提是存在A+X或A-X层。显 然,如果把每一层楼看做一个顶点,如果A楼可以到B楼, 则从顶点A引一条到顶点B的边。对于样例,如下图:
常州市第一中学 林厚从
图论建模
例2、渡河问题(river) 一个人带了一只狼、一只羊和一棵白菜想要过河,河上有一只独木船, 每次除了人以外,只能带一样东西。另外如果人不在旁边时狼就要吃羊,羊 就要吃白菜。问:应该怎样安排渡河,才能做到既把所有东西带过河,在河 上来回的次数又最少呢? [问题分析] 我们用变量M代表人、W代表狼、S代表羊、V代表白菜,∮代表空(什 么都没有)。开始时设人和所有东西都在左岸,这种情况用MWSV表示。 我们用一个集合表示目前左岸的情况,很明显,可能出现16种情况: [MWSV] [MWS] [MWV] [MSV] [WSV] [MW] [MS] [MV] [WS] [WV] [SV] [M] [W] [S] [V] [∮] 但要剔除掉6种可能发生狼吃羊和羊吃白菜的情况(红色),实际是10 种。下面我们就把这10种情况作为10个顶点,来构造一个无向图G,图G的边 按下列原则来定义:如果经过一次渡河,情况甲能变成情况乙,那么就在情 况甲与情况乙之间连一条边。得到下图:

数学建模图论讲

数学建模图论讲
如果任两顶点间最多有一条边,且每条边的两个端点皆 不重合的图,则称为简单图。
第2页1 /共86页
2024年8月3日
数学建模-图论
一、图的基本概念
如果图的二顶点间有边相连,则称此顶点相邻,每一对顶点
都相邻的图称为完全图,否则称为非完全图,完全图记为 K V 。
若V (G) X Y, X Y , X Y 0 ,且 X 中 无相邻的顶点对,Y 中亦然,则称图 G 为二分图.
第1行 1 A1i 第i行 1
11,A1i 2
2 2
22,A1i3
4 4
4 4
其中i=2,3,4,5,显然y1=1+(4+4+4+4-1) 4=61. 同理,计算y2时应考虑槽高只有2,21,23,24,25,
26时的情形,类似计算可得 y2=1+(4+4+4+4-1)×5=76.
于是,s=61×2+76×4=426,x=6306426=5880.
计算y1可分别考虑槽高只有1,12,13,14,15的 情形.若只有1,这样的锁具效只有1个, 若只有1和i(i=2,3,4,5),这样的锁具数=G中以1和i为 顶点,长度为3的道路数,此数可通过A的子矩阵A1i计 算得到.
第18页/共86页
数学建模-图论
二、图的矩阵表示(应用实例解法分析)
事实上,因为
间最短的路线。定义T*T=(t(2)ij),
3
4
t(2)ij=min{min1<=k<=5{tik+tkj},tij}, t(2)ij表示 从站点i到站点j的至多换乘一次的最短时间。
5
第22页/共86页
数学建模-图论
二、图的矩阵表示(应用实例及解法分析)

数学建模-图论篇

数学建模-图论篇

data
firstarc
nextvex
边结点表中的结点的表示:
data:结点的数据场,保存结点的 数据值。
firstarc:结点的指针场,给出自该 结点出发的的第一条边的 边结点的地址。
nextvex:结点的指针场,给出该结 点的下一结点的地址。
info:边结点的数据场,保存边的 权值等。
adjvex:边结点的指针场,给出本
2C 3D
20 30 ∧
data firstin firstout
tailvex headvex hlink tlink
0
1
02

31∧
2
3
∧∧
3 2 ∧∧
图的存储结构
4、邻接多重表
•结点表中的结点的表示

data
firstedge
data:结点的数据域,保存结点的 数据值。
firstedge: 结点的指针域,给出自该
A
B
E
表示成右图矩阵
C
D
011 00 100 11 1000 1 0100 1 0111 0
图的存储结构
1、邻接矩阵和加权邻接矩阵(labeled adjacency matrix)(续)
•有向图的加权邻接矩阵
设有向图具有 n 个结点,则用 n 行 n 列的矩阵 A 表示该有向图;
并且 A[i,j] = a , 如果i 至 j 有一条有向边且它的权值为a。A[i,j] =无穷,如果 i 至 j 没有一条有向边。
邻接表
十字链表
邻接多重表
1、邻接矩阵和加权邻接矩阵(labeled adjacency matrix) •无权值的有向图的邻接矩阵
设有向图具有 n 个结点,则用 n 行 n 列的布尔矩阵 A 表示该有向图;

浅谈图论模型的建立与应用

浅谈图论模型的建立与应用
至于S[23],我们可以用二分法枚举,逐步缩小范围,用迭代法判断是否存在 负权回路(判定可行性),最终求得S[23]的最小值。时间复杂度为 O(243*log2N)。
例题2 出纳员的雇佣(ACM Tehran 2000)
小结
本题用到了差分约束系统的理论,在竞赛中,这样的系统并不多见, 但是却可以巧妙的解决一些难题。这类题目的模型都不明显,需要一定的思 考和转化。做这类题目,关键是要把题目中的约束条件表示为不等式,再把 不等式转化为图的最短路或最长路模型。
例题3 贪婪之岛(ZOJ)
问题描述
有N(N≤100000)张卡片,每张卡片有三种能力,每种 能力的能力值分别为Ai,Bi,Ci。每张卡片可以使用其中 一种能力,且每张卡片只能使用一次。现在需要A张卡片 使用第一种能力,B张卡片使用第二种能力,C张卡片使用 第三种能力(A+B+C≤100)。请计算使用哪些卡片,以及 使用卡片的哪项能力,可以使相应的能力值之和最大。
例题2 出纳员的雇佣(ACM Tehran 2000)
分析
0≤S[i]-S[i-1]≤Wi S[i]-S[i-8]≥Ri
(0≤i≤23) (8≤i≤23)
S[23]+S[i]-S[i+16]≥Ri (0≤i≤7)
退一步考虑:如果S[23]已经确定了,那么上面的不等式组可以完全转化为一 个有向图,顶点0到顶点i的最短路,就是S[i]的解。而当图中存在负权回路时, 不等式组无解。
放在空地上。在同一行或同一列
的两个机器人,若它们之间没有
墙,则它们可以互相攻击。问给
定的棋盘,最多可以放置多少个
Empty
机器人,使它们不能互相攻击。
Grass
Wall

数学模型课件图论方法建模

数学模型课件图论方法建模

§9.2 循环比赛的排名问题问题:n 支球队参加循环比赛,两两交锋,一场决胜,不容平局,“0、1”打分。

如何排名?1.竞赛图:每对顶点之间有且只有一条有向边相连的有向图;有向边指向负方。

2.路径与完全路径:称有向图),(E V G 的一个顶点序列k i i i i v v v v 210为图),(E V G 的一条步长为k 的路径,若满足:对k j k ≤≤∀1,,均有E v v j j i i ∈-1;若还满足k i i v v =0,则称之为图),(E V G 的一条步长为k 的回(或闭)路径。

而若顶点集V 的一个全排列1210-n i i i i v v v v 构成图),(E V G 的一条路径,也称之为图),(E V G 的一条完全路径。

● 图1中:6431v v v v 、16431v v v v v 、1654321v v v v v v v 、654321v v v v v v ● 子路径、闭的完全路径3.定理:任一)2(≥∀n n 阶竞赛图),(E V G 都存在完全路径。

证明(数学归纳法):1:2=n 时,如图3-0,命题真;2:设k n =时命题真;3:当1+=k n 时,设{}121,,,+=k k v v v v V 为顶点集,记{}k v v v V ,,21~=,~G 为图),(E V G 关于{}k v v v V ,,21~=的生成子图;由归纳假设2,在~G 中存在完全路径,不失一般性,设k k v v v v 121...-为~G 中的一条完全路径,考虑顶点1+k v 与{}k v v v V ,,21~=的邻接关系,有如下三种情形:图3-1:k k k v v v v v 1211...-+为G 中的一条完全路径;图3-2:1121...+-k k k v v v v v 为G 中的一条完全路径图3-3:k k i k i v v v v v v v 11121......-+-为G 中的一条完全路径。

第九章 图论要领建模

第九章 图论要领建模
链( vi1 , vi2 ,,…, vik 1 , vik )中,若 vi1 = vik ,则称之为一个圈,记为( vi1 , vi2 ,… vik 1 , vi1 ).若链中( vi1 , vi2 ,,… vik )中, vi1 , vi2 ,,… vik 都是不同的,则称之为初等链;若圈中( vi1 , vi2 ,…, vik 1 , vi1 )中 vi1 , vi2 ,…, vik 1 都是不同的,则称之为初等圈;若链(圈)中含的
图 G 中,若任何两点之间,至少有一条链,则称 G 是连通图.否则称不连通的图.给定
一个图 G=及 E E,称 G 是 G 的支撑子图.
如图 9.7 中,(b)是(a)的支撑子图,而(c)不是. 设给有向图 D=(V,A) .从 D 中去掉弧上的箭头,所得到的无向图称 D 的基础图.D 中一 条弧 a=(u,v), u 称 a 的始点,v 称 a 的终点.称弧是从 u 指向 v 的.
以点 v 为端点的边的个数称为 v 的次,记为 d(v).如图 9.4 中 d(v1)=4,d(v2)=3,d(v4)=4(环 e7 在计算 d(v4)作两次算).次为奇数的点,称为奇点,否则称为偶点.
给定一个图 G=(V , E).一个点、边交错序列( vi1 , ei1 , vi2 , ei2 ,…, vik 1 , eik 1 vik ),如果满 足 eit =[ vit , vit 1 ](t=1,2,3, …k-1).则称之为一条联结链 vi1 , vik 的链,记为( vi1 , vi2 ,,…, vik , 1 vik ).
下面再介绍一些常见名词和记号. 考虑无向图 G=(V , E). 若边 e=[u,v] ∈E,则称 u,v 是 e 的端点,也称 u,v 是相邻的.称 e 是点 u(及点 v)的关联 边.若图 G 中,某个边的两个端点相同,则称 e 是环(如图 9.7 中的 e7).若两个点之间有多 于一条的边,称这些边为多重边(如图 9.4 中的 e1,e2).一个无环、无多重边的图称为简单 图.一个无环,但允许有多重边的图称为多重图.
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

四、匹配问题
例1 求二部图G中的最大匹配。
X1
X2
X3
X4
Y1
Y2
2019/5/13
Y3
Y4
四、匹配问题
M
xS
B
{x2y2,x3y3} x1 {x1}

{x1,x2} {y2}
{x1y2,x2,y x4 {x4}

1,x3y3}
{x4,x1} {y2}
N(s) y N(S) B yu M P
2019/5/13
五、旅行商问题
Euler图和Hamilton图
定义 经过G 的每条边的迹叫做G 的 Euler 迹;闭的 Euler 迹叫做 Euler 回路或 E 回路;含 Euler 回路的图叫做 Euler 图。
定义 包含G 的每个顶点的轨叫做 Hamilton(哈密顿)轨;
闭的 Hamilton 轨叫做 Hamilton 圈或 H 圈;含 Hamilton 圈的图
{y2} y2饱和 y2x2 点
{y1,y2,y y1非饱
4}
和点
x1y2x 2y1
{y2,y3} y2饱和 y2x1
{y2,y3} y3饱和 y3x3
{x4,x1, {y2,y {y2,y3} N(s)=B 结束
x3}
3}
2019/5/13
四、匹配问题 • 最大匹配就是:
X1
X2
X3
X4
Y1
Y2
<<a(1,2)=50; a(1,3)=60; a(2,4)=65; a(2,5)=40; a(3,4)=52;a(3,7)=45; a(4,5)=50; a(4,6)=30;a(4,7)=42; a(5,6)=70; <<leasttree_2(a)
2019/5/13
三、最小生成树问题
调用mintreek.m的m函数文件。 命令形式: [a,b]=mintreek (n,w) 功能:w是权矩阵,该矩阵中的主对角全部是inf; n是顶点数; a返回最小生成树的权的总长度,b是返回其具体 的节点。并最终返回最小生成树的图形。
2019/5/13
三、最小生成树问题
例15 用Kruskal算法求右图的最小生成树。
<<a1=[1 2 50;1 3 60]; a2=[2 4 65;2 5 40]; a3=[3 4 52;3 7 45]; a4=[4 5 50;4 6 30;4 7 42]; a5=[5 6 70]; map=[a1;a2;a3;a4;a5] [out,len]=kruskal(map)
(iii) G 中有 Euler 迹的充要条件是 G 连通且至多有两个奇次
点。
2019/5/13
五、旅行商问题
例5 旅行商问题
网络流
一名推销员准备前往若干城市推销产品。 如何为他(她)设计一条最短的旅行路线(从 驻地出发,经过每个城市恰好一次,最后返回 驻地)?这一问题的研究历史十分悠久,通常 称之为旅行商问题。
命令形式: [M,MaxZjpp]=km(A,n)
功能:A是输入二部图的权矩阵,n是匹配点。 M—输出匹配矩阵; MaxZjpp—输出最优匹配的总长度。
<<A=[3 5 5 4 1;2 2 0 2 2;2 4 4 1 0;0 1 1 0 0;1 2 1 3 3]; [M,MaxZjpp]=km(A,5)
叫做 Hamilton 图。
2019/5/13
五、旅行商问题
Euler图和Hamilton图
定理 (i)G 是 Euler 图的充分必要条件是 G 连通且每顶
点皆偶次。
(ii)
G

Euler
图的充分必要条件是 G
连通且 G

d
Ci
, Ci

i 1
圈, E(Ci ) E(C j ) (i j) 。
2019/5/13
三、最小生成树问题
调用leasttree_2.m的m函数文件。 命令形式: leasttree_2(a) 功能:a是权矩阵,该矩阵中的主对角全部是0, 并且不包含重复的权; 返回树的节点和权值。
2019/5/13
三、最小生成树问题
例12 用Kruskal算法求右图的最小生成树。
2019/5/13
三、最小生成树问题
例13 用Kruskal算法求右图的最小生成树。
<<M=Inf;a1=[M,50,60,M,M,M,M]; a2=[50,M,M,65,40,M,M]; a3=[60,M,M,52,M,M,45]; a4=[M,65,52,M,50,30,42]; a5=[M,40,M,50,M,70,M]; a6=[M,M,M,30,70,M,M]; a7=[M,M,45,42,M,M,M]; w=[a1;a2;a3;a4;a5;a6;a7] <<n=7;[a,b]=mintreek(n,w)
2019/5/13
四、匹配问题
KM算法步骤
• Kuhn-Munkras算法流程: • (1)初始化可行顶标的值 • (2)用匈牙利算法寻找完备匹配 • (3)若未找到完备匹配则修改可行顶标的值 • (4)重复(2)(3)直到找到相等子图的完备匹配
为止
2019/5/13
四、匹配问题
调用km.m的m函数文件。
• 选择这样的边数最大的子集称为图的最 大匹配问题。
• 如果一个匹配中,图中的每个顶点都和 图中某条边相关联,则称此匹配为完全 匹配,也称作完备匹配。
2019/5/13
四、匹配问题
匈牙利算法
• 求最大匹配的一种显而易见的算法是:先找出 全部匹配,然后保留匹配数最多的。但是这个 算法的复杂度为边数的指数级函数。 • M中任意一条边的端点v称为(关于M的)饱和 点,G中其他定点称为非饱和点。 • 若P是图G中一条连通两个未匹配顶点的路径, 并且属M的边和不属M的边(即已匹配和待匹配的 边)在P上交替出现,则称P为相对于M的一条增 广路径。
2019/5/13
四、匹配问题
二分图的概念
• 二分图又称作二部图,是图论中的一种特殊 模型。
• 设G=(V,{R})是一个无向图。如顶点集V可
分割为两个互不相交的子集,并且图中每条
边依附的两个顶点都分属两个不同的子集。
则称图G为二分图。
1
2
3
4
5
2019/5/13
1
2
3
4
四、匹配问题
最大匹配
• 给定一个二分图G,在G的一个子图M中, M的边集{E}中的任意两条边都不依附于 同一个顶点,则称M是一个匹配。
2019/5/13
四、匹配问题
• 修改方法如下: • 先将一个未被匹配的顶点u(u in {x})做一次增广 路,记下哪些结点被访问那些结点没有被访问。求 出d=min{lx[i]+ly[j]-w[i,j]}其中i结点被访问,j结点没 有被访问。然后调整lx和ly:对于访问过的x顶点, 将它的可行标减去d,对于所有访问过的y顶点,将 它的可行标增加d。修改后的顶标仍是可行顶标,原 来的匹配M仍然存在,相等子图中至少出现了一条 不属于M的边,所以造成M的逐渐增广。
2019/5/13
Y3
Y4
四、匹配问题
调用pipei.m的m函数文件。 格式:[e,total]=pipei(d) 功能:d是二部图矩阵(0-1矩阵)。
e—输出匹配的路径; total—最大匹配的边数。
<<d=[0 1 0 0;1 1 0 1;0 1 1 0;0 1 1 0] [e,total]=pipei(d)
2019/5/13
四、匹配问题
例2 考虑完全的2部图,其中 X {x1, x2,, x5},
Y {y1, y2,, y5} 。边上的权如下矩阵。
3 5 5 4 1
2 2 0 2 2
W


2
4
410源自 0 1 1 0 0 1 2
13
3

l(x1) 5,l(x2 ) 2,l(x3) 4,l(x4 ) 1,l(x5) 3 l( y1) l( y5) 0
2019/5/13
四、匹配问题
KM算法
• 对于任意的G和M,可行顶标都是存在的: • l(x) = maxw(x,y) • l(y) = 0 • 欲求完全二分图的最佳匹配,只要用匈牙利算法求
其相等子图的完备匹配;问题是当标号之后的Gl无 完备匹配时怎么办?1957年,Kuhn和Munkras给出 了一个解决该问题的有效算法,用逐次修改可行顶 标l(v)的办法使对应的相等子图之最大匹配逐次增 广,最后出现完备匹配。
漳州师范学院数学建模课件
图与网络建模方法
第十二讲 图与网络建模方法
2019/5/13
主要内容
• 最小生成树问题 • 匹配问题 • 旅行商问题 • 最大流问题 • 最小费用最大流问题
2019/5/13
三、最小生成树问题
Kruskal算法构造最小生成树
Kruskal 算法如下: (i)选 e1 E(G) ,使得 w(e1) min 。 (ii)若 e1, e2 ,, ei 已选好,则从 E(G) {e1,e2,,ei}中选取 ei1 ,使得 ① 中无圈,且 G[{e1,e2 ,,ei ,ei1}] ② 。 w(ei1 ) min (iii)直到选得 e 1为止。
2019/5/13
三、最小生成树问题
调用kruskal.m的m函数文件。
命令形式: [out,len]=kruskal (map)
功能:map是输入矩阵,
map=[起点1 终点1 边长1;起点2 终点2 边长2;............;起点n 终点n 边长n]
相关文档
最新文档