7 y. c, I, ]) d0 M' A! j 数学建模比赛是本科生和研究生阶段最重要的比赛之一,包括全国大学生数学建模竞赛(俗称“国赛”)和美国大学生数学建模竞赛(俗称“美赛”)。在这些比赛中取得好成绩,不仅有助于保研、有助于找工作,更重要的是形成科学的思维模式。下面列举了十大算法,在数学建模竞赛中有着无比广泛而重要的应用。2 r9 U8 l k+ a* E; @
6 j) g: P' f* p
01
/ h9 d5 \$ r5 G1 \$ ?' t( w M% n
: c6 p" L; l# Y0 t. |( ?
蒙特卡罗算法
# B! ?# R, A! n5 u) l1946 年,美国拉斯阿莫斯国家实验室的三位科学家 JohnvonNeumann, Stan Ulam和 Nick Metropolis 共同发明了蒙特卡罗方法。 7 M+ m I U) n1 m% g4 L蒙特卡罗方法(Monte Carlo method),又称随机抽样或统计模拟方法,是一种以概率统计理论为指导的一类非常重要的数值计算方法。此方法使用随机数(或更常见的伪随机数)来解决很多计算问题的方法。6 a2 B5 i. b* {. f
' T, w8 n! m: x9 p$ [由于传统的经验方法由于不能逼近真实的物理过程,很难得到满意的结果,而蒙特卡罗方法由于能够真实地模拟实际物理过程,故解决问题与实际非常符合,可以得到很圆满的结果。 3 r; U$ D) B( X& j8 q( o' K* | f5 P6 E6 ?. _ 蒙特卡罗方法的基本原理及思想如下:: {5 A k& i' ~
: g( d- f* D1 @8 S3 A
当所求解问题是某种随机事件出现的概率,或者是某个随机变量的期望值时,通过某种“实验”的方法,以这种事件出现的频率估计这一随机事件的概率,或者得到这个随机变量的某些数字特征,并将其作为问题的解。- i% b. }/ n( N2 x4 {) M v. e
) ]0 P3 C: l! Z 举个栗子,直观了解蒙特卡洛方法: 8 _7 _# t. o& r' M+ z3 N+ [ 3 _2 H6 ?, }8 N. R* E1 y& u6 @. j假设我们要计算一个不规则图形的面积,那么图形的不规则程度和分析性计算(比如:积分)的复杂程度是成正比的。蒙特卡洛方法是怎么计算的呢?假想你有一袋豆子,把豆子均匀地朝这个图形上撒,然后数这个图形之中有多少颗豆子,这个豆子的数目就是图形的面积。当你的豆子越小,撒的越多的时候,结果就越精确。在这里我们要假定豆子都在一个平面上,相互之间没有重叠。 2 I- z3 X+ I* { b0 y9 p7 S 2 I& }. R1 l, y: e* _& B# P# K5 Z6 Y2 }" u
蒙特卡罗方法通过抓住事物运动的几何数量和几何特征,利用数学方法来加以模拟,即进行一种数字模拟实验。它是以一个概率模型为基础,按照这个模型所描绘的过程,通过模拟实验的结果,作为问题的近似解。- o( R' J f0 K- Z! A1 p6 `
" ?% v8 @/ J& C
蒙特卡罗方法与一般计算方法有很大区别,一般计算方法对于解决多维或因素复杂的问题非常困难,而蒙特卡罗方法对于解决这方面的问题却比较简单。其特点如下:5 ]/ u! J0 O$ b% v1 s2 V( N
% m3 f& e" j% Q& y/ b3 p4 Ja、直接追踪粒子,物理思路清晰,易于理解; 6 ]- v( f$ E, ]! Z2 {% q H, k$ i. `, R. U0 s! q
b、采用随机抽样的方法,较真切的模拟粒子输运的过程,反映了统计涨落的规律; ! t+ w1 n( i3 f% G' H w- M/ r) }1 h L2 i5 Z' P" H! T4 m' p3 Q& N
c、不受系统多维、多因素等复杂性的限制,是解决复杂系统粒子输运问题的好方法等等 + \4 y4 P% O, S7 f W! q9 ?+ { f( ]. z4 Z0 K) X" T; s
02
5 X( |2 j" I* P/ ]0 [$ p
- d5 V+ d2 u$ G% [& c
数据拟合、参数估计、插值等数据处理算法
" G/ _0 H% X3 N5 h% T" \5 L
5 O) x/ b0 |" R7 }, y. q
我们通常会遇到大量的数据需要处理,而处理数据的关键就在于这些算法,通常使用 Matlab 作为工具。 2 S$ o( K( p! F; k 4 Q/ w/ z3 i2 ?4 m' ]" W8 C数据拟合在数学建模比赛中中有应用,与图形处理有关的问题很多与拟合有关系,一个例子就是 98 年数学建模美国赛 A 题,生物组织切片的三维插值处理,94 年 A 题逢山开路,山体海拔高度的插值计算,还有吵的沸沸扬扬可能会考的“非典”问题也要用到数据拟合算法,观察数据的走向进行处理。 - {# d9 F; t: B & U9 [. h6 h/ y ! F M# @4 R4 _. D此类问题在 MATLAB 中有很多现成的函数可以调用,熟悉 MATLAB,这些方法都能游刃有余的用好。$ J% |& I" m* |. D8 S2 J* w9 I# g$ G
" t9 \! |- m+ K& p6 w
03
. a! i% i+ M& o( ~8 _- Q
# Q, A( Z4 _7 o0 `- v$ _
线性规划、整数规划、多元规划、二次规划等规划类问题
( A$ c: O+ u) _9 w7 R7 r: ?# r# E
$ l" |9 G& g: k: u, _0 z
数学建模竞赛中很多问题都和数学规划有关,可以说不少的模型都可以归结为一组不等式作为约束条件、几个函数表达式作为目标函数的问题。- Y! |$ b; H# ~ h; U! G
, u. i+ X+ w0 y4 g @5 g! \% l3 V \7 X2 c6 {7 ~3 v& v/ O+ [
动态规划、回溯搜索、分治算法、分支定界等计算机算法
- }; y; @6 ^# r( z2 b3 Z7 u/ }* P$ r | R) [# j
在数学建模竞赛中,如:92 年 B 题用分枝定界法,97年 B 题是典型的动态规划问题,此外 98 年 B 题体现了分治算法。 3 Q5 A. ^( v/ x3 G- U. \7 H5 j $ H t, f' A: {2 e 2 a' v( g. q. s1 m+ E' E& n这方面问题和 ACM 程序设计竞赛中的问题类似,推荐看一下算法导论,与《计算机算法设计与分析》(电子工业出版社)等与计算机算法有关的书。 , z( @% Z3 n( p- I0 ]5 c# l- D+ e; C! N
06
/ t, d# f. X/ ]4 b
3 C( z, j- ?2 F- |
最优化理论的三大经典算法:模拟退火法、神经网络、遗传算法
, c# o* [* W, ?6 \$ O" S5 c+ z
1 f r* S3 i% j$ _# P
这十几年来最优化理论有了飞速发展,模拟退火法、神经网络、遗传算法这三类算法发展很快。- `9 V. T$ V0 w% ?3 v' T& e9 S
. {& x6 k9 l x6 F在数学建模竞赛中:比如 97 年 A 题的模拟退火算法,00 年 B 题的神经网络分类算法,01 年 B 题这种难题也可以使用神经网络。 9 l2 \2 l% M, m4 c& G% |! `4 D7 N; k i2 Y. r
还有美国竞赛 89 年 A 题也和 BP 算法有关系,当时是 86 年刚提出 BP 算法,89 年就考了,说明赛题可能是当今前沿科技的抽象体现。 ( F9 c( V* b0 p3 Q7 l3 d1 l% H ) \" D: |6 H$ c* h5 O03 年 B 题伽马刀问题也是目前研究的课题,目前算法最佳的是遗传算法。1 S' S$ h0 x4 y