# N' L! s' _/ |2 ^: T/ a' N+ i关于此类图论算法,可参考Introduction to Algorithms--算法导论,关于图算法的第22章-第26章。3 \5 `9 o: d2 P" [
同时,本BLOG内经典算法研究系列,对Dijkstra算法有所简单描述,0 I2 N; B! T) Q# e V; ]8 s7 |+ v/ `
----------- 9 R9 l8 ?2 `. e$ D- l经典算法研究系列:二、Dijkstra 算法初探 ^' K$ j- Q. thttp://blog.csdn.net/v_JULY_v/archive/2010/12/24/6096981.aspx0 ], w4 w- e/ B4 z& q( I
1 H5 B. H3 T P& z% O R
更多,请关注本BLOG 日后更新的博文。 - K' |5 D5 H& D, ? 2 _* I0 a# X+ u- ^ ; \2 |. q1 s8 J4 w , L% p, H+ u, n+ H2 m+ S7 u* U a0 i8 T# I t6 I
五、动态规划、回溯搜索、分治算法、分支定界等计算机算法/ k* w1 J5 h! g. ` z
在数学建模竞赛中,如:92 年B题用分枝定界法, 97年B题是典型的动态规划问题,9 ^5 F2 T" _% L8 [( T) G
此外 98 年 B 题体现了分治算法。* r6 n& `1 K* v O! F; j0 [
8 E# G: Z" E3 U9 K7 m8 j' I
* e! a, R g8 t% f
这方面问题和 ACM 程序设计竞赛中的问题类似,+ o% v4 z( ?, G9 p, s. ? u) ^' o
推荐看一下算法导论,与《计算机算法设计与分析》(电子工业出版社)等与计算机算法有关的书。5 V/ j& Q3 C- a. q5 O0 Y
, E: R' D1 ]" \' { + _8 V+ }+ }0 k; z1 @; E. G& H8 P2 H7 r- j% X: F* l
0 Z Z/ y" R+ h
六、最优化理论的三大经典算法:模拟退火法、神经网络、遗传算法 ' F: Q8 t1 n% Q7 P' V9 F! T. `' x
这十几年来最优化理论有了飞速发展,模拟退火法、神经网络、遗传算法这三类算法发展很快。 ; Z0 {6 m$ O; Z4 K6 w, _/ l/ k6 L ( U1 b' [# B0 j/ r# T3 Z在数学建模竞赛中:比如97年A题的模拟退火算法,00年B题的神经网络分类算法,01年B题这种难题也可 y+ F6 n/ e! V1 Z/ s
. e/ V8 p2 G0 G1 n) ^5 W8 E以使用神经网络,还有美国竞赛89年A题也和 BP 算法有关系,当时是86年刚提出BP算法,89年就考了, % S n0 w3 U- O6 C" z& K6 r+ x# C6 z8 @2 X
说明赛题可能是当今前沿科技的抽象体现。 2 b5 k0 l0 f a
03 年 B 题伽马刀问题也是目前研究的课题,目前算法最佳的是遗传算法。/ a' z+ q# `4 s
+ }; b2 b r/ r; S" H# F
& i+ s* D. G& X4 B& @# s6 e' r3 i
另,本人对人工智能非常感兴趣,遗传算法已在本BLOG内有所阐述,敬请参见。# |& B1 S- c+ y1 ?
----------' T+ N9 i0 N+ o2 F# Y/ q2 t9 x$ F+ b
经典算法研究系列:七、深入浅出遗传算法,透析GA本质 4 n1 o* G Y' u: U) h+ k8 y+ S( thttp://blog.csdn.net/v_JULY_v/archive/2011/01/12/6132775.aspx, }- y$ U$ V: N
( Z$ Q! k2 R7 k$ G% _0 E( m8 @' S
% h& \$ Z0 o3 I$ w$ @
1 m- N+ i1 f; `! ]* M% V其它俩大算法,模拟退火法,与神经网络,也定会在本BLOG内日后的博文更新中,详细阐述。 6 l# |. W* }: y% H/ @" S, |! A , B+ o) {# ~( Y3 A ' h3 P# i3 m& b' ]) T+ M / m; _9 _6 m+ A5 i3 o/ B; ]6 N7 W
七、网格算法和穷举法 5 R1 B% n/ _9 D2 e# [$ L1 G网格算法和穷举法一样,只是网格法是连续问题的穷举。 ' [- b& \# p l! |' w5 g; D9 f比如要求在 N 个变量情况下的最优化问题,那么对这些变量可取的空间进行采点,+ [; T: \3 i# F; ~6 j% i: W
比如在 [ a; b ] 区间内取 M +1 个点,就是 a; a +( b ? a ) =M; a +2 ¢ ( b ? a ) =M ; …;b* W% d) o2 I, L( i$ |+ ~- Q; U& [
+ r6 p5 H, P- U/ l3 W. D
那么这样循环就需要进行 ( M + 1) N 次运算,所以计算量很大。 , @; k; E& t) C2 J1 [: M2 u; Q5 r+ |; E( o
7 B* C& {3 e# d8 W6 V. L
在数学建模竞赛中:比如 97 年 A 题、 99 年 B 题都可以用网格法搜索,这种方法最好在运算速度较$ m% |% H% ?/ [8 I$ ^( D. Z' }
$ q, c# u) l3 k4 l$ ?: z# U
快的计算机中进行,还有要用高级语言来做,最好不要用 MATLAB 做网格,否则会算很久。 b |& }1 g$ I
; l, k8 ?* b. [" ~& F穷举法大家都熟悉,自不用多说了。 3 L' D, c& I. T. ?
# r e5 \8 k9 v' \. u 1 I; z" S' T' U ; {5 v2 z. c2 J+ p1 B 9 e. Q& o2 ]! K8 e八、一些连续离散化方法 - W7 N" G1 u0 f9 P6 j: C* {( }大部分物理问题的编程解决,都和这种方法有一定的联系。物理问题是反映我们生活在一个连续的世界' q; S# b; ^3 r$ [4 Q( ^
8 ?$ u2 \0 T7 H4 _8 {6 T中,计算机只能处理离散的量,所以需要对连续量进行离散处理。2 A. E, D: F6 M8 R7 K
+ U! g; Y( r: S8 w3 [# X0 p K' o & A3 }' M) ^" }这种方法应用很广,而且和上面的很多算法有关。, m, K' s; M Q* i8 L9 c
事实上,网格算法、蒙特卡罗算法、模拟退火都用了这个思想。 0 M# ]: h% u( Q5 E" V' T) W: ~- X5 y3 m! D- o$ S' @
' U2 z+ K2 l/ f, c& c, Z( S ) B+ v9 ^7 b; p; J! w+ v" M" q& C v . ~* ^! Y3 k! _九、数值分析算法* v* b( e k7 m# {7 D' s2 l* l
数值分析(numerical analysis),是数学的一个分支,主要研究连续数学(区别于离散数学)问题的7 D2 _5 X5 e) n8 N+ e; j9 E, z- q
) J ]- y4 s9 K算法。. ]% w; Z3 U" {% g) I+ ?
$ q+ |+ b, C1 u6 w9 D
如果在比赛中采用高级语言进行编程的话,那一些数值分析中常用的算法比 如方程组求解、矩阵运算、2 I6 `/ |9 R# l
. @6 ~: ]1 X6 ~* j4 ?4 p" ?
函数积分等算法就需要额外编写库函数进行调用。: q0 Q( G- Q0 E! f' r
1 u/ k7 G3 e- {% {" E
这类算法是针对高级语言而专门设的,如果你用的是 MATLAB 、 Mathematica ,大可不必准备, $ C d }8 A6 K因为像数值分析中有很多函数一般的数学软件是具备的。7 @. G V+ n' a3 a B: L2 o( Z! Q
/ V& ]- g& u9 m0 @
8 l# b1 H. P" j- T& z q