- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
由感性认识到理认识
由感性认识到理性认识 ——透析一类搏弈游戏的解答过程 认识事物的过程 游戏 甲乙两人面对若干排石子。 每一排石子的数目可以任意确定。 两人轮流按下列规则取走一些石子: 每一步必须从某一排中取走两枚石子; 这两枚石子必须是紧紧挨着的; 如果谁无法按规则取子,谁就是输家。 规则分析 从简单入手 用一个无序多元组(a1, a2, …, an),来描述游戏过程中的一个局面。 局面的分解 局面与集合 我们只关心局面的胜负。 类比 局面的加法 胜+负=胜; 负+胜=胜; 负+负=负; 胜+胜=不定。 联想 能否用一个二进制数,来表示一个局面呢? 构造 集合 g(x):表示局面(x),下一步可能局面的值的集合。 例子 推广 把游戏规则改变一下 一次取紧紧相邻的两枚石子; 一次取紧紧相邻的三枚石子; 一次取紧紧相邻的任意多枚石子; 一次取某一排中的任意两枚石子,不要求紧紧相邻; 一次取某一排中的任意多枚石子,不要求紧紧相邻; …… 此类博弈游戏的一般性解法 判断一个局面,究竟谁有必胜策略 设局面S=(a1, a2, …, an); S的值#S=f(a1)+…+f(an)(二进制数的加法); 如果#S≠0,则先行者有必胜策略; 如果#S=0,则后行者有必胜策略。 函数f(x)的求法 f(0)=0; g(x)表示局面(x),下一步可能局面的值的集合; 令G(x)为g(x)在非负整数集下的补集; 则f(x)=min{G(x)}。 小结(一)优点 缺点 优点 适用范围广,可以直接用于大多数此类游戏 与穷举相比,速度快,时空复杂度低 缺点 另一个游戏 有若干堆石子,两人互取。无法取子者输。 一次只能在一堆中取,至少一枚,至多不限。 对于这个游戏,可以证明令f(x)=x,就满足要求。 有些游戏可以直接推导出函数f(x)的表达式 小结(二)如何优化算法 可以看作是对搜索算法的优化。 小结(三)如何由浅入深 由感性认识到理性认识的途径 去伪存真 去粗取精 由此及彼 由表及里 总结 此类游戏的一般性解法 F(x)=min{G(x)} 算法优化的本质 避免重复搜索 如何由浅入深 去伪存真,去粗取精 由此及彼,由表及里 * * 事物的现象 认识的感性阶段 ? 事物的本质 认识的理性阶段 人们认识事物,总是从简单入手。 究竟如何才能由浅入深呢? 并不是人人都能从简单的事物中得到一般性的规律。 a1=7 a2=3 a3=5 1 2 3 4 5 6 7 a1=7 如果一排有7枚石子 而你取了3、4这两枚石子, 可以看作是将这一排分成了两排, 其中一排有2枚石子,另一排有3枚石子。 局面的排数可能会随着游戏的进行而增加。 a1=2 a2=3 (3, 3, 1) 若初始局面可以分成两个相同的“子局面”,则乙有必胜策略。 (3, 3, 3, 3, 1, 1) + 负 (3, 3, 1) (3)+(3)+(1) 加法 分解 加法 + + 若先行者有必胜策略,则称为“胜局面”。 若后行者有必胜策略,则称为“负局面”。 胜 负 胜 + = 负 负 负 + = 胜 胜 ? + = X C+C X + = X X 负 + = X 负 X + = X C+C X + = (2, 2, 2, 7, 9, 9) (2, 2, 2, 7) + (9)+(9) = (2, 2, 2, 7) (2, 7) 用集合{2, 7}来表示 这实质上是简化了局面的表示。 能不能进一步简化一个局面的表示呢? 一个局面可以用一个集合来描述。 二进制数的不进位加法:对二进制数的每一位,采用01加法。 二进制的01加法 VS 局面的加法 1 + 0 = 1;胜+负=胜; 0 + 1 = 1;负+胜=胜; 0 + 0 = 0;负+负=负; 1 + 1 = 0;胜+胜=不定。 二进制数的加法 VS 局面的加法 胜 负 胜 + = 负 负 负 + = 胜 胜 ? + = !0 0 !0 + = 0 0 0 + = !0 !0 ? + = 0011 + 1010 1001 1010 + 1010 0000 胜?!0,负?0 局面的加法,与二进制数的加法,性质完全相同。 #S=#(a1, …, an)=f(a1)+…+f(an)。 关键就在于函数f(x)的构造。 S #S (3) #(3) #(3, 3)=#(3)+#(3) (3) (3) (3, 3) + = + = #(3, 3, 1)=#(3)+#(3)+#(1) (3, 3, 1) (3) (3) (1) + + = + + = #(3, 3, 1)=f(3)+f(3)+f(1) 用符号#S,表示局面S所对应的二进制数,简称局面S的值。 #S=0?S负, #S≠0?S胜。 (5) (1, 4) (2,
文档评论(0)