QQ登录

只需要一步,快速开始

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

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

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

100

主题

17

听众

7535

积分

升级  50.7%

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

    [LV.3]偶尔看看II

    群组2018年大象老师国赛优

    群组高考备战

    群组2018中小学数学建模冬

    跳转到指定楼层
    1#
    发表于 2018-10-29 10:01 |只看该作者 |倒序浏览
    |招呼Ta 关注Ta
    8 ?- J) V- b! g- ?' _
    数学建模比赛是本科生和研究生阶段最重要的比赛之一,包括全国大学生数学建模竞赛(俗称“国赛”)和美国大学生数学建模竞赛(俗称“美赛”)。在这些比赛中取得好成绩,不仅有助于保研、有助于找工作,更重要的是形成科学的思维模式。下面列举了十大算法,在数学建模竞赛中有着无比广泛而重要的应用。" k+ \( v1 z6 G5 r

    1 f9 ~) Y5 \2 k2 S  m
    01
    / w$ v; b6 Y' w! k; ~

    $ N. Q! ]. |5 E1 y, I$ g$ u1 V
    蒙特卡罗算法
    ' S, \1 [! n9 g5 |& _! e7 N" M* C: x
    1946 年,美国拉斯阿莫斯国家实验室的三位科学家 JohnvonNeumann, Stan Ulam和 Nick Metropolis 共同发明了蒙特卡罗方法。
    & u! o- s; o- i) \/ R0 Y1 |蒙特卡罗方法(Monte Carlo method),又称随机抽样或统计模拟方法,是一种以概率统计理论为指导的一类非常重要的数值计算方法。此方法使用随机数(或更常见的伪随机数)来解决很多计算问题的方法。
    : \- W, K0 Z% q' o3 L  C+ K" b  v( e5 u9 \+ P( T5 z2 l4 O" a; w
    由于传统的经验方法由于不能逼近真实的物理过程,很难得到满意的结果,而蒙特卡罗方法由于能够真实地模拟实际物理过程,故解决问题与实际非常符合,可以得到很圆满的结果。# v) \9 m' q  L: Y$ s; K3 v# ^6 V
    6 e6 z+ T0 }# i: I7 Z2 R
    蒙特卡罗方法的基本原理及思想如下:' K  W0 i) I$ _+ U. e

    8 q5 [' F3 ^; f1 D/ g  ~  V当所求解问题是某种随机事件出现的概率,或者是某个随机变量的期望值时,通过某种“实验”的方法,以这种事件出现的频率估计这一随机事件的概率,或者得到这个随机变量的某些数字特征,并将其作为问题的解。
    : }$ q+ J/ i- X5 j6 n! m+ k- A7 ~9 m6 ?7 k/ t
    举个栗子,直观了解蒙特卡洛方法:
    * t5 w$ H5 L( N: u! q3 T
    + l! k, z/ u0 t' W8 @; g假设我们要计算一个不规则图形的面积,那么图形的不规则程度和分析性计算(比如:积分)的复杂程度是成正比的。蒙特卡洛方法是怎么计算的呢?假想你有一袋豆子,把豆子均匀地朝这个图形上撒,然后数这个图形之中有多少颗豆子,这个豆子的数目就是图形的面积。当你的豆子越小,撒的越多的时候,结果就越精确。在这里我们要假定豆子都在一个平面上,相互之间没有重叠。
    3 C* c5 y" V+ J+ N5 d( m0 t' e' j# p: r( _1 a2 h
    , s9 B. b' o, Z
    蒙特卡罗方法通过抓住事物运动的几何数量和几何特征,利用数学方法来加以模拟,即进行一种数字模拟实验。它是以一个概率模型为基础,按照这个模型所描绘的过程,通过模拟实验的结果,作为问题的近似解。
    4 Z  g7 R# g8 Z# O( ?6 W6 I4 ~1 ]& o5 ^1 R$ G8 X
    蒙特卡罗方法与一般计算方法有很大区别,一般计算方法对于解决多维或因素复杂的问题非常困难,而蒙特卡罗方法对于解决这方面的问题却比较简单。其特点如下:$ W- ~' O, n! `  H% q

    3 C0 H2 m) P. o+ [# R/ O1 {5 _- w; ea、直接追踪粒子,物理思路清晰,易于理解;
    % [2 {3 [' @7 a/ r# a; l/ f2 A; L3 Y" X0 N
    b、采用随机抽样的方法,较真切的模拟粒子输运的过程,反映了统计涨落的规律;; ^4 {8 g5 `3 H/ u
    $ i5 D' l# \$ j  k# H" S* I2 V4 i
    c、不受系统多维、多因素等复杂性的限制,是解决复杂系统粒子输运问题的好方法等等
    7 Y( ~" w, R( M( R+ T/ A$ [# J# U( g3 P
    7 O0 d4 k7 @+ ^
    02

    - D3 h9 R0 L+ k5 j- U- [# i! W+ Z
    数据拟合、参数估计、插值等数据处理算法

    ) C3 u2 U  a& C1 {1 D3 P
    ' x4 {4 a; I; M# x7 p我们通常会遇到大量的数据需要处理,而处理数据的关键就在于这些算法,通常使用 Matlab 作为工具。
    / W  ?; i9 _; S& q0 p& D/ j
    * v$ I& ~7 e: `: }4 J0 z8 @数据拟合在数学建模比赛中中有应用,与图形处理有关的问题很多与拟合有关系,一个例子就是 98 年数学建模美国赛 A 题,生物组织切片的三维插值处理,94 年 A 题逢山开路,山体海拔高度的插值计算,还有吵的沸沸扬扬可能会考的“非典”问题也要用到数据拟合算法,观察数据的走向进行处理。' k! K" p! w* d+ X4 O& }. f
    4 ~3 _+ J2 J; x% i) s, n- s: X
    ( R" \1 J$ }) T+ t" f- l. Y% X
    此类问题在 MATLAB 中有很多现成的函数可以调用,熟悉 MATLAB,这些方法都能游刃有余的用好。1 ]) Z8 b% G+ O! I9 n* \- U
    . X4 ?6 G0 `9 T+ T6 L
    03
    ) a7 k; G. m* U- C7 v3 K  h
    & x9 [; q( o- C- n8 D% j
    线性规划、整数规划、多元规划、二次规划等规划类问题
    5 M6 R& l: A' x4 Q" c8 ]
    / e3 Z- _' w# L$ Z5 d! g/ K
    数学建模竞赛中很多问题都和数学规划有关,可以说不少的模型都可以归结为一组不等式作为约束条件、几个函数表达式作为目标函数的问题。
    % R  E* \6 q3 J. u% \/ z6 ~2 x0 z( }, c6 l0 c
    遇到这类问题,求解就是关键了,比如 98 年 B 题,用很多不等式完全可以把问题刻画清楚,因此列举出规划后用 Lindo、Lingo 等软件来进行解决比较方便,所以还需要熟悉这两个软件。
    " j8 s' x& D% A, I3 D
    & z/ x, j, P6 _2 |8 V1 x2 |1 o( ]
    04

    % Q* r& \7 {/ V" ]! z  ]2 e( ?- m, d- f9 P; l  M& h$ ]+ P, C
    图论算法

    8 W# Z  f5 l4 I* N2 L8 _  a9 C
    1 x" X! l# P4 C- @1 Z9 W这类问题算法有很多,包括:Dijkstra、Floyd、Prim、Bellman-Ford,最大流,二分匹配等问题。
    ' f6 v2 e  j* Z) a7 ?* G! ~8 k& n: c" T
    关于此类图论算法,可参考 IntroductiontoAlgorithms--算法导论,关于图算法的第22章-第26章。
    & {; T, G( `, U4 ?8 Y) x/ ~; v3 ?+ r; e+ }( [5 L
    2 |) v7 }3 w/ ]( Y" ~  |# V+ |
    " L% K* T% z( p) m; E4 w$ B, N7 R

    9 J  m: B( [7 D, ?2 p6 T
    05
    5 m( T5 x; h' Q3 o! f$ [( s9 ~# _

    3 p. r) E) z  g( K* Q3 k/ y4 U. B
    动态规划、回溯搜索、分治算法、分支定界等计算机算法

    5 i$ U$ o' a! J' _( X8 K
    ( H3 W1 ?  }$ x- `, l, M在数学建模竞赛中,如:92 年 B 题用分枝定界法,97年 B 题是典型的动态规划问题,此外 98 年 B 题体现了分治算法。
    $ m7 y. E3 h& r
    * D. d; ?% k: N' M3 P6 R4 w; s

    5 w3 s* s5 X* S& G7 l+ }7 |这方面问题和 ACM 程序设计竞赛中的问题类似,推荐看一下算法导论,与《计算机算法设计与分析》(电子工业出版社)等与计算机算法有关的书。. u" C. |+ x4 }7 H7 \- c( x

    5 E) W8 ?) m# S$ g
    06
    8 C# g4 ^& s' Z) Y! a1 W" l

    ! C& r, r' i% l$ x- s
    最优化理论的三大经典算法:模拟退火法、神经网络、遗传算法

    * s+ q) {) h  \) v
    1 J8 g. ~& s' Q8 @这十几年来最优化理论有了飞速发展,模拟退火法、神经网络、遗传算法这三类算法发展很快。9 j& t6 g2 E, m/ q; [; A
    8 p* K$ y7 \# M1 F. t. y
    在数学建模竞赛中:比如 97 年 A 题的模拟退火算法,00 年 B 题的神经网络分类算法,01 年 B 题这种难题也可以使用神经网络。
    4 @0 l* z4 l0 I" t+ |0 v  m. h8 `: b; }1 y2 e
    还有美国竞赛 89 年 A 题也和 BP 算法有关系,当时是 86 年刚提出 BP 算法,89 年就考了,说明赛题可能是当今前沿科技的抽象体现。
    ) I! \! E+ q; v
    $ Y! p* R; Y; v( u4 v# G03 年 B 题伽马刀问题也是目前研究的课题,目前算法最佳的是遗传算法。$ z3 T; ?  O8 u* h. {

    # @! C) l# V7 E2 d. @
    微信图片_20181029094147.jpg
    : |" K$ {' O" p+ J5 V5 e! n' Z
    - [9 b! L  ~' r- t$ n1 Q

    7 X6 d# n) F# [" ^4 ], d: v) M
    07
    ' s5 Q) P9 l# E' s- f% e6 R# T
    1 x* C/ R" y! P7 A, N
    网格算法和穷举法

    8 A; i9 A9 c5 v& _6 z6 r! b
    2 n* T$ Z& L3 L' p1 b; P0 ~5 g: D网格算法和穷举法一样,只是网格法是连续问题的穷举。
    , O8 G3 o/ T7 C$ u: E( i" P, E
    & n" v) m# ^) O# G/ C比如要求在 N 个变量情况下的最优化问题,那么对这些变量可取的空间进行采点,比如在 [a;b] 区间内取 M+1 个点,那么这样循环就需要进行 (M+1)N 次运算,所以计算量很大。
    + e' V" `& U( O) p  G
    6 p9 Z( H& f' m% W在数学建模竞赛中:比如 97 年 A 题、99 年 B 题都可以用网格法搜索,这种方法最好在运算速度较快的计算机中进行,还有要用高级语言来做,最好不要用MATLAB 做网格,否则会算很久。! C* z$ H. u- A6 b
    微信图片_20181029094151.gif
    : U& y( ~* ]/ g/ f- d
      D& M( G7 N/ ]$ O4 m) C( k
    ) U) x* `7 u+ C3 o' S( L/ S( B) K
    穷举法大家都熟悉,自不用多说了。8 S1 }  O9 |8 _5 `. M
    # F+ V8 w# F8 L/ e  Z
    08
    7 U" a8 v. |# b0 h
    . W! s, S! C+ z2 y6 _
    一些连续离散化方法

    % L5 o( M' q" ^- t. c. |* r- R1 q' a9 B9 u: m
    大部分物理问题的编程解决,都和这种方法有一定的联系。物理问题是反映我们生活在一个连续的世界中,计算机只能处理离散的量,所以需要对连续量进行离散处理。
    ( ]2 i3 c' a: I' ?5 ~1 L9 D
    1 i: A+ d3 D9 J- l0 }3 K9 x这种方法应用很广,而且和上面的很多算法有关。事实上,网格算法、蒙特卡罗算法、模拟退火都用了这个思想。1 p2 A, A% k; Y$ [" `( U7 Z# T
    : g$ H/ d6 n$ T
    09

    - J1 j) ]6 d1 E6 ^6 f# i" y% G/ Q) y" Q; S
    数值分析算法

    6 W. h" i. B* P+ h( A! X3 z  B! N) ^7 h9 Z2 Z. U1 l$ }0 D
    数值分析(numericalanalysis),是数学的一个分支,主要研究连续数学(区别于离散数学)问题的算法。/ r2 j: x0 I; F. k$ z7 y1 h- S
    1 v3 V+ R+ I  E% Y
    如果在比赛中采用高级语言进行编程的话,那一些数值分析中常用的算法比如方程组求解、矩阵运算、函数积分等算法就需要额外编写库函数进行调用。/ R/ m& e0 E9 z+ c0 d

    # X: J0 o* E& q2 v4 v! b/ S" z这类算法是针对高级语言而专门设的,如果你用的是 MATLAB、Mathematica,大可不必准备,因为像数值分析中有很多函数一般的数学软件是具备的。" [7 q0 b! G: g4 h: Q

    ' J2 |# o- l. x  ]8 k( V" z1 b
    10
    / R& e- ~* u; p, p& B, a

    7 K2 v! ^% d8 Q# ]* X  \  }
    图象处理算法

    - q/ O. U! E$ F2 ^) G# F  g1 `% b; N, t
    5 F( x& `4 r& W, @在数学建模竞赛中:比如 01 年 A 题中需要你会读 BMP 图象、美国赛 98 年 A 题需要你知道三维插值计算,03 年 B 题要求更高,不但需要编程计算还要进行处理,而数模论文中也有很多图片需要展示,因此图象处理就是关键。做好这类问题,重要的是把 MATLAB 学好,特别是图象处理的部分。/ n  I* o) G( q! B$ d7 M, `& l6 W
    $ ?- f9 l" G" ^) {& ^* f: L3 P0 y
    微信图片_20181029094201.jpg

    $ Q, |' f& u  m4 J2 K$ P2 V8 J0 a/ ?# Z: a; l' b0 m- j/ u

    5 k! d9 ^% V. w+ S6 a* y
    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]初来乍到

    自我介绍
    数学初级学习
    楼主的帖子怎么样?赶紧试试这里看样子是好东西啊的快速回复给楼主点评论吧2 _% U2 [% E) }4 U7 y7 u( @+ ?
    回复

    使用道具 举报

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

    qq
    收缩
    • 电话咨询

    • 04714969085
    fastpost

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

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

    蒙公网安备 15010502000194号

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

    GMT+8, 2026-4-14 01:32 , Processed in 0.481574 second(s), 71 queries .

    回顶部