QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 3762|回复: 2
打印 上一主题 下一主题

[其他资源] 数学建模竞赛必须要掌握的十个算法

[复制链接]
字体大小: 正常 放大

100

主题

17

听众

7548

积分

升级  50.96%

  • TA的每日心情
    开心
    2018-6-4 15:01
  • 签到天数: 7 天

    [LV.3]偶尔看看II

    群组2018年大象老师国赛优

    群组高考备战

    群组2018中小学数学建模冬

    跳转到指定楼层
    1#
    发表于 2018-10-29 10:01 |只看该作者 |倒序浏览
    |招呼Ta 关注Ta

    5 p) e. D) y, ^. z3 J数学建模比赛是本科生和研究生阶段最重要的比赛之一,包括全国大学生数学建模竞赛(俗称“国赛”)和美国大学生数学建模竞赛(俗称“美赛”)。在这些比赛中取得好成绩,不仅有助于保研、有助于找工作,更重要的是形成科学的思维模式。下面列举了十大算法,在数学建模竞赛中有着无比广泛而重要的应用。
    7 c' k# g0 V% j+ E2 C9 s8 s
    1 c) b: {& Z/ ^: P9 y1 x' y
    01

    + [8 U# J0 h% |/ W% r. J. `6 k2 M. C* R6 M% D7 H
    蒙特卡罗算法
    8 |( B. _9 _' t  G7 d( }
    1946 年,美国拉斯阿莫斯国家实验室的三位科学家 JohnvonNeumann, Stan Ulam和 Nick Metropolis 共同发明了蒙特卡罗方法。
    : v6 x% ^; G3 G- W+ g0 y5 `& G蒙特卡罗方法(Monte Carlo method),又称随机抽样或统计模拟方法,是一种以概率统计理论为指导的一类非常重要的数值计算方法。此方法使用随机数(或更常见的伪随机数)来解决很多计算问题的方法。
      d7 ^) A9 |1 o# X3 ^3 T7 m* i# [4 \5 }% _3 J; t
    由于传统的经验方法由于不能逼近真实的物理过程,很难得到满意的结果,而蒙特卡罗方法由于能够真实地模拟实际物理过程,故解决问题与实际非常符合,可以得到很圆满的结果。
    0 q0 a% z& O1 h0 y& H; P1 d- _
    $ Q" L. c+ q) c1 r; |蒙特卡罗方法的基本原理及思想如下:6 p7 H# X  d+ }

    2 y" h1 _8 m4 t3 n6 t" l$ Y当所求解问题是某种随机事件出现的概率,或者是某个随机变量的期望值时,通过某种“实验”的方法,以这种事件出现的频率估计这一随机事件的概率,或者得到这个随机变量的某些数字特征,并将其作为问题的解。) ~& q6 B0 v* k- e/ E

    % a+ U- w6 _' W# q" R3 O* j$ ^2 Z, Z举个栗子,直观了解蒙特卡洛方法:
    - Q( o' g- a2 U% j  I5 Z; _7 g6 C% j- G: X$ S" S! {% Q
    假设我们要计算一个不规则图形的面积,那么图形的不规则程度和分析性计算(比如:积分)的复杂程度是成正比的。蒙特卡洛方法是怎么计算的呢?假想你有一袋豆子,把豆子均匀地朝这个图形上撒,然后数这个图形之中有多少颗豆子,这个豆子的数目就是图形的面积。当你的豆子越小,撒的越多的时候,结果就越精确。在这里我们要假定豆子都在一个平面上,相互之间没有重叠。
    3 t2 u( C  ^4 ^3 N' J5 ^$ q) P
    8 s9 _) n& E% i4 n7 C5 H

    $ l7 o& R/ B2 |9 }+ @+ F蒙特卡罗方法通过抓住事物运动的几何数量和几何特征,利用数学方法来加以模拟,即进行一种数字模拟实验。它是以一个概率模型为基础,按照这个模型所描绘的过程,通过模拟实验的结果,作为问题的近似解。  h; o. N  H( n8 V

    % d1 H9 Z5 u- Y# i! G# F蒙特卡罗方法与一般计算方法有很大区别,一般计算方法对于解决多维或因素复杂的问题非常困难,而蒙特卡罗方法对于解决这方面的问题却比较简单。其特点如下:
    ! _2 J# ]% K- ]# I3 V
    , M' x4 H8 g% L+ t2 oa、直接追踪粒子,物理思路清晰,易于理解;5 n( B% r1 e& b( F  D" O+ F

    " F% u/ ?7 h( i" a4 db、采用随机抽样的方法,较真切的模拟粒子输运的过程,反映了统计涨落的规律;% f5 u1 P0 I+ C! u) C

    ' |% {& ?6 |/ s( y/ c+ d3 W/ Cc、不受系统多维、多因素等复杂性的限制,是解决复杂系统粒子输运问题的好方法等等
    / `7 t( z! ^) ?2 O* ]7 v8 v* k  g# U: j' Z4 V- L. H( j. h, a! s. D
    02

    - ~5 ?4 p/ v' n; f/ a8 y
    8 f% r+ u& I! M5 V6 V6 m
    数据拟合、参数估计、插值等数据处理算法
    $ K) B4 e7 K* Y7 Y
    ! u9 r3 A9 m" I4 w
    我们通常会遇到大量的数据需要处理,而处理数据的关键就在于这些算法,通常使用 Matlab 作为工具。, d# S6 ]/ y( k; E* _$ _
    % v* D! i- d. a9 q0 o- [
    数据拟合在数学建模比赛中中有应用,与图形处理有关的问题很多与拟合有关系,一个例子就是 98 年数学建模美国赛 A 题,生物组织切片的三维插值处理,94 年 A 题逢山开路,山体海拔高度的插值计算,还有吵的沸沸扬扬可能会考的“非典”问题也要用到数据拟合算法,观察数据的走向进行处理。4 V$ Q/ y- _5 v' W
    " c7 P5 p* r7 R' b3 n( s7 k
    . E8 K% a$ f+ b% _9 p2 C
    此类问题在 MATLAB 中有很多现成的函数可以调用,熟悉 MATLAB,这些方法都能游刃有余的用好。' t4 [: r( F" I

    8 }; o1 |# L% e$ `4 Z0 D
    03

    . j* w# N9 o+ @5 |) A5 Y  _' j# w! X, S: v& r! r  x9 j  e6 @- x
    线性规划、整数规划、多元规划、二次规划等规划类问题
    & l5 ^+ A* U) V) C

    : K0 p' c) i- {数学建模竞赛中很多问题都和数学规划有关,可以说不少的模型都可以归结为一组不等式作为约束条件、几个函数表达式作为目标函数的问题。6 o3 }) ^/ ?2 O" O) u2 N

    ( J6 w; k: O7 |% O  N遇到这类问题,求解就是关键了,比如 98 年 B 题,用很多不等式完全可以把问题刻画清楚,因此列举出规划后用 Lindo、Lingo 等软件来进行解决比较方便,所以还需要熟悉这两个软件。
    9 s- ~$ W, \, h- S6 ~- ^( @9 [: d% E- W+ W* m" Q. {4 ]; p
    04
    * I/ W0 B( p+ V' f# r7 D
    # H5 m0 U6 B4 k/ [) ?
    图论算法
    , e  c$ N  \% I

    8 i- ?  [2 \+ F& ?1 ]这类问题算法有很多,包括:Dijkstra、Floyd、Prim、Bellman-Ford,最大流,二分匹配等问题。
    * ^, F1 p* k% l* K6 ~
    , }/ H- ?, W" l; o2 u+ x) s关于此类图论算法,可参考 IntroductiontoAlgorithms--算法导论,关于图算法的第22章-第26章。# w" W, N( e+ j  J/ t, y8 T
    ' y- W. |" Z, B5 _
    ) H+ S6 L% a2 T1 i' [6 d; `

    ! Z9 p- @* ]( b7 B% a5 M/ A9 L
    7 A- r. a  U+ w* `" C4 s$ |
    05

    8 Q/ E) O5 J! Q% I+ }/ o/ k7 x. D2 u5 G5 G
    动态规划、回溯搜索、分治算法、分支定界等计算机算法
    / w2 x: A% w& d% \

    ( e8 S9 _- A1 C- S在数学建模竞赛中,如:92 年 B 题用分枝定界法,97年 B 题是典型的动态规划问题,此外 98 年 B 题体现了分治算法。
    ) {6 W0 E) N. u! _# g1 {
    % z$ B7 [: H5 n4 e3 X) V' P

    / u3 b$ q" U! Y3 B& [这方面问题和 ACM 程序设计竞赛中的问题类似,推荐看一下算法导论,与《计算机算法设计与分析》(电子工业出版社)等与计算机算法有关的书。  K! V0 Q8 P+ A, Q

    & g! t3 Y6 n0 X
    06

    + N( W1 f0 D+ L% x, F
    5 `+ K9 d; v  B) E& W
    最优化理论的三大经典算法:模拟退火法、神经网络、遗传算法

    4 z: x* p  @* ?% E) H* ~$ {, [" n: m+ r  h) ^
    这十几年来最优化理论有了飞速发展,模拟退火法、神经网络、遗传算法这三类算法发展很快。+ I/ P& u8 l# m% T) x
    " E4 p; N# s" _/ h
    在数学建模竞赛中:比如 97 年 A 题的模拟退火算法,00 年 B 题的神经网络分类算法,01 年 B 题这种难题也可以使用神经网络。
      @6 Z" \6 B$ g. V9 r" d5 `( J, O# m
    : m- W( e: R7 |/ W还有美国竞赛 89 年 A 题也和 BP 算法有关系,当时是 86 年刚提出 BP 算法,89 年就考了,说明赛题可能是当今前沿科技的抽象体现。$ ?5 g5 [* |- S( l3 ~# u: e

    3 Z5 |0 ?' z& G* x03 年 B 题伽马刀问题也是目前研究的课题,目前算法最佳的是遗传算法。) q& `. G, I4 @. Y' U1 b
    , Q3 p' C+ C" I& n
    微信图片_20181029094147.jpg

    9 ^: ?9 ~8 m, T4 J# q3 x- }/ i6 n% r: L8 E. ^) l

    7 `" l5 Z0 A7 h- F
    07
    0 }+ E& f+ i2 ?- J5 F  Y' D$ E4 a
    $ @# g4 K. ]: E  n3 E" J
    网格算法和穷举法
    - r+ }+ x. q* L8 x  m* e
    $ H+ g, q4 f2 M$ E/ @
    网格算法和穷举法一样,只是网格法是连续问题的穷举。
    / h6 @1 C2 k( E8 H  S' F/ D: T; i+ T. ^; ?2 P4 N9 u
    比如要求在 N 个变量情况下的最优化问题,那么对这些变量可取的空间进行采点,比如在 [a;b] 区间内取 M+1 个点,那么这样循环就需要进行 (M+1)N 次运算,所以计算量很大。9 d; ]# L# ?. g* x

      t- R9 A) C1 `1 O1 t! M在数学建模竞赛中:比如 97 年 A 题、99 年 B 题都可以用网格法搜索,这种方法最好在运算速度较快的计算机中进行,还有要用高级语言来做,最好不要用MATLAB 做网格,否则会算很久。
    # z/ W1 |" a% M% `7 _; G
    微信图片_20181029094151.gif
    2 z! B3 d" h2 n7 ]# I

    $ C" v1 P, Y# n2 g6 G9 h) _: e2 s# K/ ^' G
    穷举法大家都熟悉,自不用多说了。
    & S2 \: U+ V9 j% A1 v: o: E  E, ?1 W$ ^  J; O
    08
    % g, X0 h& i+ O

    3 y) A" u( k- g$ o9 D  f- x2 I
    一些连续离散化方法

    - Z; v& e3 e1 i7 g: m( C& W
    / R1 U5 z* ~+ |1 K大部分物理问题的编程解决,都和这种方法有一定的联系。物理问题是反映我们生活在一个连续的世界中,计算机只能处理离散的量,所以需要对连续量进行离散处理。
    5 C& h8 {# P6 H" g- n
    0 @& I# J' r2 K6 n* J0 T; z% Y1 \, D这种方法应用很广,而且和上面的很多算法有关。事实上,网格算法、蒙特卡罗算法、模拟退火都用了这个思想。/ \  N. E4 b# W4 s5 [" q6 F

    0 E! q9 B  j6 {5 g0 ]0 J- J9 D
    09

    2 {0 E* R( ^" S1 y) t. g8 R$ K0 h, k8 C* R, C% a
    数值分析算法

    - L6 Y  K3 a$ `6 m
    0 U+ K7 D2 ]0 V: z3 F4 P) A数值分析(numericalanalysis),是数学的一个分支,主要研究连续数学(区别于离散数学)问题的算法。
    . R# g# h; F+ I/ g! Y; W7 Q
    1 r& K. J8 E! Y8 b9 N; _如果在比赛中采用高级语言进行编程的话,那一些数值分析中常用的算法比如方程组求解、矩阵运算、函数积分等算法就需要额外编写库函数进行调用。/ d) ?- ]/ q+ d& p9 S
    ; K* y% G% R. e! }1 y( Y2 `+ S
    这类算法是针对高级语言而专门设的,如果你用的是 MATLAB、Mathematica,大可不必准备,因为像数值分析中有很多函数一般的数学软件是具备的。3 M" |. C( w- @: I% X, w( f

    ! n# A! D1 N' C8 J7 o! o3 Y
    10
    & Q+ {! D; v, V/ }! Y3 i

    * }$ E. [! ?& I
    图象处理算法

    ( c: B. r0 V  s3 Z4 P/ l0 j+ z7 o& G1 W: s
    在数学建模竞赛中:比如 01 年 A 题中需要你会读 BMP 图象、美国赛 98 年 A 题需要你知道三维插值计算,03 年 B 题要求更高,不但需要编程计算还要进行处理,而数模论文中也有很多图片需要展示,因此图象处理就是关键。做好这类问题,重要的是把 MATLAB 学好,特别是图象处理的部分。3 `0 Y+ x& Y( E1 E* V
    % [4 R. j4 J" ^) E2 n/ ]
    微信图片_20181029094201.jpg
    2 y: d: ~* s; f- |3 p, B
      z4 U3 E$ O8 R5 g4 W5 l6 F
    & V+ s, J* u: g' W; B
    zan
    转播转播0 分享淘帖0 分享分享0 收藏收藏1 支持支持0 反对反对0 微信微信
    GsBush23        

    0

    主题

    2

    听众

    2

    积分

    升级  40%

    该用户从未签到

    自我介绍
    Jack

    邮箱绑定达人

    回复

    使用道具 举报

    pazq18        

    0

    主题

    2

    听众

    16

    积分

    升级  11.58%

  • TA的每日心情
    开心
    2018-12-7 09:54
  • 签到天数: 1 天

    [LV.1]初来乍到

    自我介绍
    数学初级学习
    楼主的帖子怎么样?赶紧试试这里看样子是好东西啊的快速回复给楼主点评论吧/ D: a+ U' t1 \# f7 [/ a, _
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 注册地址

    qq
    收缩
    • 电话咨询

    • 04714969085
    fastpost

    关于我们| 联系我们| 诚征英才| 对外合作| 产品服务| QQ

    手机版|Archiver| |繁體中文 手机客户端  

    蒙公网安备 15010502000194号

    Powered by Discuz! X2.5   © 2001-2013 数学建模网-数学中国 ( 蒙ICP备14002410号-3 蒙BBS备-0002号 )     论坛法律顾问:王兆丰

    GMT+8, 2026-8-23 11:55 , Processed in 1.681718 second(s), 71 queries .

    回顶部