数学建模经典算法.docVIP

  1. 1、本文档共18页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
回溯算法?? 寻找问题的解的一种可靠的方法是首先列出所有候选解,然后依次检查每一个,在检查完 所有或部分候选解后,即可找到所需要的解。理论上,当候选解数量有限并且通过检查所 有或部分候选解能够得到所需解时,上述方法是可行的。不过,在实际应用中,很少使用 这种方法,因为候选解的数量通常都非常大(比如指数级,甚至是大数阶乘),即便采用 最快的计算机也只能解决规模很小的问题。对候选解进行系统检查的方法有多种,其中回 溯和分枝定界法是比较常用的两种方法。按照这两种方法对候选解进行系统检查通常会使 问题的求解时间大大减少(无论对于最坏情形还是对于一般情形)。事实上,这些方法可 以使我们避免对很大的候选解集合进行检查,同时能够保证算法运行结束时可以找到所需 要的解。因此,这些方法通常能够用来求解规模很大的问题。 ?? 本章集中阐述回溯方法,这种方法被用来设计货箱装船、背包、最大完备子图、旅行商和 电路板排列问题的求解算法。 ?? ??1 算法思想?? b a c k t r a c k i n g)是一种系统地搜索问题解答的方法。为了实现回溯,首 solution space),这个空间必须至少包含问题的一个解 n 个对象的0 / 1背包问题中(见1 . 4节和2 . 2节),解空间的一个合 2n 个长度为n 的0 / 1向量的集合,这个集合表示了将0或1分配给x的所有可能方 n= 3时,解空间为{ ( 0 , 0 , 0 ),( 0 , 1 , 0 ),( 0 , 0 , 1 ),( 1 , 0 , 0 ),( 0 , 1 , 1 ),( 1 , 0 , 1 ),( 1 , 1 , 0 ),( 1 , 1 , 1 ) }。 1 6 - 1用图的 3×3迷宫的解空间。从( 1 , 1 )点到( 3 , 3 )点的每一条路径都定义了 3×3迷宫解空间中的一个元素,但由于障碍的设置,有些路径是不可行的。 1 6 - 2用树形结构给出了含三个对象的0 / 1背包问题的解空间。从i 层节点到i+ 1层 x 中第i个分量的值xi A到叶节点H的路径定义了解x= [ 1 , 1 , 1 ]。 w 和c ?? 一旦定义了解空间的组织方法,这个空间即可按深度优先的方法从开始节点进行搜索。在 迷宫老鼠问题中,开始节点为入口节点( 1 , 1 );在0 / 1背包问题中,开始节点为根节 A。开始节点既是一个活节点又是一个E-节点(expansion node)。从E-节点可移动到一 E-节点移动到一个新节点,那么这个新节点将变成一个活节点 E-节点,旧的E-节点仍是一个活节点。如果不能移到一个新节点,当前的E-节点就 E-节点。当我们已经找到了答案或者回溯尽了所有的活节点时,搜索 ?? 例4-1 [迷宫老鼠] 16-3a 的矩阵中给出的3×3的“迷宫老鼠”问题。我们将利用图 1 6 -1给出的解空间图来搜索迷宫。 从迷宫的入口到出口的每一条路径都与图1 6 - 1中从( 1 , 1 )到( 3 , 3 )的一条路径相 1 6 - 1中有些从( 1 , 1 )到( 3 , 3 )的路径却不是迷宫中从入口到出口 ( 1 , 1 )开始,该点是目前唯一的活节点,它也是一个E-节点。为避免 m a z e( 1 , 1 )为1。从这个位置,能移动到( 1 , 2 )或( 2 , 1 )两个位置。对于本例,两种移动都是可行的,因为在每一个位置都有一个值0。假定选 ( 1 , 2 ),m a z e( 1 , 2 )被置为1以避免再次经过该点。迷宫当前状态如图 16-3b 所示。这时有两个活节点(1,1) (1,2)。( 1 , 2 )成为E-节点。 在图1 6 - 1中从当前E-节点开始有3个可能的移动,其中两个是不可行的,因为迷宫在这 1。唯一可行的移动是( 1 , 3 )。移动到这个位置,并置m a z e( 1 , 3 )为1以避免再次经过该点,此时迷宫状态为1 6 - 3 c。图1 6 - 1中,从( 1 , 3 )出发 E-节点( 1 , 3 )死亡,回溯到最近被检查 ( 1 , 2 )。在这个位置也没有可行的移动,故这个节点也死亡了。唯一留下的活 ( 1 , 1 )。这个节点再次变为E-节点,它可移动到( 2 , 1 )。现在活节点为( 1 , 1 ),( 2 , 1 )。继续下去,能到达点( 3 , 3 )。此时,活节点表为( 1 , 1 ),( 2 , 1 ),( 3 , 1 ),( 3 , 2 ),( 3 , 3 ),这即是到达出口的路径。 程序5 - 1 3是一个在迷宫中寻找路径的回溯算法。 一、算法思想 贪心法的基本思路: ——从问题的某一个初始解出发逐步逼近给定的目标,以尽可能快的地求得更好的解

文档评论(0)

185****7617 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档