- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
集训2010-3-26 Ll.ppt
公平组合游戏
杭州学军中学 李恺威
例子:取石子游戏
有n颗石子
两个人轮流取石子
每次可以取1到k颗
取完石子者获胜
问谁有必胜策略
什么是组合游戏?
有n颗石子
游戏的局面有限
两个人轮流取石子
双人游戏,操作轮流进行
每次可以取1到k颗
规定在每个局面中每个人可行的操作
取完石子者获胜
无法操作时游戏结束,得出胜负
问谁有必胜策略
游戏一定会结束
分析问题
例如有21颗石子,每次可取1至3颗
剩下0颗,先手失败
剩下1、2、3颗,先手必胜
剩下4颗,先手必败
……
剩下4n颗,先手必败
反之先手必胜
策略:先取1颗,对方取k颗,则取4-k颗。
N状态和P状态
N状态:先手必胜 – Next player wins
P状态:先手必败 – Previous player wins
终止状态为P状态
对于每个N状态,至少可转移到一个P状态
对于每个P状态,只能转移到N状态
0
1
2
3
4
5
6
7
8
9
P
N
N
N
P
N
N
N
P
N
继续取石子
有n堆石子,第i堆石子有a_i个。
两人轮流取
每人每次只能从一堆中取走若干颗石子
无子可取者失败
n=1?
n=2?
n2?
Nim和 A⊕B
二进制不进位加法
A⊕B = A xor B
22 = 101102
51 = 1100112
——————————————
37 = 1001012
a_1 ⊕a_2 ⊕… ⊕a_n
等于0 先手必败 P状态
不等于0 先手必胜 N状态
移硬币
1 ×N的网格上,放置若干硬币
每人每轮可将某个硬币向左移动到某个位置
转化为取石子问题
0
1
2
3
4
5
6
7
8
9
○
○
○○
○
通用模型:游戏图
有向无环图
游戏局面结点
局面可行操作有向边
终止局面无出度的点
游戏的进行点通过有向边的运动
NP图
N
P
Sg函数
分析游戏的工具
NP状态
SG函数
对于一个图G=(X,F)
定义在X上的函数g
取一堆石子
n颗石子
一次取1-3颗
sg函数
g(i)=i mod 4
0
1
2
3
4
5
6
7
8
9
0
1
2
3
0
1
2
3
0
1
SG图
2
3
0
1
0
0
2
1
0
0
1
0
2
0
移动皇后
棋盘上有一个皇后
两人轮流移动皇后
每次可将皇后向左移或者向上移
将皇后移动至左上角者胜利
必胜策略?
SG函数?
有多个皇后怎么办?
0
1
2
3
4
5
6
7
1
0
3
2
5
4
7
6
2
3
0
1
6
7
4
5
3
2
1
0
7
6
5
4
4
5
6
7
0
1
2
3
5
4
7
6
1
0
3
2
6
7
4
5
2
3
0
1
7
6
5
4
3
2
1
0
游戏的和
例子:
棋盘上有若干个皇后
两人轮流操作
每次可选择一个皇后将其向左或向上移动若干格
无法移动者失败
游戏的和(cont’d)
有n个游戏图:G1=(X1,F1),G2=(X2,F2),…,Gn=(Xn,Fn)。
组合形成G=(X,F)称作G1,…,Gn的和
表示为G=G1+G2+G3+…+Gn
其中X=X1×…×Xn(笛卡儿积)
F(x)=F(x1,…,xn)= F1(x1)×{x2}×…×{xn}
∪{x1}×F2(x2)×…×{xn}
∪…
∪{x1}×{x2}×…×Fn(xn)
画图说明
Sg定理
令gi表示游戏图Gi的sg函数(i=1…n)
则G=G1+G2+…+Gn的sg函数为
g(x1,…,xn)=g1(x1)⊕… ⊕gn(xn)
对于一个游戏图,如果已知它的所有子游戏图的sg函数,通过Nim和的形式就可以求出这个游戏图的sg函数
Sg定理:证明
令x=(x1,…,xn)表示X中的任意一点
令b=g1(x1)⊕…⊕gn(xn)
只要说明函数g(x1,…,xn)
1、对于每个小于b的非负整数a,总有一个(x1,…,xn)的后继的g值为a
2、没有(x1,…,xn)的后继的g值等于b
就可以说明x的sg值为b
Sg定理:证明(cont’d)
1、对于每个小于b的非负整数a,总有一个(x1,…,xn)的后继的g值为a
令d=a⊕b,找出整数k满足2k-1≤d2k
k的含义:二进制下a、b的第k位不同且a的第k位为0,b的第k位为1
一定能找出一个i使得gi(xi)的第k位为1;不妨设i=1
所以d⊕g1(x1)g1(x1)
将x1转移成x1’,满足g1(x1’)=d⊕g1(x1)
g1(x1’)⊕g2(x2)…⊕gn(xn)
=d⊕g1(x1)⊕g2(x2)⊕…⊕gn(xn)
=d⊕b=a
Sg定理:证明(cont’d)
2、没有(x1,…,xn)的后继的g值等于b
请同学自行证明
多堆取石子
m堆石子
第i堆ni颗
一次去1-3颗
sg函数
(2
文档评论(0)