0047算法笔记【随机化算法】拉斯维加斯(LasVegas)算法和n后问题.docxVIP

0047算法笔记【随机化算法】拉斯维加斯(LasVegas)算法和n后问题.docx

  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文档。上传文档
查看更多
0047算法笔记【随机化算法】拉斯维加斯(LasVegas)算法和n后问题

?1、拉斯维加斯(Las Vegas)算法?拉斯维加斯算法不会得到不正确的解。一旦用拉斯维加斯算法找到一个解,这个解就一定是正确解。但有时用拉斯维加斯算法找不到解。与蒙特卡罗算法类似,拉斯维加斯算法找到正确解的概率随着它所用的计算时间的增加而提高。对于所求解问题的任一实例,用同一拉斯维加斯算法反复对该实例求解足够多次,可使求解失败的概率任意小。拉斯维加斯算法的一个显著特征是它所作的随机性决策有可能导致算法找不到所需的解。[cpp]?view plain?copyvoid?obstinate(Object?x,?Object?y)??{//?反复调用拉斯维加斯算法LV(x,y),直到找到问题的一个解y??bool?success=?false;???while?(!success)?success=lv(x,y);??}???设p(x)是对输入x调用拉斯维加斯算法获得问题的一个解的概率。一个正确的拉斯维加斯算法应该对所有输入x均有p(x)0。设t(x)是算法obstinate找到具体实例x的一个解所需的平均时间 ,s(x)和e(x)分别是算法对于具体实例x求解成功或求解失败所需的平均时间,则有。解此方程得:?2、n后问题?问题描速:在n×n格的棋盘上放置彼此不受攻击的n个皇后。按照国际象棋的规则,皇后可以攻击与之处在同一行或同一列或同一斜线上的棋子。n后问题等价于在n×n格的棋盘上放置n个皇后,任何2个皇后不放在同一行或同一列或同一斜线上。?1)纯拉斯维加斯随机算法求解思路?对于n后问题的任何一个解而言,每一个皇后在棋盘上的位置无任何规律,不具有系统性,而更象是随机放置的。在棋盘上相继的各行中随机地放置皇后,并注意使新放置的皇后与已放置的皇后互不攻击,直至n个皇后均已相容地放置好,或已没有下一个皇后的可放置位置时为止。?具体实现代码如下:?1、RandomNumber.h[cpp]?view plain?copy#includetime.h?//随机数类?const?unsigned?long?maxshort?=?65536L;??const?unsigned?long?multiplier?=?1194211693L;??const?unsigned?long?adder?=?12345L;???class?RandomNumber??{???private:???//当前种子??unsigned?long?randSeed;???public:???RandomNumber(unsigned?long?s?=?0);//构造函数,默认值0表示由系统自动产生种子??unsigned?short?Random(unsigned?long?n);//产生0:n-1之间的随机整数??double?fRandom(void);//产生[0,1)之间的随机实数?};???RandomNumber::RandomNumber(unsigned?long?s)//产生种子?{???if(s?==?0)???{???randSeed?=?time(0);//用系统时间产生种子??}???else??{???randSeed?=?s;//由用户提供种子??}??}???unsigned?short?RandomNumber::Random(unsigned?long?n)//产生0:n-1之间的随机整数?{???randSeed?=?multiplier?*?randSeed?+?adder;//线性同余式??return?(unsigned?short)((randSeed16)%n);??}???double?RandomNumber::fRandom(void)//产生[0,1)之间的随机实数?{???return?Random(maxshort)/double(maxshort);??}???2、7d4d1.cpp[cpp]?view plain?copy//随机化算法?拉斯维加斯算法?n后问题?#include?stdafx.h?#include?RandomNumber.h?#include?cmath?#include?iostream?using?namespace?std;???class?Queen??{???friend?void?nQueen(int);???private:???bool?Place(int?k);//测试皇后k置于第x[k]列的合法性??bool?QueensLv(void);//随机放置n个皇后拉斯维加斯算法??int?n;//皇后个数??int?*x,*y;//解向量?};???//测试皇后k置于第x[k]列的合法性?bool?Queen::Place(int?k)??{???for(int?j

文档评论(0)

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

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

1亿VIP精品文档

相关文档