没有合适的资源?快使用搜索试试~ 我知道了~
信息学竞赛中的数学模型,需要大于20个字符,不支持HTML标签。 需要大于20个字符,不支持HTML标签。
资源详情
资源评论
资源推荐
数学模型及其在信息学竞赛中的应用
上海市复旦附中高三(8)班 郭一
【关键字】
数学模型,可靠性,可解性
【引言】
数学模型是人们解决现实问题的有力武器。人们把现实问题经过
科学地抽象、提炼得到数学模型,再用数学方法去解决。数学模型
可分为离散和连续两种。连续数学模型需要大量的高等数学知识,
中学生很少接触。在信息学竞赛经常出现的则是离散数学模型。本
文主要介绍的就是离散数学模型的一般概念及建立方法。
【正文】
所谓数学模型,就是现实世界中某一类特殊的运动变化过程、关系或结构
的一种模拟性的数学结构,其实也就是对现实模型进行科学抽象后得到的模型。
在信息学竞赛中,试题给出的问题通常是一个现实问题,这也就需要选手在审
清题意后首先把问题的关键因素总结、提炼出来,形成一个抽象的数学模型,
这样有利于问题的分析与解决。
一般来说,我们在解一道有关现实问题的试题时,需要分以下几个步骤:
1. 审清题意,了解题目的来龙去脉,弄清哪些量是已知的(输入),
需要求什么(输出),数据规模如何等等。这是解决问题的前提。
2. 建立模型,使之能够简洁高效地表达出题目给出的现实模型。
3. 解决模型,得出算法。建模之后就是要解决模型。这步顺利与否
很大部分上取决于所建模型的可解性如何。
4. 编程实现。
其中,2、3两步是关键。模型建立与解决得好与坏对能否成功解决该题
起着决定性的作用。
(一) 对于同一个现实问题,可能可以建立不同的数学模型
这种现象十分普遍,也就是平时所说的一题多解。既然如此,这里有必要
讨论一下数学模型的选择问题,其实也就是评判一个模型好坏标准的问题。一
个好的数学模型不仅要能够准确地反映出现实模型(可靠性),所建立的模型
还必须能够被有效地解决(可解性)。这里“有效”指的是解决它的算法所需的
空间与时间都在可以承受的范围之内。通常在解一些要求最优解或要求准确计
数的一类具有唯一正确解的试题时,我们一般在保证可靠性的前提下,尽量提
高模型的可解性。若几个模型都具有可靠性,则当然可解性越强的模型越好。
例: 最佳旅行路线问题 [IOI’93]
【问题描述】你在加拿大航空公司组织的一次竞赛中获奖,奖品是一张免
费机票,可在加拿大旅行,从最西的一个城市出发,单方向从西向东经若干城
市到达最东的一个城市(必须到达最东的城市);然后再单方向从东向西飞回
起点(可途径若干城市)。除起点城市外,任何城市只能访问1次,起点城市
被访问2次:出发一次;返回一次。除指定的航线外,不允许乘其他航线也不
允许使用其他交通工具。求解的问题是:给定城市表列及两城市之间的直通航
线表列,请找出一条旅行路线,在满足上述限制条件下,使访问的城市数尽可
能多。
这是一个现实问题,我们首先可以做如下的抽象:把每个城市抽象成一个顶
点。不妨设由西到东的城市对应编号分别是 1 至 n。若两个城市之间有直通航
线,则在相应的两点之间连一条边。这样,所有城市与直通航线就被抽象成了
一个无向图。
【盲目搜索】这是最原始的想法。我们一开始假想有两架飞机都从最西边
的城市飞向最东边的城市,并且在搜索的过程中保证两条路线中的城市除起点
与终点外都不相同。记下所有找到的路线中所经城市最多的方案,把其中的一
条作为向东旅行的路线,一条作为向西旅行的路线,合并起来即得最佳旅行路
线。
因为搜索的时间复杂度是指数级的,所以这样做的话,时间效率不够理想。
究其主要原因就是所有模型的抽象程度不够,没有把试题中的限制充分融入数
学模型中,盲目性太大。
【网络流模型】为了把更多的试题中的限制融入模型中,我们在原有的模型
的基础上建立了如下的最大费用最大流的模型:
1) 为了保证每个城市最多只能被访问一次,我们把每个城市 i 拆成
两个顶点 i 和 i’,并在两个顶点之间连接一条 i 至 i’的有向弧,单位费用
设为 0。
2) 将原图中的无向边改为有向弧:若城市 i 到城市 j 有直通航线
(i<j),则在顶点 i’与顶点 j 之间连接一条弧,方向由顶点 i’至顶点 j,
容量为 1,这样可以保证这条航线最多只能通过一次;费用为(j-i+1),
表示这条航线从西至东飞过的城市数(包括起点和终点)。这样使得我
们能够简单地从流量费用算出旅行路线上经过的城市数。
3) 顶点 1 与 1’,n 与 n’之间的弧的容量为 2。
至此,本题的数学模型已经建立,试题给出的限制条件已体现在数学
模型中,因此由此模型得出的解是可行的。我们求从 1 到 n’的最大费用最
大流。若得到的最大流量不是 2,则无解(即不可能从西飞到东再飞回
来),否则我们设得到的最大费用为 C。因为有两条路线,所以每个未被
访问的城市在费用中的贡献为 2,被访问的城市的贡献为 3。考虑到最西最
东两个城市的贡献是 2 而不是 3,旅行路线中访问城市数=C+2-2*N。因为
C 最大,所以访问城市数也一定最多,即方案最佳,模型具有可靠性。因
为这是一个最大费用最大流的问题,我们可以使用 Ford-Fulkerson 算法去解。
这个模型与搜索相比,可解性大大提高,时间复杂度从指数级降低到
了多项式级(大约为 O(N^3))。但我们还是觉得这个模型不够简洁,抽
象程度还是不够。
【动态规则模型】设 f[i,j]为从顶点 1 出发的两条不相交的路线分别到达顶
点 i 与顶点 j 时,两路线的所需乘航线之和的最大值。有两种情况,若 i>j,或
i=j=n 时,我们考虑 i 的前趋顶点,不妨设为 k。此时,到达顶点 k 与 j 的两条路
线的所需乘航线之和也一定最大,否则与 f[i,j]最大矛盾。若 i<j 时,结论同理可
得。由此,我们有如下的动态规则方程:
f [i, i] 无意义 (1<i<n)
实际最多可能的访问城市数为 f [n,n]-2。时间复杂度降为 O(N^2)。
对于最佳旅行路线这一个问题,我们建立了三种不同的数学模型。这三种
模型都具有可靠性(可以得出最优解),但可解性不同。一般来说,建立的模
型越简洁,抽象程度越高,算法实现时不必要的操作也越少,运行效率也就越
高。
值得注意的是,最近的一些竞赛中有时会出现根据解的近似程度给分的题
目。对于这类题目,我们更多考虑的则是所建模型的可解性。当然,可靠性的
降低也是有限度的,这个限度就是方案的可行性及误差允许范围。此外,许多
数学模型有近似解法,这些都是通过适当牺牲模型自身可靠性来提高模型的可
解性。
(二)一个模型可能同时适用于多个现实问题。
这也就是我们要研究数学模型的主要原因之一。我们解决一个数学模型就
相当于解决了一类问题。比如说,最短路径问题,可谓在现实生活中无处不在,
剩余10页未读,继续阅读
mostovoi1234
- 粉丝: 31
- 资源: 240
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
评论0