图论模型简介

图论模型简介
图论模型简介

图论模型简介

一、图及其矩阵表示

1、起源:哥尼斯堡七桥问题:

欧拉为了解决这个问题,建立数学模型:陆地——点,桥——边,得到一个有四个“点”,七条“边”的“图”。问题转化为能否从任一点出发一笔画出七条边再回到起点。欧拉考察了一般一笔画的结构特点,给出了一笔画判定法则:图是连通的,且每个顶点都与偶数条边相关联(这种图称为欧拉图)。由此可以得出结论:七桥问题无解。

2、基本概念:

图(graph):由顶点和边(又称线,边的两端必须是顶点)组成的一个结构。

邻接:一条边的两个端点称是邻接的;关联:边与其两端的顶点称是关联的。

无向图(graph):边无方向的图;有向图(digraph):边有方向的图。

路(path):由相邻边组成的序列,其中中间顶点互不相同。

圈(cycle):首、尾顶点相同的路,即闭路。

连通图(connected graph):图中任意两顶点间都存在路的图。

树(tree):无圈连通图

完全图(complete graph):任意两个顶点之间都有边相连的无向图,记为K n。

竞赛图(tournament):由完全图给每条边定向而得到的有向图。

二部图(bipartite graph):图的顶点分成两部分,只有不同部分顶点之间才有边相连。图G的子图H(subgraph):H是一个图,H的顶点(边)是图G的顶点(边)。

网络(Network):边上赋了权的有向图。

3、图的矩阵表示

无向图 有向图

0100010

11001011

011000

1

00???????????????? ????

?

?

?

?

????????0110010100000100100000110

4、著名的图论问题

例1 最短路问题(shortest path problem)

出租车司机要从城市甲地到乙地,在纵横交错的路中如何选择一条最短的路线?例2 最小生成树问题(minimum-weight spanning tree problem)

为了给小山村的居民送电,每户立了一根电杆,怎样连接可使连线最短?

例3 中国邮递员问题(chinese postman problem)

一名邮递员负责投递某个街区的邮件。如何为他设计一条最短的投递路线?

例4(二部图的)最优匹配问题(optimum matching)

在赋权二部图中找一个权最大(最小)的匹配。

例5 旅行推销员问题(traveling salesman problem-TSP)

一名推销员准备前往若干城市推销产品。如何为他设计一条最短的旅行路线?例6 网络流问题(network flow problem)

如何在一个有发点和收点的网络中确定具有最大容量的流。

二、求最短路的迪克斯特拉(Dijkstra )算法

基本思想是按距0u 由近到远的顺序,依次确定0u 到G 的各顶点的最短路和距离。为避免重复并保留每一步的计算信息,采用标号算法。 Dijkstra 算法如下:

