- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 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 ()
{
您可能关注的文档
最近下载
- 闽教版 英语 五年级上册 全册教案.docx VIP
- DG∕TJ08-2269A-2018 公路指路标志设置标准.pdf VIP
- 中考语文阅读理解《故乡的冰凌花》含答案.docx VIP
- 保育员个人工作总结模版.pptx VIP
- 唐山市2024 学年度高三年级第一学期期末考试数学试卷(附答案).pdf VIP
- 2025-2026学年北京西城区初二上学期期末语文试卷-附答案.pdf VIP
- 02S515 排水检查井图集.docx VIP
- 六年级地理期末知识点复习总结.docx VIP
- SY∕T 6326-2019 石油钻机和修井机井架承载能力检测评定方法及分级规范.pdf
- 列车牵引与制动系统课件 项目四 制动系统认识.pptx VIP
原创力文档


文档评论(0)