拉斯维加斯算.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
Ⅳ皇后问题Las Vegas优化算法的实现 邓宏涛,朱殉 (江汉大学数学与计算机科学学院。武汉430056) 摘要:介绍了 皇后问题常用的回溯解决篡略,分析了概率算法中拉斯维加斯(LasVegas)算法的 特点及其在 皇后问题中的应用,并给出了两者结合解决 皇后问题的算法篆略和效率分析. 关键词:回溯算法;拉斯维加斯算法; 皇后 中图分类号:TP301,6 文献标识码:A 文章编号:1673.0143(2006)04.0056,03 O 引言 回溯算法有“通用解题法”之称,是一个既 带有系统性又带有跳跃性的搜索算法,用它可以 系统地搜索问题的所有解.它在问题的解空间树 中,按深度优先策略,从根结点出发搜索解空间 树,只要搜索到问题的一个解就可结束.它常用 于求解组合数较大的问题. 皇后问题就常常用 回溯法解决,可以得到所有的解决方案. 拉斯维加斯(Las Vegas)算法属于概率算法 中的一种.它具有概率算法的特点,即允许算法 在执行的过程中随机选择下一个计算步骤.许多 情况下,当算法在执行过程中面临一个选择时, 随机性选择常比最优选择省时.因此概率算法可 在很大程度上降低算法的复杂度.拉斯维加斯算 法不会得到不正确的解,一旦用该算法找到一个 解,那么这个解肯定是正确的.但是有时候用拉 斯维加斯算法可能找不到解.拉斯维加斯算法得 到正确解的概率随着它用的计算时间的增加而提 高.对于所求解问题的任一实例,用同一拉斯维 加斯算法反复对该实例求解足够多次,可使求解 失效的概率任意小. 1 常用的回溯算法解决方案 皇后问题:在 × 格的棋盘上放置彼此不 受攻击的 个皇后.按照国际象棋的规则,皇后 可以攻击与之处在同一行或同一列或同一斜线上 的棋子. 皇后问题等价于在 × 格的棋盘上放 置 个皇后,任何2个皇后不放在同一行或同一 列或同一斜线上. 用 元组x[1: ]表示 皇后问题的解.其中 [f]表示皇后i放在棋盘的第i行的第 [f]列.由 于不允许将2个皇后放在同一列,所以解向量中 的 [f]互不相同.2个皇后不能放在同一斜线上 是问题的隐约束.该条件可以化成显约束的形 式.设2个皇后放置的位置分别是(i, 和(k,f), 只要Ii-kI=l/-II成立,就表明2个皇后位于同 一条斜线上.问题的隐约束化成了显约束. 用回溯法解 皇后问题时,用完全 叉树表 示解空间. 可行性约束place剪去不满足行、列 和斜线约束的子树. 下面的解 皇后问题的回溯法中,递归方法 backtrack(1)实现对整个解空间的回溯搜索. backpack(f)搜索解空间中第f层子树.sum记录当 前已找到的可行方案数. 解 皇后问题的回溯算法描述如下: public class NQueen l {static int n; //皇后个数 static int[]x; //当前解 static long sum; //当前已找到的可行方案数 public static long nQueen (int an) { n-nn; SLim=0: x=new int[n+l】; for(inti=0;i《=n;i++) x[i1=0; backpack(1): return sum ; 收稿日期:2006—01—12 作者简介:邓宏涛(1972一),男,湖北武汉人,讲师,主要从事软件工程研究. 2006年第4期 邓宏涛,等:Ⅳ皇后问题Las Vegas1;~化算法的实现 57 } private static boolean place(int k) { f0r(intj=l;jk;j++) if((Mam.abs(k-j)~--Math.abs(x[j]一x[k])) Il(x【i]==x[k])) returnfalse; return true; ) private staticvoidbacktrack (intt) { if(tn)sum++; else for(inti=l;i-n;i- ) { x[t]=i; if(place(t)) backtrack(t+1): } ) 2 拉斯维加斯算法解决方案 在用回溯法解 皇后问题时,实际上是在系 统地搜索整个解空间树的过程中找出满足要求的 解.往往忽略了一个重要事实:对于玎皇后问题 的任何一个解而言,每一个皇后在棋盘上的位置 无任何规律,不具有系统性,而更像是随机放置 的.由此想到可采用拉斯维加斯算法,在棋盘上 相继的各行中随机地放置皇后,并注意使新放置 的皇后与已放置的皇后互不攻击,直至 个皇后 均已相容地放置好,或已没有下一个皇后的可放 置位置时为止. 方法queensLV()实现在棋盘上随机放置玎 个皇后的拉斯维加斯算法. private static Boolean queensLV () {

文档评论(0)

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

1亿VIP精品文档

相关文档