- 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)算法;学习要点
拉斯维加斯算法概述
N皇后问题
传统的回溯法
拉斯维加斯算法
拉斯维加斯算法的改进
整数因子分解;1. 拉斯维加斯算法概述;一个正确的LV算法,要求对每个实例x, p(x)0,更好的情况是:
;设t(x)是算法obstinate找到一个正确解所需的期望时间,则若要最小化t(x),则需在p(x), s(x)和e(x)之间进行某种折衷。;2. N后问题;2.1 回溯法(8后问题);;2.2 拉斯维加斯算法(8后问题);2.2 拉斯维加斯算法;//测试皇后k置于第x[k]列的合法性?;?bool?Queen::QueensLv(void)??//随机放置n个皇后的拉斯维加斯算法??
{??????
RandomNumber?rnd;? / /随机数产生器???
? ?int?k?=?1;?????????????//下一个皇后的编号?????
? int?count?=?1;?????//在一列中,可以放置皇后的个数
? while((k=n)(count0))?????
? {????????
? ? count?=?0;???????
? ??for(int?i=1;?i=n;?i++)??????????
{???????????
?? ? x[k]?=?i; //位置?????????????
if(Place(k))???????{??????????y[count++]?=?i;?????????}????????
?? }??????
??? if(count0)??????{??????x[k++]?=?y[rnd.Random(count)];?????}?????//随机位置 ??
??}?????
return?(count0);????????//count0?表示放置成功?
?}??;?void?nQueen(int?n)?//解n后问题的拉斯维加斯算法??
?{?????
? Queen?X;????
? X.n?=?n;???????
? int?*p?=?new?int[n+1];?????
for(int?i=0;?i=n;?i++)??
???? {??????????
p[i]?=?0;??????
}??????
X.x?=?p;??????
X.y?=?new?int[n+1];?
?//反复调用随机放置n个皇后的L·V算法,直到放置成功 ????
while(!X.QueensLv());????
?? ??for(int?i=1;?i=n;?i++)??????
{??????????coutp[i]?;??????}?????
? coutendl;????
?? delete?[]p;??
}??;
int?main()??//主函数
{???
??? int?n=8;????????
coutn皇后问题的解为:endl;????????
nQueen(n);????????
return?0
?};;问题?
消极:LV算法过于消极,一旦失败,从头再来。
乐观:回溯法过于乐观,一旦放置某个皇后失败,就进行系统回退一步的策略,而这一步往往不一定有效。
折中:会更好吗?一般情况下为此。
先用LV方法随机地放置前若干个结点,例如 k 个。然后使用回溯法放置后若干个结点,但不考虑重放前k个结点。
若前面的随机选择位置不好,可能使得后面的位置不
成功,如若前两个皇后的位置是1、3。
随机放置的皇后越多,则后续回溯阶段的平均时间就
越少,失败的概率也就越大。;实例;改进算法
QueensLV函数中:
while((k=n)(count0))? while((k=stopVegas)(count0))????
?
nQueen函数中:
while(!X.QueensLv(stopVegas)); //直到随机放好stopVegas个皇后
if(X. Backtrack(stop+1)) ?//算法的回溯搜索部分??
{
?? ? ?fo
原创力文档


文档评论(0)