数学建模竞赛中应当掌握的十类算法.ppt
上传人:天马****23 上传时间:2024-09-11 格式:PPT 页数:33 大小:261KB 金币:10 举报 版权申诉
预览加载中,请您耐心等待几秒...

数学建模竞赛中应当掌握的十类算法.ppt

数学建模竞赛中应当掌握的十类算法.ppt

预览

免费试读已结束,剩余 23 页请下载文档后查看

10 金币

下载此文档

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

蒙特卡罗算法数据处理算法数学规划算法图论算法动态规划、回溯搜索、分治算法、分支定界三大非经典算法网格算法和穷举法连续离散化方法数值分析算法图象处理算法1、蒙特卡罗算法蒙特卡罗(MonteCarlo)方法,或称计算机随机模拟方法,是一种基于“随机数”的计算方法。这一方法源于美国在第一次世界大战进研制原子弹的“曼哈顿计划”。该计划的主持人之一、数学家冯·诺伊曼用驰名世界的赌城—摩纳哥的MonteCarlo—来命名这种方法,为它蒙上了一层神秘色彩。考虑平面上的一个边长为1的正方形及其内部的一个形状不规则的“图形”,如何求出这个“图形”的面积呢?MonteCarlo方法是这样一种“随机化”的方法:向该正方形“随机地”投掷N个点落于“图形”内,则该“图形”的面积近似为M/N。另一类形式与MonteCarlo方法相似,但理论基础不同的方法—“拟蒙特卡罗方法”(Quasi-MonteCarlo方法)—近年来也获得迅速发展。我国数学家华罗庚、王元提出的“华—王”方法即是其中的一例。这种方法的基本思想是“用确定性的超均匀分布序列(数学上称为LowDiscrepancySequences)代替MonteCarlo方法中的随机数序列。对某些问题该方法的实际速度一般可比MonteCarlo方法提出高数百倍,并可计算精确度。具体实现的matlab代码:---------------------------------------------------------------------------------------------------functionval=ballvol(n,m)%BALLVOLComputevolumeofunitballinR^n%%Computesthevolumeofthen-dimensionalunitball%usingmonte-carlomethod.%usage:val=BallVol(n,m)%where:n=dimension%m=numberofrealisations%Ifthesecondargumentisomitted,1e4istakenasdefaultform.%(c)1998,RolfKrause,krause@math.fu-berlin.deM=1e4;error=0;if(nargin<1|nargin>2),error('wrongnumberofarguments');endifnargin==2,M=m;endR=rand(n,M);in=0;fori=1:Mif(norm(R(:,i),2)<=1.0),in=in+1;endendval=2^n*in/M;2、数据拟合、参数估计、插值等数据处理算法3、数学规划算法4、图论算法5、动态规划、回溯搜索、分治算法、分支定界动态规划算法思想寻找问题的解的一种可靠的方法是首先列出所有候选解,然后依次检查每一个,在检查完所有或部分候选解后,即可找到所需要的解。理论上,当候选解数量有限并且通过检查所有或部分候选解能够得到所需解时,上述方法是可行的。不过,在实际应用中,很少使用这种方法,因为候选解的数量通常都非常大(比如指数级,甚至是大数阶乘),即便采用最快的计算机也只能解决规模很小的问题。对候选解进行系统检查的方法有多种,其中回溯和分枝定界法是比较常用的两种方法。按照这两种方法对候选解进行系统检查通常会使问题的求解时间大大减少(无论对于最坏情形还是对于一般情形)。事实上,这些方法可以使我们避免对很大的候选解集合进行检查,同时能够保证算法运行结束时可以找到所需要的解。因此,这些方法通常能够用来求解规模很大的问题。回溯方法算法思想分治算法算法思想例2-1[找出伪币]给你一个装有16个硬币的袋子。16个硬币中有一个是伪造的,并且那个伪造的硬币比真的硬币要轻一些。你的任务是找出这个伪造的硬币。为了帮助你完成这一任务,将提供一台可用来比较两组硬币重量的仪器,利用这台仪器,可以知道两组硬币的重量是否相同。比较硬币1与硬币2的重量。假如硬币1比硬币2轻,则硬币1是伪造的;假如硬币2比硬币1轻,则硬币2是伪造的。这样就完成了任务。假如两硬币重量相等,则比较硬币3和硬币4。同样,假如有一个硬币轻一些,则寻找伪币的任务完成。假如两硬币重量相等,则继续比较硬币5和硬币6。按照这种方式,可以最多通过8次比较来判断伪币的存在并找出这一伪币。假如把16硬币的例子看成一个大的问题。第一步,把这一问题分成两个小问题。随机选择8个硬币作为第一组称为A组,剩下的8个硬币作为第二组称为B组。这样,就把16个硬币的问题分成两个8硬币的问题来解决。第二步,判断A和B组中是否有伪币。可以利用仪器来比较A组硬币和B