楼天城匹配算法在搜索问题中的应用.pptVIP

楼天城匹配算法在搜索问题中的应用.ppt

  1. 1、本文档共34页,可阅读全部内容。
  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文档。上传文档
查看更多
楼天城匹配算法在搜索问题中的应用

* * 匹配算法 在搜索问题中的应用 浙江省杭州第十四中学 楼天城 loutiancheng@   很多题目,如果我们可以建立数学模型,应该尽量用解析法来处理,因为简单的模型更清晰地反映了事物之间的关系。   但是,并不是所有的题目都可以建立简单的数学模型。我们这时必须使用搜索的方法,也就是枚举所有可能情况来寻找可行解或最优解。 前言   由于搜索一般建立在枚举之上,所以搜索常常和低效是分不开的。   有时搜索的运算量非常大,实在是一件痛苦的事情。 于是我们需要利用很多技巧来提高效率:   可行性剪枝, 最优性剪枝, 调整搜索顺序, 等方法都很有用,在它们的帮助下,我们可以大大提高搜索的效率。   而有些题目,这些常规的优化方法很难有用武之地。这时我们必须使用一些非常规的搜索方法。   本文中我们将讨论非常规搜索中的一种 ——部分搜索+匹配算法 引题:   N个物品与N个位置,给定每个物品可能放的位置集合,要求寻找一一对应的关系。   但还给出物品位置之间的限制(例如:如果1放在3则2不能放在1)。   求一组可行解,或给每一种对应关系一个权,求满足条件的最优解。   由于事物之间的限制关系非常复杂,很难建立简单的二分图关系,或者用网络流来解决。   面对这一系列类似的问题,我们一般只有搜索,如何搜索又如何优化呢? 简单分析:   如果我们枚举每一个物品的位置,然后判断。这样的时间复杂度为O(n!)。好像似乎也只能这样。 进一步分析: 我们看一个例子,n=6: 其它限制有4条(a,b,c,d)表示如果a放在b则c不能放在d 1 3 5 6 2 2 5 3 3 1 4 1 3 2 6 2   我们发现,如果我们一旦确定了3和5的位置,其它4个物品的位置之间已经没有限制关系了,这样其它4个物品的位置可以通过匹配来解决。 这时我们发现一个新的搜索方法:部分搜索+匹配。 1 3 5 6 2 2 5 3 3 1 4 1 3 2 6 2 部分搜索+匹配: 搜索一部分变量,使得余下变量之间的关系简化,然后通过一些高效算法(匹配)完成余下问题。   就本题而言就是:先搜索一定数量(而不是全部)物品的位置,使问题内其它物品的关系简化为二分图关系,用二分图匹配来解决余下的物品。   通过部分搜索为匹配算法提供条件(例如上面的例子创造二分图关系),而匹配算法代替搜索,高效地完成余下的任务。   部分搜索+匹配的方法充分发挥了搜索和匹配算法的双重优势。搜索的优势在于应用性广,可以克服复杂的情况,匹配算法的优势在于效率高。两者相互促进,同时也弥补对方的不足。这也是这个方法成功的关键。   例如上面的例子,如果我们先知道了3和5的位置后,不用匹配,其实我们是在用搜索来求匹配,效率当然不会高。 部分搜索+匹配的方法已经在很多题目中得到了应用。 一个部分搜索+匹配算法的经典例子。 题目简述(NOI2003二试第三题)   B国的连环阵由M个武器组成。最初,1号武器处于攻击状态,其他武器都处在无敌自卫状态。以后,一旦第i(1 ? iM)号武器被消灭,1秒钟以后第i+1号武器就自动从无敌自卫状态变成攻击状态。   A国有N个炸弹,每个炸弹的作用半径均为k,且会持续爆炸5分钟。在这5分钟内,瞬间消灭离它直线距离不超过k的、处在攻击状态的B国武器,不会炸毁本国炸弹。 任务:   决定一个序列a1、a2、a3…使得在第ax号炸弹引爆的时间内连环阵被摧毁。这里的x应当尽量小。 输入:   N,M及武器和炸弹的坐标。 测试数据中的坐标是随机生成的。 初步分析:   A国炸弹i可以炸到B国武器j的条件: (u[i]-x[j])2+(v[i]-y[j])2=R2 结论:很难找到求最优解的多项式算法。 面对此类问题,一般只有搜索策略。 进一步分析:   每一颗炸弹必定炸掉B国武器中编号连续的一段。   5分钟只是表明每一颗炸弹可以炸掉任意多个编号连续的B国武器。 普通的搜索方法:   每次寻找一个编号最小的没有被炸掉的B国武器,选择一颗没有使用过并能炸到此武器的A国炸弹,然后使用这颗炸弹炸掉B国武器连续的一段,继续深度优先搜索下一颗炸弹的编号,如果发现B国武器已经全部炸毁就可以回溯。   搜索的时间复杂度为O(n!)。即使加上优化,程序效率也不是很高。 部分搜索:   此题使用部分搜索的算法需要一些转化:如果已经将B国武器根据编号分为x段,其中第i段为[Si,Ti] (S1=1,Ti=Si,Ti+1=Si+1)。   然后的任务就是判断是否可以从A国的N颗炸弹中选出x颗,分别可以炸掉其中的一段。   其实我们把搜索分为了两部分,  (1)将B国武器根据编号分为x段。  (2)判

文档评论(0)

sheppha + 关注
实名认证
文档贡献者

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

版权声明书
用户编号:5134022301000003

1亿VIP精品文档

相关文档