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

合集下载

图论算法总结及图论建模

图论算法总结及图论建模

算法演示
算法演示
算法演示
算法演示
完整代码
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-灾情巡视路线(最优回路)等等。

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

  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]
相关文档
最新文档