STEP1:1()0l u =,1v u ?≠,∞=)(v l ,1{}S u =,1i =;

STEP2:v S ?∈(\S V S =),)(v l <- min {(),()()}i i l v l u w u v +, 1i i =+,

计算min{()}v S

l v ∈,记达到这个最小值的一个顶点为i u ,令{}i S S u = ; STEP3:若||i V =,停止;否则,转STEP2。

例 求右图中从顶点u1到其它各

点的最短路及相应的路径.

求解过程列表如下:

例 1 某公司在六个城市621,,,c c c 中有分公司,从i c 到j c 的直接航程票价记在下述矩阵的

),(j i 位置上。(∞表示无直接航路),请帮助该公司设计一张城市1c 到其它城市间的票价最便宜的路

线图。

?

?

?

?

?

?

?

?

?

?????????∞∞∞∞∞∞

055252510550102025251001020402010015252015050102540500

解 第一个城市到其它城市的最短路径的Matlab 程序如下: clear; clc; M=10000;

a(1,:)=[0,50,M,40,25,10];

a(2,:)=[zeros(1,2),15,20,M,25];

a(3,:)=[zeros(1,3),10,20,M];

a(4,:)=[zeros(1,4),10,25];

a(5,:)=[zeros(1,5),55];

a(6,:)=zeros(1,6);

a=a+a';

pb(1:length(a))=0;pb(1)=1; % 永久标号点

index1=1; % 标记确定为永久标记的次序index2=ones(1,length(a));%标记最短路上各点的先驱顶点d(1:length(a))=M;d(1)=0; % 标记最短距离

temp=1; % 标记最近一个永久标号点while sum(pb)

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 % 前驱顶点多于1个时取第一个

index=index(1);

end

index2(temp)=index; % 记录前驱顶点

end

d, index1, index2

运行结果

d = 0 35 45 35 25 10 index1 = 1 6 5 2 4 3 index2 = 1 6 5 6 1 1 动态规划方法

基本方程: )}())(,(min{)(1++=k k k k k k x L x u x D x L

LINGO 程序

model : ! 动态规划方法;

SETS : !CITIES 表示由1~9组成的集合,是一个基本集合; CITIES /1..9/: L; !属性L(i)表示城市i 到城市1的最优行驶路线的路长; ROADS(CITIES, CITIES)/ ! ROADS 表示网络中的弧,是由CITIES 派生的集合; 1,2 1,3 1,4 !并非所有城市间都有道路直接连接,故将弧具体列出; 2,5 2,6 3,5 3,6 4,5 4,6 5,7 5,8 6,7 6,8

7,9 8,9 /: D; !属性 D(i,j) 是城市i到j的直接距离(已知); ENDSETS

DATA:

D = 6 3 3 ! D赋值的顺序对应于ROADS中的弧的顺序;

6 5 8 6

7 4

6 7 8 9

5 6;

ENDDATA

min=L(1);

L(9) = 0; !边界条件;

@FOR( CITIES(i)| i #LT# 9: !集合循环语句, #LT#表示逻辑关系"小于";

L(i) = @MIN( ROADS(i,j)|i #LT# j: D(i,j) + L(j)) ); !这就是动态规划基本方程; end

(0-1)规划解法

LINGO程序

model: ! (0,1)--规划方法;

SETS:

CITIES /1..9/;

ROADS(CITIES, CITIES)|&1 #LT# &2: D,x; ENDSETS

DATA:

D = 6 3 3 1000 1000 1000 1000 1000 1000 1000 6 5 1000 1000 1000

1000 8 6 1000 1000 1000

7 4 1000 1000 1000

1000 6 7 1000

8 9 1000

1000 5

6;

ENDDATA

min=@SUM(ROADS:D*x);

@SUM(CITIES(j)|j#GT#1:x(1,j))=1;

@SUM(CITIES(i)|i#LT#9:x(i,9))=1;

@FOR(CITIES(i)|i#GT#1 #and# i#LT#9:@SUM(CITIES(j)|j#GT#i:x(i,j))=@SUM(CITIES(j)|j#LT#i:x(j,i)));

@FOR(ROADS:@BIN(x));

end

三、求最小生成树的prim算法

设置两个集合P 和Q ,其中P 用于存放G 的最小生成树的顶点,Q 存放G 的最小生成

树的边。令P 的初值为}{1v P =(假设构造最小生成树时,从顶点1v 出发),

Q 的初值为Φ=Q 。prim 算法的思想是,从所有,(,)P V P -的边中,选取具有最小权值的边pv ,将顶点v 加入P 中,将边pv 加入Q 中,如此不断重复,直到V P =时,最小生成树构造完毕。 prim 算法如下:

STEP1:}{1v P =,Φ=Q ; STEP2:while V P =~

},,min(P V v P p w pv pv -∈∈= }{v P P +=,}{pv Q Q += end

例2 用prim 算法求右图的最小生成树。

解 用n

r e s u l t ?3的第一、二、三行分别表示生成树边的起点、终点、权集合。

Matlab程序如下:

clc;clear;

M=1000;

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;

a=[a;zeros(2,7)];

a=a+a';a(find(a==0))=M;

result=[];p=1; % 设置生成树的起始顶点tb=2:length(a); % 设置生成树以外顶点while length(result)~=length(a)-1 % 边数不足顶点数-1

temp=a(p,tb);temp=temp(:); % 取出与p关联的所有边

d=min(temp); % 取上述边中的最小边

[jb,kb]=find(a(p,tb)==d); % 寻找最小边的两个端点(可能不止一个) j=p(jb(1));k=tb(kb(1)); % 确定最小边的两个端点

result=[result,[j;k;d]]; % 记录最小生成树的新边p=[p,k]; % 扩展生成树的顶点

tb(find(tb==k))=[]; % 缩减生成树以外顶点

end

result

weight=sum(result(3,:)) % 计算最小生成树的权

运行结果

result = 1 2 5 4 4 7

2 5 4 6 7 3

50 40 50 30 42 45

weight = 257

四、求最大匹配的匈牙利算法

0、从任意一个匹配M开始;

1、若M饱和X的每个顶点,结束;否则,设u是X中的M非饱和顶点,置S={u},T=Φ;

2、若N(S)=T, 停止;否则,设y∈N(S) \ T;

3、若y是M饱和的,设yz∈M,S←S∪{z}, T←T∪{y}, 转2;否则,设P是M可扩(u,y)

路, M←ME(P), 转1。

MATLAB程序

function match(e)

global n flag1 s t v m y z

n=max(e(:,1));

v=1:n;m=[];e1=e;

while 1-isempty(e1)

m=[m;e1(1,:)];

k1=find(e1(:,1)==e1(1,1)); k2=find(e1(:,2)==e1(1,2)); k=union(k1,k2); e1(k,:)=[]; end

% m

x=m(:,1)';

while length(x)

flag1=2;flag2=0;

u0=setdiff(v,x);

u=u0(1);s=[u];t=[];

z=u;xy=[];yx=[];

while 1

ns=neib(e,s); y0=setdiff(ns,t);

if isempty(y0)

flag1=0;break

end

y=y0(1);

k1=find(e(:,2)==y); k2=e(k1,1)';

k3=intersect(s,k2); yx(y)=k3(1);

while 1

z=m(m(:,2)==y);

if isempty(z) flag2=1;break

else

xy(z)=y;

s=[s,z];

t=[t,y];

break

end

end

if flag2==1

break

第5-6章:如何建立数学模型及实例

如 何 建 立 数 学 模 型 及 实 例 数学建模培训 科研处数学建模小组

第五章:如何建立数学模型 怎样撰写数学建模的论文? 1.什么是数学模型? 数学模型是对于现实世界的一个特定对象,一个特定目的,根据特有的内在规律,做出一些必要的假设,运用适当的数学工具,得到一个数学结构。 简单地说:就是系统的某种特征的本质的数学表达式(或是用数学术语对部分现实世界的描述),即用数学式子(如函数、图形、代数方程、微分方程、积分方程、差分方程等)来描述(表述、模拟)所研究的客观对象或系统在某一方面的存在规律。 2.什么是数学建模?数学建模是利用数学方法解决实际问题的一种 实践。即通过抽象、简化、假设、引进变量等处理过程后,将实际问题用数学方式表达,建立起数学模型,然后运用先进的数学方法及计算机技术进行求解。 观点:“所谓高科技就是一种数学技术” 注数学建模其实并不是什么新东西,可以说有了数学并需要用数学去解决实际问题,就一定要用数学的语言、方法去近似地刻划该实际问题,这种刻划的数学表述的就是一个数学模型,其过程就是数学建模的过程。数学模型一经提出,就要用一定的技术手段(计算、证明等)来求解并验证,其中大量的计算往往是必不可少的,高性能的计算机的出现使数学建模这一方法如虎添翼似的得到了飞速的发展,掀起一个高潮。 注 数学建模将各种知识综合应用于解决实际问题中,是培养和提高同学们应用所学知识分析问题、解决问题的能力的必备手段之一。 3.数学建模的一般方法和步骤建立数学模型的方法和步骤并没有一定的模 式,但一个理想的模型应能反映系统的全部重要特征:模型的可靠性和模型的使用性 建模的一般方法: ◆机理分析◆测试分析方法 机理分析:根据对现实对象特性的认识,分析其因果关系,找出反映内部机理的规律,所建立的模型常有明确的物理或现实意义。 测试分析方法:将研究对象视为一个“黑箱”系统,内部机理无法直接寻求,通过测量系统的输入输出数据,并以此为基础运用统计分析方法,按照事先确定的准则在某一类模型中选出一个数据拟合得最好的模型。测试分析方法也叫做系统辩识。 将这两种方法结合起来使用,即用机理分析方法建立模型的结构,用系统测试方法来确定模型的参数,也是常用的建模方法。在实际过程中用那一种方法建模主要是根据我们对研究对象的了解程度和建模目的来决定。机理分析法建模的具体步骤大致可见下图。

数学建模中的图论方法

数学建模中的图论方法 一、引言 我们知道,数学建模竞赛中有问题A和问题B。一般而言,问题A是连续系统中的问题,问题B是离散系统中的问题。由于我们在大学数学教育内容中,连续系统方面的知识的比例较大,而离散数学比例较小。因此很多人有这样的感觉,A题入手快,而B题不好下手。 另外,在有限元素的离散系统中,相应的数学模型又可以划分为两类,一类是存在有效算法的所谓P类问题,即多项式时间内可以解决的问题。但是这类问题在MCM中非常少见,事实上,由于竞赛是开卷的,参考相关文献,使用现成的算法解决一个P类问题,不能显示参赛者的建模及解决实际问题能力之大小;还有一类所谓的NP问题,这种问题每一个都尚未建立有效的算法,也许真的就不可能有有效算法来解决。命题往往以这种NPC问题为数学背景,找一个具体的实际模型来考验参赛者。这样增加了建立数学模型的难度。但是这也并不是说无法求解。一般来说,由于问题是具体的实例,我们可以找到特殊的解法,或者可以给出一个近似解。 图论作为离散数学的一个重要分支,在工程技术、自然科学和经济管理中的许多方面都能提供有力的数学模型来解决实际问题,所以吸引了很多研究人员去研究图论中的方法和算法。应该说,我们对图论中的经典例子或多或少还是有一些了解的,比如,哥尼斯堡七桥问题、中国邮递员问题、四色定理等等。图论方法已经成为数学模型中的重要方法。许多难题由于归结为图论问题被巧妙地解决。而且,从历年的数学建模竞赛看,出现图论模型的频率极大,比如: AMCM90B-扫雪问题; AMCM91B-寻找最优Steiner树; AMCM92B-紧急修复系统的研制(最小生成树) AMCM94B-计算机传输数据的最小时间(边染色问题) CMCM93B-足球队排名(特征向量法) CMCM94B-锁具装箱问题(最大独立顶点集、最小覆盖等用来证明最优性) CMCM98B-灾情巡视路线(最优回路) 等等。这里面都直接或是间接用到图论方面的知识。要说明的是,这里图论只是解决问题的一种方法,而不是唯一的方法。 本文将从图论的角度来说明如何将一个工程问题转化为合理而且可求解的数学模型,着重介绍图论中的典型算法。这里只是一些基础、简单的介绍,目的在于了解这方面的知识和应用,拓宽大家的思路,希望起到抛砖引玉的作用,要掌握更多还需要我们进一步的学习和实践。

数学建模中常见的十大模型

数学建模常用的十大算法==转 (2011-07-24 16:13:14) 转载▼ 1. 蒙特卡罗算法。该算法又称随机性模拟算法,是通过计算机仿真来解决问题的算法,同时可以通过模拟来检验自己模型的正确性,几乎是比赛时必用的方法。 2. 数据拟合、参数估计、插值等数据处理算法。比赛中通常会遇到大量的数据需要处理,而处理数据的关键就在于这些算法,通常使用MA TLAB 作为工具。 3. 线性规划、整数规划、多元规划、二次规划等规划类算法。建模竞赛大多数问题属于最优化问题,很多时候这些问题可以用数学规划算法来描述,通常使用Lindo、Lingo 软件求解。 4. 图论算法。这类算法可以分为很多种,包括最短路、网络流、二分图等算法,涉及到图论的问题可以用这些方法解决,需要认真准备。 5. 动态规划、回溯搜索、分治算法、分支定界等计算机算法。这些算法是算法设计中比较常用的方法,竞赛中很多场合会用到。 6. 最优化理论的三大非经典算法:模拟退火算法、神经网络算法、遗传算法。这些问题是用来解决一些较困难的最优化问题的,对于有些问题非常有帮助,但是算法的实现比较困难,需慎重使用。 7. 网格算法和穷举法。两者都是暴力搜索最优点的算法,在很多竞赛题中有应用,当重点讨论模型本身而轻视算法的时候,可以使用这种暴力方案,最好使用一些高级语言作为编程工具。 8. 一些连续数据离散化方法。很多问题都是实际来的,数据可以是连续的,而计算机只能处理离散的数据,因此将其离散化后进行差分代替微分、求和代替积分等思想是非常重要的。 9. 数值分析算法。如果在比赛中采用高级语言进行编程的话,那些数值分析中常用的算法比如方程组求解、矩阵运算、函数积分等算法就需要额外编写库函数进行调用。 10. 图象处理算法。赛题中有一类问题与图形有关,即使问题与图形无关,论文中也会需要图片来说明问题,这些图形如何展示以及如何处理就是需要解决的问题,通常使用MA TLAB 进行处理。 以下将结合历年的竞赛题,对这十类算法进行详细地说明。 以下将结合历年的竞赛题,对这十类算法进行详细地说明。 2 十类算法的详细说明 2.1 蒙特卡罗算法 大多数建模赛题中都离不开计算机仿真,随机性模拟是非常常见的算法之一。 举个例子就是97 年的A 题,每个零件都有自己的标定值,也都有自己的容差等级,而求解最优的组合方案将要面对着的是一个极其复杂的公式和108 种容差选取方案,根本不可能去求解析解,那如何去找到最优的方案呢?随机性模拟搜索最优方案就是其中的一种方法,在每个零件可行的区间中按照正态分布随机的选取一个标定值和选取一个容差值作为一种方案,然后通过蒙特卡罗算法仿真出大量的方案,从中选取一个最佳的。另一个例子就是去年的彩票第二问,要求设计一种更好的方案,首先方案的优劣取决于很多复杂的因素,同样不可能刻画出一个模型进行求解,只能靠随机仿真模拟。 2.2 数据拟合、参数估计、插值等算法 数据拟合在很多赛题中有应用,与图形处理有关的问题很多与拟合有关系,一个例子就是98 年美国赛A 题,生物组织切片的三维插值处理,94 年A 题逢山开路,山体海拔高度的插值计算,还有吵的沸沸扬扬可能会考的“非典”问题也要用到数据拟合算法,观察数据的

图论模型简介

图论模型简介 一、图及其矩阵表示 1、起源:哥尼斯堡七桥问题: 欧拉为了解决这个问题,建立数学模型:陆地——点,桥——边,得到一个有四个“点”,七条“边”的“图”。问题转化为能否从任一点出发一笔画出七条边再回到起点。欧拉考察了一般一笔画的结构特点,给出了一笔画判定法则:图是连通的,且每个顶点都与偶数条边相关联(这种图称为欧拉图)。由此可以得出结论:七桥问题无解。

2、基本概念: 图(graph):由顶点和边(又称线,边的两端必须是顶点)组成的一个结构。 邻接:一条边的两个端点称是邻接的;关联:边与其两端的顶点称是关联的。 无向图(graph):边无方向的图;有向图(digraph):边有方向的图。 路(path):由相邻边组成的序列,其中中间顶点互不相同。 圈(cycle):首、尾顶点相同的路,即闭路。 连通图(connected graph):图中任意两顶点间都存在路的图。 树(tree):无圈连通图 完全图(complete graph):任意两个顶点之间都有边相连的无向图,记为K n。 竞赛图(tournament):由完全图给每条边定向而得到的有向图。 二部图(bipartite graph):图的顶点分成两部分,只有不同部分顶点之间才有边相连。图G的子图H(subgraph):H是一个图,H的顶点(边)是图G的顶点(边)。 网络(Network):边上赋了权的有向图。

3、图的矩阵表示 无向图 有向图 0100010 11001011 011000 1 00???????????????? ???? ? ? ? ? ????????0110010100000100100000110

图论 模型

251 图论模型 图论是运筹学的一个经典和重要分支,专门研究图与网络模型的特点、性质以及求解方法。许多优化问题,可以利用图与网络的固有特性而形成的特定方法来解决,比用数学规划等其他模型来求解往往要简单且有效得多。 图论起源于1736年欧拉对柯尼斯堡七桥问题的抽象和论证。1936年,匈牙利数学家柯尼希(D. K?nig )出版的第一部图论专著《有限图与无限图理论》,树立了图论发展的第一座里程碑。近几十年来,计算机科学和技术的飞速发展,大大地促进了图论研究和应用,其理论和方法已经渗透到物理、化学、计算机科学、通信科学、建筑学、生物遗传学、心理学、经济学、社会学各个学科中。 9.1 图的基础理论 9.1.1 图的基本概念 所谓图,概括地讲就是由一些点和这些点之间的连线组成的。定义为(,)G V E =,V 是顶点的非空有限集合,称为顶点集。E 是边的集合,称为边集。边一般用(,)i j v v 表示,其中 ,i j v v 属于顶点集V 。 以下用V 表示图(,)G V E =中顶点的个数,E 表示边的条数。 如图9.1是几个图的示例,其中图9.1 (a)共有3个顶点、2条边,将其表示为 (,)G V E =,123{,,}V v v v =,1213{(,),(,)}E v v v v =. 2 3 v 45 v 3 4 (a) (c) 图9.1 图的示意图 1.无向图和有向图 如果图的边是没有方向的,则称此图为无向图(简称为图),无向图的边称为无向边(简称边)。如图9.1 (a)和(b)都是无向图。连接两顶点i v 和j v 的无向边记为(,)i j v v 或(,)j i v v 。 如果图的边是有方向(带箭头)的,则称此图为有向图,有向图的边称为弧(或有向边),如图9.1 (c)是一个有向图。连接两顶点i v 和j v 的弧记为,i j v v ??,其中i v 称为起点,j v 称为终点。显然此时弧,i j v v ??与弧,j i v v ??是不同的两条有向边。有向图的弧的起点称为弧头,弧的终点称为弧尾。有向图一般记为(,)D V A =,其中V 为顶点集,A 为弧集。 例如图9.1 (C)可以表示为(,)D V A =,顶点集1234{,,,}V v v v v =,弧集为1223{,,,, A v v v v =????243441,,,,,}v v v v v v ??????。 对于图除非指明是有向图,一般地,所谓的图都是指无向图。有向图也可以用G 表示。 例9.1 设12345{,,,,}V v v v v v =,12345{,,,,}E e e e e e =,其中

数学建模中常见的十大模型讲课稿

数学建模中常见的十 大模型

精品文档 数学建模常用的十大算法==转 (2011-07-24 16:13:14) 转载▼ 1. 蒙特卡罗算法。该算法又称随机性模拟算法,是通过计算机仿真来解决问题的算法,同时可以通过模拟来检验自己模型的正确性,几乎是比赛时必用的方法。 2. 数据拟合、参数估计、插值等数据处理算法。比赛中通常会遇到大量的数据需要处理,而处理数据的关键就在于这些算法,通常使用MA TLAB 作为工具。 3. 线性规划、整数规划、多元规划、二次规划等规划类算法。建模竞赛大多数问题属于最优化问题,很多时候这些问题可以用数学规划算法来描述,通常使用Lindo、Lingo 软件求解。 4. 图论算法。这类算法可以分为很多种,包括最短路、网络流、二分图等算法,涉及到图论的问题可以用这些方法解决,需要认真准备。 5. 动态规划、回溯搜索、分治算法、分支定界等计算机算法。这些算法是算法设计中比较常用的方法,竞赛中很多场合会用到。 6. 最优化理论的三大非经典算法:模拟退火算法、神经网络算法、遗传算法。这些问题是用来解决一些较困难的最优化问题的,对于有些问题非常有帮助,但是算法的实现比较困难,需慎重使用。 7. 网格算法和穷举法。两者都是暴力搜索最优点的算法,在很多竞赛题中有应用,当重点讨论模型本身而轻视算法的时候,可以使用这种暴力方案,最好使用一些高级语言作为编程工具。 8. 一些连续数据离散化方法。很多问题都是实际来的,数据可以是连续的,而计算机只能处理离散的数据,因此将其离散化后进行差分代替微分、求和代替积分等思想是非常重要的。 9. 数值分析算法。如果在比赛中采用高级语言进行编程的话,那些数值分析中常用的算法比如方程组求解、矩阵运算、函数积分等算法就需要额外编写库函数进行调用。 10. 图象处理算法。赛题中有一类问题与图形有关,即使问题与图形无关,论文中也会需要图片来说明问题,这些图形如何展示以及如何处理就是需要解决的问题,通常使用MATLAB 进行处理。 以下将结合历年的竞赛题,对这十类算法进行详细地说明。 以下将结合历年的竞赛题,对这十类算法进行详细地说明。 2 十类算法的详细说明 2.1 蒙特卡罗算法 大多数建模赛题中都离不开计算机仿真,随机性模拟是非常常见的算法之一。 举个例子就是97 年的A 题,每个零件都有自己的标定值,也都有自己的容差等级,而求解最优的组合方案将要面对着的是一个极其复杂的公式和108 种容差选取方案,根本不可能去求解析解,那如何去找到最优的方案呢?随机性模拟搜索最优方案就是其中的一种方法,在每个零件可行的区间中按照正态分布随机的选取一个标定值和选取一个容差值作为一种方案,然后通过蒙特卡罗算法仿真出大量的方案,从中选取一个最佳的。另一个例子就是去年的彩票第二问,要求设计一种更好的方案,首先方案的优劣取决于很多复杂的因素,同样不可能刻画出一个模型进行求解,只能靠随机仿真模拟。 2.2 数据拟合、参数估计、插值等算法 数据拟合在很多赛题中有应用,与图形处理有关的问题很多与拟合有关系,一个例子就是98 年美国赛A 题,生物组织切片的三维插值处理,94 年A 题逢山开路,山体海拔高度的 收集于网络,如有侵权请联系管理员删除

第8节图论应用实例_图着色问题

第8节图论应用实例_图着色问题 预备知识_回溯法 回溯法:在实际生活中,有些问题是不能用数学公式去解决的,它需要通过一个过程,此过程要经过若干个步骤才能完成,每一个步骤又分为若干种可能;同时,为了完成任务,还必须遵守一些规则,但这些规则无法用数学公式表示,对于这样一类问题,一般采用搜索的方法来解决,回溯法就是搜索算法(广度优先、深度优先等)中的一种控制策略,它能够解决许多搜索中问题。 回溯法基本思想:试探法,撞了南墙就回头。(一般采用深度优先搜索策略) 搜索策略:深度优先(不撞南墙不回头)。 在搜索过程中,如果求解失败,则返回搜索步骤中的上一点,去寻找新的路径,以求得答案。要返回搜索,前进中的某些状态必须保存,才能使得退回到某种状态后能继续向前。 白话搜索:如果用数组存放搜索信息,i表示数组下标(当前状态), ++i表示往前走(下一个状态),--i表示回溯(往回退,返回上一次状态)。 第8节图论应用实例_图着色(graph coloring)问题数学定义:给定一个无向图G=(V, E),其中V为顶点集合,E为边集合,图着色问题即为将V分为k个颜色组(k为颜色数),每个组形成一个独立集,即其中没有相邻的顶点。其优化版本是希望获得最小的k值。 典型应用:地图的着色、调度问题等。 k-着色判定问题:给定无向连通图G和k种不同的颜色。用这些颜色为图G的各顶点着色,每个顶点着一种颜色,是否有一种着色法使G中任意相邻的2个顶点着不同颜色,

例四色问题。设有如图1的地图,每个区域代表一个省,区域中的数字表示省的编号,现在要求给每个省涂上红、蓝、黄、白四种颜色之一,同时使相邻的省份以不同的颜色区分。 课外拓展:搜索“四色问题”,了解四色问题相关知识。 5 6 74 2 31 图1 问题分析: (1)属于图的搜索问题。将问题简化:将每个省抽象为一个点,省之间的联系看为一条边,可以得到图2。 1 67 5 1 4 32 图2 (2)用邻接矩阵表示各省之间的相邻关系,二维数组实现: 1 表示省i与省j相邻, ,,ri,j,,0 表示省i与省j不相邻, 由图2可以得到如下矩阵:(对称矩阵) 1 2 3 4 5 6 7

图论模型的建立与转化

图论模型的建立与转化 关键字:图论模型、建立、转化 摘要 本文主要写图论模型的建立与转化,共分四部分: 第一部分引言说明了图论建模在整个信息学竞赛中的地位,以及图论模型与其它数学模型的异同,并指出很有研究总结图论建模的思想、方法及技巧的必要。 第二部分提出了图论模型建立中的两个要点:对原型中的要素进行适当的取舍和选择合适的理论体系,并分别举例加以详细分析,然后从中总结出了图论建模的总的原则:准确、清晰、简明。 第三部分主要讨论了在图论模型的转化中,应用得较为广泛的两种方法:拆分转化和补集转化,并着重分析了前者。文中把前者分为三类:点→边、点→点、边→边,其中详细分析了第二类。 第四部分总结了全文,并指出了进一步研究图论模型的必要性 目录 一.引言 (2) 二.图论模型的建立 (2) I.要素的取舍 (2) II.选择合适的理论体系 (4) 三.图论模型的转化 (7) I.拆分转化 (7) II.补集转化 (10) 四.结语 (11)

正文 一.引言 信息学竞赛以解题为主,整个解题过程中一个重要的步骤就是数学建模,本文要讨论的就是数学建模的一个分支——图论建模。 图论建模是指对一些客观事物进行抽象、化简,并用图1来描述事物特征及内在联系的过程。 建立图论模型的目的和建立其它的数学模型一样,都是为了简化问题,突出要点,以便更深入地研究问题的本质;它的求解目标可以是最优化问题,也可以是存在性或是构造性问题;并且,和几何模型、运筹学模型一样,在建立图论模型的过程中,也需要用到集合、映射、函数等基本的数学概念和工具; 但图论模型和其它模型在它们的研究方法上又有着很大的不同,例如我们可以运用典型的图论算法来对图论模型进行求解,或是根据图论的基本理论来分析图论模型的性质,这些特殊的算法和理论都是其它模型所不具备的,而且在其它模型中,能用类似于图这种直观的结构来描述的也很少。 我们学习图论,一般都是通过书籍,但书上介绍的往往只限于图论模型的基本要素、一些图论的相关理论和经典算法等,至于如何建立图论模型、如何运用这些理论和算法、如何研究图论问题,都只有靠自己来理解、来领会,并通过实践来验证这些理解,通过摸索总结来提高自己的能力。 在建立图论模型的过程中,我们常常会遇到一些困难,例如难以建立点、边、权关系,或是原型中的一些重要因素无法纳入现有模型,或是现有模型虽能表示原型,却无法求解等等。为了克服这些困难,就需要用到某些独特的思想、方法和技巧,本文要写的正是我在学习、实践中得出的这方面的一点认识。 二.图论模型的建立 在建立模型之前,我们首先要对研究对象进行全面的调查,将原型理想化、简单化(对于竞赛题而言,这一步大部分已经由出题人完成了);然后对原型进行初步的分析,分清其中的各个要素及求解目标,理出它们之间的联系;下一步就是用恰当的模型来描述这些要素及联系。 I.要素的取舍 在用图论模型描述研究对象时,为了更突出与求解目标息息相关的要素,降低思考的复杂度,就不可避免地要舍去部分要素。下面我们就通过例1来分析一下。 【例1】导线排布Line[7]: 题目(文档附件:导线排布.doc)中蓝色的一段是问题描述的重点,其中涉及的要素有圆圈、N根导线、2N个端点、编号规则、导线的交叉等,求解目标是构造一种符合所给的导线交叉情况的导线排布方案。 起先,我们对题目描述的导线排布并不熟悉,或许我们能够画出几个无解或是多解的1在本文中,“图”专指由若干不同顶点与连接其中某些顶点的边所组成的图形[6],不包括一般的示意图。

数学建模中常见的十大模型

数学建模中常见的十大 模型 Document serial number【KKGB-LBS98YT-BS8CB-BSUT-BST108】

数学建模常用的十大算法==转 (2011-07-24 16:13:14) 1. 蒙特卡罗算法。该算法又称随机性模拟算法,是通过计算机仿真来解决问题的算法,同时可以通过模拟来检验自己模型的正确性,几乎是比赛时必用的方法。 2. 数据拟合、参数估计、插值等数据处理算法。比赛中通常会遇到大量的数据需要处理,而处理数据的关键就在于这些算法,通常使用MATLAB 作为工具。 3. 线性规划、整数规划、多元规划、二次规划等规划类算法。建模竞赛大多数问题属于最优化问题,很多时候这些问题可以用数学规划算法来描述,通常使用Lindo、Lingo 软件求解。 4. 图论算法。这类算法可以分为很多种,包括最短路、网络流、二分图等算法,涉及到图论的问题可以用这些方法解决,需要认真准备。 5. 动态规划、回溯搜索、分治算法、分支定界等计算机算法。这些算法是算法设计中比较常用的方法,竞赛中很多场合会用到。 6. 最优化理论的三大非经典算法:模拟退火算法、神经网络算法、遗传算法。这些问题是用来解决一些较困难的最优化问题的,对于有些问题非常有帮助,但是算法的实现比较困难,需慎重使用。 7. 网格算法和穷举法。两者都是暴力搜索最优点的算法,在很多竞赛题中有应用,当重点讨论模型本身而轻视算法的时候,可以使用这种暴力方案,最好使用一些高级语言作为编程工具。

8. 一些连续数据离散化方法。很多问题都是实际来的,数据可以是连续的,而计算机只能处理离散的数据,因此将其离散化后进行差分代替微分、求和代替积分等思想是非常重要的。 9. 数值分析算法。如果在比赛中采用高级语言进行编程的话,那些数值分析中常用的算法比如方程组求解、矩阵运算、函数积分等算法就需要额外编写库函数进行调用。 10. 图象处理算法。赛题中有一类问题与图形有关,即使问题与图形无关,论文中也会需要图片来说明问题,这些图形如何展示以及如何处理就是需要解决的问题,通常使用MATLAB 进行处理。 以下将结合历年的竞赛题,对这十类算法进行详细地说明。 以下将结合历年的竞赛题,对这十类算法进行详细地说明。 2 十类算法的详细说明 蒙特卡罗算法 大多数建模赛题中都离不开计算机仿真,随机性模拟是非常常见的算法之一。 举个例子就是97 年的A 题,每个零件都有自己的标定值,也都有自己的容差等级,而求解最优的组合方案将要面对着的是一个极其复杂的公式和108 种容差选取方案,根本不可能去求解析解,那如何去找到最优的方案呢随机性模拟搜索最优方案就是其中的一种方法,在每个零件可行的区间中按照正态分布随机的选取一个标定值和选取一个容差值作为一种方案,然后通过蒙特卡罗算法仿真出大量的方案,从中选取一个最佳的。另一个例子就是去年的彩票第二问,要求设计一种更好的方案,首先方案的优劣取决于很多复杂的因素,同样不可能刻画出一个模型进行求解,只能靠随机仿真模拟。

数学建模常用算法模型

按模型的数学方法分: 几何模型、图论模型、微分方程模型、概率模型、最优控制模型、规划论模型、马氏链模型等 按模型的特征分: 静态模型和动态模型,确定性模型和随机模型,离散模型和连续性模型,线性模型和非线性模型等 按模型的应用领域分: 人口模型、交通模型、经济模型、生态模型、资源模型、环境模型等。 按建模的目的分: 预测模型、优化模型、决策模型、控制模型等 一般研究数学建模论文的时候,是按照建模的目的去分类的,并且是算法往往也和建模的目的对应 按对模型结构的了解程度分: 有白箱模型、灰箱模型、黑箱模型等 比赛尽量避免使用,黑箱模型、灰箱模型,以及一些主观性模型。 按比赛命题方向分: 国赛一般是离散模型和连续模型各一个,2016美赛六个题目(离散、连续、运筹学/复杂网络、大数据、环境科学、政策) 数学建模十大算法 1、蒙特卡罗算法 (该算法又称随机性模拟算法,是通过计算机仿真来解决问题的算法,同时可以通过模拟可以来检验自己模型的正确性,比较好用的算法) 2、数据拟合、参数估计、插值等数据处理算法 (比赛中通常会遇到大量的数据需要处理,而处理数据的关键就在于这些算法,通常使用Matlab作为工具)

3、线性规划、整数规划、多元规划、二次规划等规划类问题 (建模竞赛大多数问题属于最优化问题,很多时候这些问题可以用数学规划算法来描述,通常使用Lindo、Lingo软件实现) 4、图论算法 (这类算法可以分为很多种,包括最短路、网络流、二分图等算法,涉及到图论的问题可以用这些方法解决,需要认真准备) 5、动态规划、回溯搜索、分治算法、分支定界等计算机算法 (这些算法是算法设计中比较常用的方法,很多场合可以用到竞赛中) 6、最优化理论的三大非经典算法:模拟退火法、神经网络、遗传算法 (这些问题是用来解决一些较困难的最优化问题的算法,对于有些问题非常有帮助,但是算法的实现比较困难,需慎重使用) 7、网格算法和穷举法 (当重点讨论模型本身而轻视算法的时候,可以使用这种暴力方案,最好使用一些高级语言作为编程工具) 8、一些连续离散化方法 (很多问题都是从实际来的,数据可以是连续的,而计算机只认的是离散的数据,因此将其离散化后进行差分代替微分、求和代替积分等思想是非常重要的) 9、数值分析算法 (如果在比赛中采用高级语言进行编程的话,那一些数值分析中常用的算法比如方程组求解、矩阵运算、函数积分等算法就需要额外编写库函数进行调用)10、图象处理算法 (赛题中有一类问题与图形有关,即使与图形无关,论文中也应该要不乏图片的这些图形如何展示,以及如何处理就是需要解决的问题,通常使用Matlab进行处理) 算法简介 1、灰色预测模型(必掌握)

图论模型及其解答

各种图论模型及其解答 摘要: 本文用另一种思路重新组织《图论及其应用》相关知识。首先,用通俗化语言阐述了如何对事物间联系的问题进行图论建模;接着从现实例子出发,给出各种典型图论模型,每种图论模型对应于图论一个重要内容;再者,介绍相关知识对上述提到的图论模型涉及的问题进行解答;最后,补充一些图论其他知识,包括图论分支、易混概念。 符号约定: Q(Question)表示对问题描述,M(Modeling)表示数学建模过程,A(Answer)表示原问题转化为何种图论问题。 一、引言 图论是研究点、线间关系的一门学科,属于应用数学的一部分。现实生活中,凡是涉及到事物间的关系,都可以抽象为图论模型。点表示事物,连线表示事物间的联系。整个求解过程如下: 原问题——>图论建模——>运用图论相关理论求解——>转化为原问题的解 整个过程关键在于图论建模,所谓图论建模,就是明确点表示什么,连线表示什么,原问题转化为图论中的什么问题。存在以下两种情况: ①若事物间联系是可逆的(比如双行道,朋友),则抽象成无向图 ②若事物间联系是不可逆的(比如单行道,状态转化不可逆),则抽象成有向图 如果需要进一步刻画事物间的联系(比如城市间的距离),就给连线赋一个权值,从而抽象成赋值图。 综上,根据实际问题,可建模成下列图论模型的一种:无向赋权图、有向赋权图、无向非赋权图、有向非赋权图。 例1.宴会定理:任何一宴会中,一定存在两个人有相同的数量朋友M:点表示人,连线表示当且仅当该两个人是朋友 A:问题转化为任何一个图一定存在两个顶点的度相等 二、图论模型 接下来介绍若干典型的图论模型,每种模型几乎对应于图论的一个重要内容,这些内容将在第三章进行讨论,也就给出了这些模型的解答思路。 2.1 偶图模型 凡涉及两类事物间的联系(即只考虑两类事物间的联系,而不考虑同类事物间的联系),均可抽象成偶图模型。作图时,将两类事物分成两行或者两列。这

第九章 图论模型

第九章 图论模型 现实世界的许多实际问题都可以用图形来解释或说明.例如通讯网络就可以用图的形式直观的表现出来:点可以表示通讯中心,而边表示通讯线路.图论模型是应用十分广泛的数学模型,它已经在物理、化学、控制论、信息论、科学管理和计算机等领域.由于它具有图形直观,方法简单容易掌握的特点,因此在实际、生活和数学建模中,有许多问题可以运用图论的理论和方法解决. §9.1图论起源 图论起源于18世纪欧拉对哥尼斯堡七桥问题的研究.哥尼斯堡是18世纪东普鲁士的一个城市,城中有一条普雷格尔河,河中有两个岛,河上有七座桥,如图1所示. 图1 当时那里的居民热终于思考这样一个问题,一个人能否经过七座桥且每座桥只走过一次,最后回到出发点.能否用数学的方法解决这个问题一贯成为当时居民的一个悬而未决的问题. 1736年欧拉创造性的将陆地用点表示,桥用边表示,从而将这个问题转化为如图2所示的一笔画问题,即能否从某个点开始一笔画出这个图形,最后回到原点而不重复.欧拉证明了这个问题是不可能的. 图2 欧拉解决七桥问题时,其方法超出了常用的数学方法,充分发挥自己的想象力,用了全新的思想方法,从而使得问题得到完美解决.由于这一项开创性的工作,产生了“图论”这门崭新学科,欧拉被认为是图论的创始人. A B C D A B C D 1 e 2 e 5e 6e 7 e 4 e 3 e

§9.2基本概念 定义1 图G 由两个点集合V 以及边集合E 组成,记为(),G V E =,其中: (1)V 是顶点构成的集合; (2)E 是连接某些顶点对构成的边组成的集合. 例1 {}1234,,,V v v v v =,{}12232434,,,E e e e e =,画出图(),G V E =. 图3 注:图分为无向图和有向图. 定义2 若图(),G V E =的边均没有方向,这样的图成为无向图.例如图2,图3为无向图.无向图的边称为无向边,无向边是由两个顶点构成的无序对,无序对通常用圆括号表示. 例2 () ,i j v v 表示一条无向边,(),i j v v 与() ,j i v v 是同一条边. 定义3 若图(),G V E =的边均有方向,这样的图称为有向图.有向图的边称为有向边,有向边是由两个顶点构成的有序对,有序对通常用尖括号表示.有向边又称为弧. 例3 ,i j v v 表示一条有向边,,i j v v 与,j i v v 是两条不同的有向边. 定义4 一条边的端点称为与这条边关联,反之,一条边称为与它的端点关联.与同一条边关联的两个端点是邻接的.如果两边有一个公共端点,则这两条边是邻接的。两个端点重合为一点的边称为圈,不与任何边关联的点成为孤立点. 例4 如图4所示,理解定义4 图4 注:若图(),G V E =中V 和E 为有限集,称图G 为有限图,没有任何边的图为空图,只有一个点的图称为平凡图。一个图既无圈又没有两边连接同一对点的图称为简单图。 例5 结合图5理解上述概念。 5 v 4 v 3 1 v 2 v 3 v 4v 12 e 23 e 24 e 34 e

模型实例-红绿灯的调节

模型实例-----红绿灯调节问题 问题的背景及提出 在车辆拥挤的交叉路口,需要合理地调节各车道安置的红绿灯,使车辆能够顺利、有效地通过。首先应使各道都的车辆互不冲突地顺利驶过路口,其次希望效能尽量地高,试制定合适的方案。 假 设 1 我们以一个十字路口为例,含有六个交通流,见图7-1。 2 车辆在经过路口时匀速,在先后两个绿灯交替时,两个交通流不互相冲突。 3 尽量使多个交通流同时使用绿灯,和同时使用地交通流称为相容的。 4 六个交通流的红绿灯的调节是周期性的,譬如60秒。 5 直行和转弯车辆的数量比为λ1:λ2。 6 每个交通流至少使用绿灯时间10秒。 7 以各交通流总的绿灯时间作为衡量红绿灯调节优劣的指标。 模 型 建 立 设图G =,f :V →实轴上的开区间集,令f(v)=J(v)。若v 和u 相邻当且仅当J(v)和J(u)相交,则称G 是区间图。 由假设4,我们先在一个周期时间段上解决问题。取时间轴上0到60秒这段区间,记 为I ,I 上的子区间称为时段。我们进行红绿灯调节实际上是建立一个交通流到I 上时段的函数J ,即把I 分成若干时段,将这些 时段作为绿灯时间分配给各交通流,使之满足假设3、5、6、7。 故我们可以利用图论中的区间图来解决。下面把此问题用图来表示。 我们研究的主要问题是交通流的红绿灯的使用问题,即交通 流之间是否可以同时使用绿灯(相容)。故我们按下面准则建立图:每个交通流用一个顶表示, V={a ,b ,c ,d ,e ,f};当两个交通流是相容的,它们对应的顶之间连一条边,这样得到的图称为交通流的相容图,见图7-2。 发现图7-2交通流相容图不是区间图,即c 和d 、d 和e 、e 和f 、f 和c 同时使用绿灯,c 和e 、d 和f 不同时使用绿灯是做不到的。又由于相容的交通流可以不必同时使用绿灯,为 b 图7-1: 十字路口的六条车道 a b c d f e 图7-2

数学建模中常见的十大模型

数学建模中常见的十大 模型 集团标准化工作小组 #Q8QGGQT-GX8G08Q8-GNQGJ8-MHHGN#

数学建模常用的十大算法==转 (2011-07-24 16:13:14) 1. 蒙特卡罗算法。该算法又称随机性模拟算法,是通过计算机仿真来解决问题的算法,同时可以通过模拟来检验自己模型的正确性,几乎是比赛时必用的方法。 2. 数据拟合、参数估计、插值等数据处理算法。比赛中通常会遇到大量的数据需要处理,而处理数据的关键就在于这些算法,通常使用MATLAB 作为工具。 3. 线性规划、整数规划、多元规划、二次规划等规划类算法。建模竞赛大多数问题属于最优化问题,很多时候这些问题可以用数学规划算法来描述,通常使用Lindo、Lingo 软件求解。 4. 图论算法。这类算法可以分为很多种,包括最短路、网络流、二分图等算法,涉及到图论的问题可以用这些方法解决,需要认真准备。 5. 动态规划、回溯搜索、分治算法、分支定界等计算机算法。这些算法是算法设计中比较常用的方法,竞赛中很多场合会用到。 6. 最优化理论的三大非经典算法:模拟退火算法、神经网络算法、遗传算法。这些问题是用来解决一些较困难的最优化问题的,对于有些问题非常有帮助,但是算法的实现比较困难,需慎重使用。 7. 网格算法和穷举法。两者都是暴力搜索最优点的算法,在很多竞赛题中有应用,当重点讨论模型本身而轻视算法的时候,可以使用这种暴力方案,最好使用一些高级语言作为编程工具。

8. 一些连续数据离散化方法。很多问题都是实际来的,数据可以是连续的,而计算机只能处理离散的数据,因此将其离散化后进行差分代替微分、求和代替积分等思想是非常重要的。 9. 数值分析算法。如果在比赛中采用高级语言进行编程的话,那些数值分析中常用的算法比如方程组求解、矩阵运算、函数积分等算法就需要额外编写库函数进行调用。 10. 图象处理算法。赛题中有一类问题与图形有关,即使问题与图形无关,论文中也会需要图片来说明问题,这些图形如何展示以及如何处理就是需要解决的问题,通常使用MATLAB 进行处理。 以下将结合历年的竞赛题,对这十类算法进行详细地说明。 以下将结合历年的竞赛题,对这十类算法进行详细地说明。 2 十类算法的详细说明 蒙特卡罗算法 大多数建模赛题中都离不开计算机仿真,随机性模拟是非常常见的算法之一。 举个例子就是97 年的A 题,每个零件都有自己的标定值,也都有自己的容差等级,而求解最优的组合方案将要面对着的是一个极其复杂的公式和108 种容差选取方案,根本不可能去求解析解,那如何去找到最优的方案呢随机性模拟搜索最优方案就是其中的一种方法,在每个零件可行的区间中按照正态分布随机的选取一个标定值和选取一个容差值作为一种方案,然后通过蒙特卡罗算法仿真出大量的方案,从中选取一个最佳的。另一个例子就是去年的彩票第二问,要求设计一种更好的方案,首先方案的优劣取决于很多复杂的因素,同样不可能刻画出一个模型进行求解,只能靠随机仿真模拟。

图论模型建立与转化

图论模型的建立与转化 安徽徐静 关键字:图论模型、建立、转化 摘要 本文主要写图论模型的建立与转化,共分四部分: 第一部分引言说明了图论建模在整个信息学竞赛中的地位,以及图论模型与其它数学模型的异同,并指出很有研究总结图论建模的思想、方法及技巧的必要。 第二部分提出了图论模型建立中的两个要点:对原型中的要素进行适当的取舍和选择合适的理论体系,并分别举例加以详细分析,然后从中总结出了图论建模的总的原则:准确、清晰、简明。 第三部分主要讨论了在图论模型的转化中,应用得较为广泛的两种方法:拆分转化和补集转化,并着重分析了前者。文中把前者分为三类:点→边、点→点、边→边,其中详细分析了第二类。 第四部分总结了全文,并指出了进一步研究图论模型的必要性。 目录 一.引言 (2) 二.图论模型的建立 (2) I.要素的取舍 (2) II.选择合适的理论体系 (4) 三.图论模型的转化 (7) I.拆分转化 (7) II.补集转化 (10) 四.结语 (11)

正文 一.引言 信息学竞赛以解题为主,整个解题过程中一个重要的步骤就是数学建模,本文要讨论的就是数学建模的一个分支——图论建模。 图论建模是指对一些客观事物进行抽象、化简,并用图[1]来描述事物特征及内在联系的过程。 建立图论模型的目的和建立其它的数学模型一样,都是为了简化问题,突出要点,以便更深入地研究问题的本质;它的求解目标可以是最优化问题,也可以是存在性或是构造性问题;并且,和几何模型、运筹学模型一样,在建立图论模型的过程中,也需要用到集合、映射、函数等基本的数学概念和工具; 但图论模型和其它模型在它们的研究方法上又有着很大的不同,例如我们可以运用典型的图论算法来对图论模型进行求解,或是根据图论的基本理论来分析图论模型的性质,这些特殊的算法和理论都是其它模型所不具备的,而且在其它模型中,能用类似于图这种直观的结构来描述的也很少。 我们学习图论,一般都是通过书籍,但书上介绍的往往只限于图论模型的基本要素、一些图论的相关理论和经典算法等,至于如何建立图论模型、如何运用这些理论和算法、如何研究图论问题,都只有靠自己来理解、来领会,并通过实践来验证这些理解,通过摸索总结来提高自己的能力。 在建立图论模型的过程中,我们常常会遇到一些困难,例如难以建立点、边、权关系,或是原型中的一些重要因素无法纳入现有模型,或是现有模型虽能表示原型,却无法求解等等。为了克服这些困难,就需要用到某些独特的思想、方法和技巧,本文要写的正是我在学习、实践中得出的这方面的一点认识。 二.图论模型的建立 在建立模型之前,我们首先要对研究对象进行全面的调查,将原型理想化、简单化(对于竞赛题而言,这一步大部分已经由出题人完成了);然后对原型进行初步的分析,分清其中的各个要素及求解目标,理出它们之间的联系;下一步就是用恰当的模型来描述这些要素及联系。 I.要素的取舍 在用图论模型描述研究对象时,为了更突出与求解目标息息相关的要素,降低思考的复杂度,就不可避免地要舍去部分要素。下面我们就通过例1来分析一下。 【例1】导线排布Line[7]: 题目(文档附件:导线排布.doc)中蓝色的一段是问题描述的重点,其中涉及的要素有圆圈、N根导线、2N个端点、编号规则、导线的交叉等,求解目标是构造一种符合所给的导线交叉情况的导线排布方案。 起先,我们对题目描述的导线排布并不熟悉,或许我们能够画出几个无解或是多解的例子,但竞赛时我们不可能花更多的时间在熟悉题目上了,这时只有尽快地把我们不熟悉的、难于思考的原型转化成我们熟知的、便于思考的模型。 先来分析求解目标:所谓的构造导线排布方案,也就是找出每根导线两个端点的编号;而编号要满足的条件就是导线交叉的情况。 那么下一步我们就来分析一下编号与导线交叉之间的关系。记第i根导线两端点的标号为Ai和Bi(AiB1,A2>B2,A1>A2(根据编号规则),不同的是(a)满足A2>B1,B1>B2,

基于Matlab平台的图论模型的仿真实验

第28卷一第8期 长一春一大一学一学一报 Vol.28一No.8 一2018年8月JOURNALOFCHANGCHUNUNIVERSITYAug.2018一 收稿日期:2018 ̄04 ̄20 基金项目:山东科技项目(J15L157) 作者简介:孙建英(1979-)?女?山东烟台人?副教授?硕士?主要从事应用数学方面研究?基于Matlab平台的图论模型的仿真实验 孙建英 (青岛理工大学琴岛学院?山东青岛266106) 摘一要:在Matlab2014a平台下?利用图论工具箱中的函数求解图论模型中的最短路二最大流和最小支撑树问题?用3个实例进行仿真?能快速方便地得到最优解?对图论模型的进一步研究有重要意义和实用价值? 关键词:最短路?最大流?最小支撑树?Matlab2014a 中图分类号:O29一一一文献标志码:A一一一文章编号:1009-3907(2018)08-0021-04 一一图论模型是数学建模中一类非常重要的模型?它的应用非常广泛?购买机票二设备更新二配送路线选择等?都属于最短路径问题?景区的旅游车辆的最大通行量二石油管道的最大输送量等?都属于最大流问题?电线的架设问题二居民区的供水管道问题等?都属于最小支撑树问题?Matlab2014a平台中的图论工具箱?可以实现图论模型的快速求解?不必编写复杂的程序?对计算机不是很懂的学者也可以很快地掌握?本文从3个实例出发?详细介绍了如何利用图论工具箱快速准确地求解图论模型中的最短路二最大流和最小支撑树问题?对图论模型的进一步研究有重要意义和实用价值? 1一预备知识 1.1一图论工具箱Matlab2014a平台下图论工具箱中的相关函数?如表1所示? 表1一Matlab图论工具箱中的相关函数函数名 功能介绍graphshortestpath 求解无向图和有向图中任意指定顶点的最短距离和最短路径graphmaxflow求解有向图中的最大流graphminspantree求解最小支撑树1.2一稀疏矩阵 稀疏矩阵是指零元素很多?非零元素比较少的矩阵? 稀疏矩阵的存储方式:a(i?j)=m?其中?a表示稀疏矩阵?i表示非零元素的行标?j表示非零元素的列标?m表示非零元素的数值? 稀疏矩阵的使用说明:1)有向图中?可以直接使用Matlab中的sparse命令?把邻接矩阵转化为稀疏矩阵?2)无向图中?由于Matlab只存储下三角矩阵中的非零元素?要先把邻接矩阵转置?再应用sparse命令?2一实例仿真 2.1一最短路问题 例1购买机票问题[1]:某集团公司在六个城市C1?C2? ?C6中有分公司?从Ci到Cj的直飞航程票价如表2所示( - 表示无直飞航班)?如今?集团巡视组要分别从C1出发到其他城市去检查工作?请问:应该如何安排航班?方可使得票价最低?

相关文档
最新文档