- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
6.1 回溯法的一般方法 有许多问题,找出它的解集或者要求回答什么解是满足某些约束条件的最佳解时,往往要使用回溯法。 回溯法的基本做法是搜索,或是一种组织得井井有条的,能避免不必要搜索的穷举式搜索法。这种方法适用于解一些组合数相当大的问题。 回溯法的基本思想是在一棵含有问题全部可行解的状态空间树上,从根结点出发进行深度优先搜索,解在叶子结点上。搜索过程中,每到达一个结点时,则判断该结点为根的子树是否含有问题的解,如果可以确定该子树中不含有问题的解,则放弃对该子树的搜索,退回到上层父结点,继续下一步深度优先搜索过程。 在回溯法中,并不是先构造出整棵状态空间树,再进行搜索,而是在搜索过程,逐步构造出状态空间树,即边搜索,边构造。 例:迷宫游戏 扩展结点:一个正在产生儿子的结点称为扩展结点(E) 活结点:一个自身已生成但其儿子还没有全部生成的结点称做活结点 死结点:一个所有儿子已经产生的结点称做死结点 (1)针对所给问题,定义问题的解空间; (2)确定易于搜索的解空间结构; (3)以深度优先方式搜索解空间,并在搜索过程中用限界函数避免无效搜索。 回溯法的基本思路: 问题的解可以用一个n元组(x1,…,xn)来表示,其中的xi取自于某个有穷集Si,并且这些解必须使得某一限界函数B(x1,…,xn)取极值。 假设集合Si的大小是mi,于是就有m= m1 m2… mn个n-元组可能满足函数B。 构造出这m个n-元组并逐一测试它们是否满足函数B,从而找出该问题的所有最优解。 显约束:对分量xi的取值限定。(显式约束条件限定每个x只从一个给定的集合上取值) 隐约束:为满足问题的解而对不同分量之间施加的约束。 通过前面具体实例的讨论容易看出,回溯算法的效率在很大程度上依赖于以下因素: (1)产生下一个x[k]的时间; (2)满足显约束条件的x[k]值的个数; (3)计算约束函数Bi的时间; (4)满足约束函数Bi的所有x[k]的个数。 好的约束函数能显著地减少所生成的结点数。但这样的约束函数往往计算量较大。因此,在选择约束函数时通常存在生成结点数与约束函数计算量之间的折衷。 6.2 n皇后问题 问题描述:找出在一个n*n棋盘上放置n个皇后,且使得每两个之间都不能互相“攻击”,也就是使得每两个都不能在同一行、同一列及同一条斜角线上的所有方案。 问题的状态:即棋盘的布局状态,状态空间树的根为空棋盘,每个布局的下一步可能布局为该布局结点的子结点; n皇后问题可以表示为n-元组(x1,…,xn) ,其中xi是放置皇后i所在的列号。 例:n=4,即4皇后问题。用4元组(x1,..x4),i=1,2,3,4,表示问题的解,其中xi表示把第i个皇后放在第i行的第xi列。所以 (1) 显式约束条件:xi?si={1,2,3,4}, 1≤i≤4 (2) 隐式约束条件: 没有两个xi可以相同且没有两个皇后可以在同一条斜角线上。 4-皇后问题的状态空间树 8-皇后问题实际上很容易一般化为n-皇后问题,即要求找出一个n*n棋盘上放置n个皇后并使其不能互相攻击的所有方案。 令(x1,…,xn)表示一个解,由于没有两个皇后可以放入同一列,因此所有的xi将是互不相同的,一行只能一个皇后。 不同列、不同行的表示:xi?xj,i?j 那么关键是应如何去测试两个皇后是否在同一条斜角线上呢? 假设有两个皇后被放置在(i,xi)和(j,xj)位置上,那么根据以上所述,仅当 i – xi = j - xj 或 i + xi = j + xj 时,它们才在同一条斜角线上。 将这两个等式分别变换成 xi - xj = i - j 或 xj - xi = i - j 因此,当且仅当 | xi - xj | = | i - j | 时(即两个皇后所在位置的行差距等于列差距时),两个皇后在同一条斜角线上。 该过程的计算时间是O(k-1) 算法描述 初始化空棋盘(起始状态); 从第一行开始,直至第一行出现回溯 在当前行r中查找下一个可以放置王后的位置 如果找到了可以摆放的位置 放下一个子 如果已经是最后一行 得到一个解 撤掉该子,继续寻找下一个解 否则(未到最后一行) 准备处理下一行 否则(没有找到可以摆放的位置) 回溯到上一行,并撤掉该行的棋子 算法6.4:可以放置一个新皇后吗?(测试x(k)是否合理) Procedure PLACE(k) //相当于Bk,考察在放置了前k-1个后xk的合理性。 //如果一个皇后能放在第k行和X(k)列,则返回true,否则返回false。X是一个全程数组,进入此过程时已置入了k个值。ABS(
您可能关注的文档
最近下载
- 特种作业操作证 制冷与空调运行操作作业 实操培训.pdf VIP
- CL01实验室内审检查记录表.pdf VIP
- 幼儿园:实习心得.docx VIP
- (高清版)DB52∕T 895-2014 混凝土砌块用轻质配砖.pdf VIP
- BS EN 10025-6-2004第6部分:技术交付条件用于高屈服强度的扁平产品淬火和结构钢回火的条件.pdf VIP
- 2025法律职业伦理历年试题及答案.doc VIP
- 《房颤诊断和治疗中国指南(2023)》解读PPT课件.pptx VIP
- 40篇短文搞定高考英语3500单词(回顾巩固用).pdf VIP
- 大学生职业生涯规划.pdf VIP
- 2025 公司招聘简章(模板).pdf VIP
原创力文档


文档评论(0)