算法合集之《组合游戏略述——浅谈SG游戏的若干拓展及变形》

合集下载

团体心理辅导103个游戏

团体心理辅导103个游戏

..... . ... 时Sr诫呎------------- --- 培训游戏大全(团体游戏篇103个游戏)一.备受攻击目的:体验被排挤的滋味内容:1. 抽出一人做箭靶。

2•在地上画一个圆圈,或用绳圈也可,箭靶”站在中间,其他人要拍打他最少3次。

但不可给箭靶”碰到,被碰到的人便要做箭靶”了。

备注:如有8人以上,分为两组为佳,这可易于走动。

变化:箭靶”可拉人入圈(这个圈一定要大一点),帮他一起捉人,即圈内人越来越多,直至所有人都入了圈为止。

二.毕加索目的:考沟通能力时间:10~20分钟材料:笔和纸内容:1. 组长先预备数张画了圆形的纸。

最好有多张。

2. 每两人配对比赛。

3. 开始前,每一组合背对背而坐。

4. 在指定时间内,一人负责讲圆形,另一人则负责画圆。

画圆的人,只可听不可问,也不可让讲的人看到。

5. 时间到,就看谁画得快而准。

6. 也可对换角色。

备注:1. 这游戏可看到各人不同的沟通问题。

2. 组长可在游戏后,讲解沟通的艺术和重要。

三.各抒己见目的:了解组员的时事触角,学习直言表达时间:15分钟材料:当日报纸内容:组长说:今日是时事论坛,有个人意见要尽情表达。

”1•选数则有意义又富争论性的新闻,请大家表达看法。

了解各组员的分析力,个人观点、立场等'、、、、'2. 组长不会下结论,但要赞赏组员表达及互相尊重的态度。

------------------- 时磊5说------ ---- -------- 四.旁若无人目的:考验组员的分析力、观察力、最终带出旁若无人的坏处时间:15分钟内容:组长说一两个人在你面前讲暗语,对你视若无睹,你感觉如何?”1. 两人一组,秘密地在房中选一件物品作为讨论目标。

在众人面前讨论时,不可提示物件名称。

其他组员听后尝试寻找出答案。

2. 轮流讨论竟猜。

3. 完结时,组长要指出旁若无人的沟通方式,是令别人难受的五.波涛汹涌目的:让气球停留在空中,激发欢乐时间:5~10分钟材料:气球多个内容:组长说:如果你心中有气,顶在胸口会好辛苦,我们为别人赶走这气好吗?”1. 每人一个不同颜色的气球。

第二讲-组合游戏

第二讲-组合游戏

的状态,可以变为(2,1),(1,2)状态,两个状态其实是一样的,即对方进入n = 2状态,使得对方获胜,所以己方输。

的情况,但我们继续下去会发现计算量已经非常大了,我们不得不借助计算机,或者换一种思维。

我们接下来先不考虑怎么解决,而是介绍相关的定义。

由下往上推,我们可以发现这么一个规律,终止节点sg = 0,终止节点为必败点,连接终止节点的点为必胜点,其。

于是乎,我们总结得出sg = 0的节点为必败点,sg > 0的点为必胜点。

证明也想当容易:
时,做任何一个决策,都会改变其中一个 sg 值,导致对应的二进制位发生变化,即会变成。

组合游戏略述——浅谈SG游戏的若干拓展及变形

组合游戏略述——浅谈SG游戏的若干拓展及变形

策略
将偶环删去,将奇环替换成一条边!!! 将偶环删去,将奇环替换成一条边!!!
2011-3-11
第25页 25页
石家庄二中 贾志豪
Cutting Edges游戏
环的处理成为关键 惊人发现, 惊人发现,
任何奇环的SG值为 任何奇环的 值为1 值为 任何偶环的SG值为 值为0 任何偶环的 值为
策略
将偶环删去,将奇环替换成一条边!!! 将偶环删去,将奇环替换成一条边!!!
Cutting Edges游戏
证明猜想(数学归纳法) 证明猜想(数学归纳法)
以树中节点个数作为阶段; 以树中节点个数作为阶段; 一个节点和两个节点显然成立; 一个节点和两个节点显然成立; 假设N个节点时成立 个节点时成立, 假设 个节点时成立,
情况一: 情况一:若去掉与根节点相连的边 情况二: 情况二:若去掉G’中的边
G’ G’
根节点
定理: 定理:SG(G)=SG(G’)+1
根节点
中间节点
至多有N 至多有N个点
由归纳假设
至多有N 至多有N-1个点
SG值为 到SG( G’ )-1, 值为0到 值为 , 取不到SG( G’ ) 取不到 2011-3-11
SG值为 到SG(G’ ),取不 值为1到 值为 , ’ )+1 到SG(G石家庄二中 贾志豪 15页 第15页
Cutting Edges游戏
环的处理成为关键 惊人发现, 惊人发现,
任何奇环的SG值为 任何奇环的 值为1 值为 任何偶环的SG值为 值为0 任何偶环的 值为
根节点
2011-3-11 第23页 23页
根节点
石家庄二中 贾志豪
Cutting Edges游戏

博弈论题目总结(三)——组合游戏进阶

博弈论题目总结(三)——组合游戏进阶

博弈论题⽬总结(三)——组合游戏进阶第⼆波题⽬⼤多都是sg组合游戏的基本变形,是对游戏规则的⼩改动。

容易提取出SG函数的模型,且SG函数的规律也⽐较简单⽽本⽂的题⽬需要较多的模型转化思想但博弈论的精髓还是打表翻硬币游戏⼀条直线上有很多硬币,有的正⾯朝上,有的反⾯朝上,每次可以翻⼀些硬币,但最右边的硬币必须由正变反,不能操作者输翻硬币可能会有奇奇怪怪的要求,⼀次翻好⼏个,⼀次翻连续的⼏个结论:正⾯朝上的⽯⼦之间互不影响,设正⾯朝上是1,反⾯朝上是0,那么SG(0101001)=SG(01)^SG(0001)^SG(0000001)证明见论⽂树形删边游戏SG(u)=xor{SG(v)+1}证明见jzh神犇的论⽂POJ 3710 Christmas Game环怎么处理啊?⼀个奇环可以分成等长的两条链,SG函数值为0,其他后继状态的SG函数值均>1,故奇环的SG函数值为1⼀个偶环只能分成异奇偶的两条链,SG函数值均>0,故奇环的SG函数值为0tarjan边双缩点搞⼀下就⾏了1 #include <cmath>2 #include <cstdio>3 #include <cstring>4 #include <algorithm>5#define N1 1056#define M1 5057#define ll long long8#define dd double9using namespace std;10const dd eps=1e-7;1112 template <typename _T> void read(_T &ret)13 {14 ret=0; _T fh=1; char c=getchar();15while(c<'0'||c>'9'){ if(c=='-') fh=-1; c=getchar(); }16while(c>='0'&&c<='9'){ ret=ret*10+c-'0'; c=getchar(); }17 ret=ret*fh;18 }19struct Edge{20int to[M1*2],nxt[M1*2],val[M1*2],head[N1],cte;21void ae(int u,int v,int w)22 {23 cte++; to[cte]=v; nxt[cte]=head[u];24 head[u]=cte; val[cte]=w;25 }26 }e,E;2728int T,n,m;29int low[N1],dfn[N1],use[N1],stk[N1],dad[N1],sum[N1],tim,num,tp;30void tarjan(int x,int fa)31 {32int j,v;33 low[x]=dfn[x]=++tim; stk[++tp]=x; use[x]=1;34for(j=e.head[x];j;j=e.nxt[j])35 {36 v=e.to[j]; if(e.val[j]==fa) continue;37if(!dfn[v]){38 tarjan(v,e.val[j]);39 low[x]=min(low[x],low[v]);40 }else if(use[x]){41 low[x]=min(low[x],dfn[v]);42 }43 }44if(low[x]==dfn[x])45 {46 num++;47while(stk[tp]!=x){ use[stk[tp]]=0; dad[stk[tp]]=num; sum[num]++; tp--; }48 use[x]=0; dad[x]=num; sum[num]++; tp--;49 }50 }5152void rebuild()53 {54int i,j,v;55for(i=1;i<=n;i++)56 {57for(j=e.head[i];j;j=e.nxt[j])58 {59 v=e.to[j];60if(dad[i]!=dad[v])61 E.ae(dad[i],dad[v],0);62 }63 }64 }6566int sg[N1],de;67void dfs(int x,int fa)68 {69int j,v;70for(j=E.head[x];j;j=E.nxt[j])71 {72 v=E.to[j]; if(v==fa) continue;73 dfs(v,x); sg[x]^=sg[v]+1;74 }75if(sum[x]>1 && (sum[x]&1)) sg[x]^=1;76 }7778void init()79 {80 memset(sg,0,sizeof(sg)); memset(low,0,sizeof(low));81 memset(sum,0,sizeof(sum)); memset(dfn,0,sizeof(dfn));82 memset(dad,0,sizeof(dad)); memset(use,0,sizeof(use));83 memset(&e,0,sizeof(e)); memset(&E,0,sizeof(E));84 tim=0; tp=0; num=0;85 }8687int N;88int main()89 {90int i,j,x,y;91while(scanf("%d",&N)!=EOF) {9293int ans=0;94while(N--)95 {96 init(); read(n); read(m);97for(i=1;i<=m;i++)98 {99 read(x); read(y); e.ae(x,y,i); e.ae(y,x,i);100 }101for(i=1;i<=n;i++) if(!dfn[i]) tarjan(i,-1);102 rebuild();103 dfs(dad[1],-1);104 ans^=sg[dad[1]];105 }106if(ans) puts("Sally"); else puts("Harry");107108 }109return0;110 }View CodeK倍动态减法游戏现在有⼀堆⽯⼦,两个⼈轮流取,后⼿取的⽯⼦数不能超过先⼿取的K倍,第⼀个⼈不能⼀下⼦把⽯⼦都取完,取最后⼀个⽯⼦的⼈赢,问谁能赢在探究“K倍动态减法游戏前”,先研究⼀下2倍动态减法游戏,即fibonacci博弈2倍动态减法游戏结论:当剩余⽯⼦数是斐波那契数时,先⼿必败简单证明如下⽯⼦数为2,3时,显然先⼿必败。

组合游戏

组合游戏
在普通博弈游戏中,有如下性质:
所有的结束位置都是P位置; 从任意一个N位置出发,通过一步一定能到达某个P位 置。 从任意一个P位置出发,只移动一步所到达的只能是N 位置。
减法游戏-定义
用s表示一个正整数构成的集合,基于S所定义的 减法游戏可以描述如下: 有一个由n个石子组成 的石子堆,两名玩家轮流从中拿走石子,每次拿 走石子的个数只能是集合S中的数。拿走最后一 枚石子的玩家获胜。
Misère-Nim-解
当有两个或两个以上的堆中包含的石子数目大于1时:由于两个 人都不可能一下把多个石子数大于1的堆变为没有大于1 的堆, 所以肯定会有一个人拿玩石子后,只剩下一个大小大于1的堆, 这时下一个要拿石子的人将获胜。可以发现,只有一堆石子数目 大于1的时候,Nim-Sum肯定不为0,所以如果初始状态下的NimSum为0,那么先手必败,否则先手必胜。证明的思路是:如果 Nim-Sum为0,那么下一个人不论怎样拿,只要按照规则,一定 会使Nim-Sum不为0;如果Nim-Sum不为0,下一个人一定有一种 拿石子的方法可以让Nim-Sum变成0。
减法游戏-例
例:S = {1, 3, 4},如果在游戏的开始有100枚 石子,那么哪个玩家获胜?
减法游戏-例
使用向后归纳的方法,可以计算出游戏的P位置 和N位置如下: X: 0 1 2 3 4 ... Position: P N P N N N N P N P N ... N N 5 6 7 8 9 10 11 12
P位置和N位置的计算
在普通博弈游戏(Misère游戏类似)中,P位置 和N位置的计算方法如下:
把所有的结束位置标记为P位置; 把能够一步移动到P位置的位置标记为N位置; 把通过一步只能移动到N位置的位置标记为P位置; 如果在上一步没有位置被标记为P位置,算法结束; 否则,转到第二步。

简单的组合博弈游戏

简单的组合博弈游戏
这个游戏还可以有一种变相的玩法:两个人轮流报数, 每次至少报1个,最多报10个,谁能报到100者胜。
好运!该死的英语四级!
Problem Description 大学英语四级考试就要来临了, Kiki和Cici 在紧张的复习 之余喜欢打牌放松。“升级”?“斗地主”?那多俗啊! 作为计算机学院的学生,Kiki和Cici打牌的时候可没忘记专 业,她们打牌的规则是这样的:
1:如果轮到对方抓牌时只剩3张牌,对果轮到对方抓牌时还剩3*k张牌,对手不管取多少,剩 下的牌数是3*x+1或者3*x+2。轮到你时,你又可以构造一个 3的倍数。 所以无论哪种情况,当你留给对手为3*k的时候, 你是必胜的。
题目说Kiki先抓牌,那么当牌数为3的倍数时,Kiki就输了。 否则Kiki就能利用先手优势将留给对方的牌数变成3的倍数, 就必胜。
必败点;
下面我们证明这3个性质。
性质1:所有自然数都会出现在一个必败点中,且仅会出 现在一个必败点中;
证明:m(k)是前面没有出现过的最小自然数,自然与前k-1 个必败点中的数字都不同;m(k)>m(k-1),否则违背m(k-1) 的选择原则;n(k)=m(k)+k>m(k-1)+(k-1)=n(k-1)>m(k-1),因 此n(k)比以往出现的任何数都大,即也没有出现过。又由 于m(k)的选择原则,所有自然数都会出现在某个必败点中。 性质1证毕。
简单的组合博弈游戏
组合博弈游戏应满足以下性质:
1. 有两个游戏者。
2. 有一个可能的游戏状态集。这个状态集通常是有限的。
3. 游戏规则指定了在任何状态下双方的可能的走步和对应的后继状态 集。如果在任意状态下双方的走步集合是相同的,那么说游戏是公平 的(impartial) ,否则是不公平的(partizan) 。象棋是不公平的,因为每 个人只能移动自己的子。

算法合集之《组合游戏略述——浅谈SG游戏的若干拓展及变形》

算法合集之《组合游戏略述——浅谈SG游戏的若干拓展及变形》

算法合集之《组合游戏略述——浅谈SG游戏的若干拓展及变形》组合游戏是一种数学游戏,它可以用来解决多个独立游戏的组合问题。

其中,SG游戏是一种特殊的组合游戏,它的规则比较简单,每一步可以选择一个盒子,然后将里面的石子取出,在该盒子里面放入石子,并将该盒子放入另一个没有被选中的盒子中。

游戏的目标是使对手无法进行有效的操作,即游戏状态无法转移到一个必败状态。

在这篇文章中,我们将讨论SG游戏的一些拓展及变形。

首先是SG游戏的拓展。

在原始的SG游戏中,只有两个玩家进行游戏。

但是,在实际应用中,有时候会需要更多的玩家参与游戏。

为了适应这种情况,可以将SG游戏扩展到多人版本。

例如,可以在游戏的每一步中,每个玩家选择一个盒子,并进行相应的操作。

这样,每个玩家都需要考虑其他玩家的策略,以及如何最大化自己的利益。

这种多人SG游戏的策略分析更加复杂,但也更加有趣。

其次是SG游戏的变形。

SG游戏中的石子数量是固定的,但是在实际应用中,可能会出现不同的石子数量。

例如,可以将每个盒子中的石子数量设置为随机数,或者是一个特定的数值。

这样,玩家在进行游戏时,需要考虑不同石子数量的影响,并调整自己的策略。

另外,可以考虑加入其他的游戏元素,例如限制玩家的操作次数或规定特殊的操作规则。

这些变形可以增加游戏的难度和趣味性。

最后,我们来讨论SG游戏的求解方法。

在SG游戏中,每一种游戏状态都可以用一个非负整数来表示,这个整数被称为SG函数值。

通过计算SG函数值,可以判断一个游戏状态是否为必胜状态。

基本的求解方法是递归算法。

首先,定义SG函数值为0的状态为必败状态,然后逐步求解其他状态的SG函数值。

具体的方法是,先计算所有可以转移到其他状态的状态的SG函数值,然后根据转移关系求出当前状态的SG函数值。

最后,根据SG函数值的计算结果判断游戏状态是否为必胜状态。

综上所述,SG游戏是一种有趣的组合游戏,通过拓展和变形可以增加游戏的难度和趣味性。

使用递归算法可以求解SG游戏的必胜状态。

博弈论基础之sg函数与nim

博弈论基础之sg函数与nim

博弈论基础之sg函数与nim 在算法竞赛中,博弈论题⽬往往是以icg。

通俗的说就是两⼈交替操作,每步都各⾃合法,合法性与选⼿⽆关,只与游戏有关。

往往我们需要求解在某⼀个游戏或⼏个游戏中的某个状态下,先⼿或后⼿谁会胜利的问题。

就⽐如经典的:⼏堆⽯⼦,两⼈可以分别拿若⼲个,⼀次只能选择⼀个⽯⼦堆操作,问给定状态下,先⼿胜利还是后⼿胜利? ⽽nim与sg函数就是对于这类问题的解法,在我的理解看来,sg函数和nim分别对应不同阶段的决策:前者对于单个游戏决策,后着是将这些单个游戏综合起来的整体决策。

⼀、状态与转移 icg游戏往往可以分为两个部分,规则与局⾯。

⽽这两个分别对应了转移与状态。

规则决定了状态转移的合法性,状态是转移的基本。

什么是状态?状态是⼀个静态的局⾯。

就好⽐当下棋时的局⾯⼀样。

在游戏的每个阶段,不论是开始,中间,或是结束。

每⼀个局⾯都对应了⼀种状态。

什么是状态的转移?单个分开的局⾯⽆法构成⼀个完整的游戏,所以就需要从某⼀个状态转移到另⼀个状态,来进⾏⼀次操作。

举个例⼦:有5个⽯⼦放在⼀堆。

5个⽯⼦就是⼀种状态,在不受限制下,你可以改变这个状态。

例如:取⾛4个⽯⼦。

就是将5个⽯⼦这个状态转移到1个⽯⼦这个状态,操作就是取⾛4个⽯⼦。

⽽这个操作的合法性取决于游戏的规则。

例如:⼀次最多取3个⽯⼦。

那么上条操作取4个⽯⼦就是⼀次不合法的操作,意味着你不能从5这个状态直接转移到1这个状态。

那么对于5个⽯⼦,每次最多取三个,从中我们可以得到如下状态转移的图(有向)⼆、sg函数 概念 ⾸先,引⼊mex值的概念。

mex是指不属于集合中整数的最⼩正整数。

⽽sg值就是不属于后继集合的最⼩正整数。

例如上图中:0没有后继元素所以最⼩正整数为0,sg(0)=0; 1后继元素只有0,不属于后继集合的最⼩正整数为1,sg(1)=1; 同理可得sg(2)=2;sg(3)=3; 到4的时候,情况就发⽣了变化。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

1 2
《由感性认识到理性认识——透析一类搏弈游戏的解答过程 》 ,张一飞,国家集训队 2002 论文 《解析一类组合游戏》 ,.王晓珂,国家集训队 2007 论文 第 1 页 共 24 页
IOI2009 中国国家集训队论文
贾志豪 石家庄二中

每一个模型都有详细的证明。大多数人在学习信息学时存在的问题是 “知其然,不知其所以然” ,因为大多数的比赛模式是只要求结果而不 要求过程。但这会使我们对一个事物“只知表皮,不知深髓” ,如果将 一个我们知道的问题稍加变形的话,我们可能就不会了。这个问题在组 合游戏中体现得尤其突出。因此笔者对于文中的每一个定理都给出了证 明,希望读者对文中的思想“知其然,知其所以然” 。
1.4 定义 NIM-模型
为了不使读者对本篇论文失去兴趣,我特意将介绍取石子游戏的内 容换成小字,对这部分内容已经很熟悉的读者可以直接略过。
取石子游戏即著名的 nim 游戏,游戏规则如下: 桌子上有 N 堆石子,游戏者轮流取石子。 每次只能从一堆中取出任意数目的石子,但不能不取。 取走最后一个石子者胜。
IOI2009 中国国家集训队论文
贾志豪 石家庄二中
组合游戏略述 ——浅谈 SG 游戏的若干拓展及变形
石家庄二中 贾志豪
前言
组合游戏是近几年新兴起的博弈游戏, 随着张一飞学长关于组合游戏的论文 的面世, 组合游戏问题开始在国内信息学竞赛这片沃土上生根发芽,与大家一起 成长、成熟、成才。最为马上要离开高中信息学舞台的高三学生,我一直希望能 为学弟学妹们留下一些我自己的心得,于是这篇论文应运而生! ! ! 这篇论文的一些思想是我早在一年前节开始构思的, 感谢计算机学会为我提 供这样一个舞台, 能让我的论文为更多的人所知道;同时感谢在我写论文时无私 帮助过我的所有人,谢谢你们! ! ! 先介绍一下论文的主要内容:第一章作为论文的理论基础,主要从欣赏的角 度引入了 SG 函数、游戏图、NIM 游戏等概念,重点谈我对组合游戏尤其是 SG 函 数的体会、 理解; 第二章主要介绍了几种不同规则的组合游戏以及相应的应对策 略,旨在告诉读者,游戏规则变化之后,我们应该如何去分析新的规则、解决新 的模型;第三章主要介绍了几种竞赛中常见的组合模型,并将“她”们成功的转 化成了 NIM 模型。 鉴于这篇论文的内容较多, 在这里给读者提供一些阅读建议:第一章由于篇 幅原因,并没有给出 SG 函数、NIM 游戏解法的详细证明过程,对于刚刚接触组 合游戏的读者,建议先阅读一些关于 SG 函数的资料(张一飞关于博弈游戏的论 文1、王晓柯关于组合游戏的论文2就很不错) ,然后再从论文的第一章看起,相信 你一定会很有收获;第二、三章是论文的重头戏,如题目所言,分别谈 SG 游戏 的拓展和变形,对于钟情于组合游戏的读者,可以重点看一看第三章,相信一定 不会让你失望! ! ! 这篇论文主要有两个特点: 基本没有例题但处处是例子。为了让读者更好的理解论文中的思想,笔 者在选题目的时候刻意将题目的背景剥掉,只剩下一个“光溜溜 ”的数 学模型,这样读者在阅读论文时,就不必花精力去考虑背景向模型的转 化,可以全身心去理解笔者想要传达的思想。但读者不必去担心没有地 方练习,笔者将这几年的自己做过的组合游戏题收录在了论文的附录 里。
关键字
SG 函数 Multi 游戏 删边游戏 NIM 模型 Every 游戏 证明 Anti 游戏 翻硬币游戏 拓展
第 3 页 共 24 页
IOI2009 中国国家集训队论文
贾志豪 石家庄二中
感谢
谨以此论文献给: 我的初中同班同学,集训队队员,对 ppt 内容提出宝贵意见的李骥扬同学 我的高中同班同学,集训队队员,给论文指出多处缺点的武森同学 我的学长,北京大学学生,认真修改过我论文 ppt 的周先达同学 我的学长,复旦大学学生,认真阅读过论文修订版的杨敏达同学 在我生病时送我去医院,认真辅导我信息学的韩日旺老师 在我上高一时及时指出我的缺点,辛勤辅导我信息学的李晶老师 与我交流论文内容的唐文斌、胡伟栋教练
其中,mex(minimal excludant)是定义在整数集合上的操作。它的 自变量是任意整数集合,函数值是不属于该集合的最小自然数。
mex{} min{ k | k A k N}
事实上,所有的 SG-组合游戏都存在相应的游戏图,我们完全可以 根据游戏图的拓扑关系来逐一算出每一个状态点的 SG 函数(事实上我 们只需要知道该状态点的 SG 函数值是否为 0) 。这样,我们就可以知道 对于某一个状态,是先手必胜局还是先手必败局。这是不是说明我们已 经将 SG-组合游戏完满解决了呢? 显然不是! ! ! 因为我们不光要考虑算法的正确性,还要考虑算法的时空开销,而 上述方法显然没有考虑算法的时空开销,上述方法的瓶颈在于没有充分 利用 SG-组合游戏问题的特殊性质。 我们先引出游戏的和的概念。 [定义] 游戏的和:考虑任意多个同时进行的 SG-组合游戏,这些 SG-组合游 戏的和是这样一个 SG-组合游戏,在它进行的过程中,游戏者可以任意 挑选其中的一个单一游戏进行决策,最终,没有办法进行决策的人输。 ■ 上述方法在计算 K 个单一 SG-组合游戏的和时,所消耗的时间、空 间复杂度是分别计算这 K 个单一 SG-组合游戏所消耗的时间、空间复杂 度的乘积。
这道题每一堆石子的 SG 函数值很显然为该堆石子的数目,根据 SG 函数的特点,最后所有 堆石子的 SG 函数的和
SG _ tot SG _ 1 SG _ 2 ... SG _ n
最后,先手胜当且仅当该值为 0。证明从略。
取石子游戏虽然是组合游戏中一道最基础的题目,但是它却代表了 一类经典的组合模型。 事实上,每一个简单 SG-组合游戏都可以完全等效成一堆数目为 K 的石子,其中 K 为该简单游戏的 SG 函数值。这样的等效是充要的。 [定理] 在我们每次只能进行一步操作的情况下,对于任何的游戏的和,我 们若将其中的任一单一 SG-组合游戏换成数目为它的 SG 值的一堆石子, 该单一 SG-组合游戏的规则变成取石子游戏的规则(可以任意取,甚至 取完) ,则游戏的和的胜负情况不变。
第 5 页 共 24 页
IOI2009 中国国家集训队论文
贾志豪 石家庄二中
以帮助我们淡化游戏的实际背景,强化游戏的数学模型,更加突出游戏 的数学本质!
1.3 简介 SG 函数
SG 函数是对游戏图中每一个节点的评估函数。它的定义如下:
f (v) mex{ f (u) | 图中有一条从 v到u的边}
向以上所有人表示我最诚挚的谢意! ! ! 谢谢所有在我信息学道路上对我有帮助的人! ! !
第 4 页 共 24 页
IOI2009 中国国家集训队论文
贾志豪 石家庄二中
Chapter 1
1.1 本论文讨论的范围
本论文主要讨论一类组合游戏问题的解法,这列问题具有如下特征: 游戏有两个人参与,二者轮流做出决策。且这两个人的决策都对 自己最有利。 当有一人无法做出决策时游戏结束,无法做出决策的人输。无论 二者如何做出决策,游戏可以在有限步内结束。 游戏中的同一个状态不可能多次抵达。且游戏不会有平局出现。 任意一个游戏者在某一确定状态可以作出的决策集合只与当前 的状态有关,而与游戏者无关。
第 7 页 共 24 页
IOI2009 中国国家集训队论文
贾志豪 石家庄二中
这是 SG 函数的基本性质,证明可参阅相关资料。 定理的一个变形是:若只考虑游戏的和,我们可以将其中的任一游 戏换成 SG 值相等的其他游戏,游戏的和的 SG 函数值不变。 定理告诉我们,在考虑游戏的和时,每一个单一游戏的具体细节是 可以被忽略的,我们所关心的只是 SG 函数值。所以我们可以将组成它 的所有子游戏换成相应数目的一堆石子。这样,所有的游戏的和都等价 成 nim 游戏。 为了以后论文的方便,我们将以后的所有例题都抽象成 NIM-模型。 抽象成 NIM-模型后,剩下的问题就是我们所熟悉的 nim 游戏了。
1.2 组合游戏中状态空间向图的转化
我们可以将组合游戏中的每一个状态抽象成图中的一个点,将每一 步决策抽象成图中的一条边。我们将这个图称为该组合游戏的游戏图。 这样,对于组合游戏中的每一次对弈,我们都可以将其抽象成游戏 图中的一条从某一顶点到出度为 0 的点的路径。 组合游戏向图的转化,并不单单只是为了寻找一种对应关系,它可
为了方便大家阅读,我将论文中所有的定理表述做成了“HELLO WORLD”将 所有的定义表述做成了“HELLO WORLD” ,希望这样的改动能引起大家的注意和兴 趣。
9 中国国家集训队论文
贾志豪 石家庄二中
目录
感谢……………………………………………………………………………………4 Chapter 1…………………………………………… ……………………………… 5 1.1 本论文讨论的范围……………………………………………………………… 5 1.2 组合游戏中状态空间向图的转化……………………………………………… 6 1.3 简介 SG 函数………………………………………………………………………6 1.4 定义 NIM-模型……………………………………… ……………………………7 Chapter 2……………………………… …………………………………………… 9 2.1 走完最后一步者输——Anti-SG 游戏和 SJ 定理………………………………9 2.2 可以将一堆石子分成多堆——Multi-SG 游戏 ……………………………… 14 2.3 每一个可以移动的棋子都要移动——Every-SG 游戏 ……………………… 14 Chapter 3……………………………………………………………………………18 3.1 翻硬币游戏 …………………………………………………………………… 18 3.2 无向图删边游戏 ……………………………………………………………… 19 3.2.1 树的删边游戏 ……………………………………………………………… 19 3.2.2 Christmas Game(PKU3710)………………… …… ………………… …… 21 3.2.3 无向图的删边游戏 …………………………………………………………23 参考资料 ……………………………………………………………………………24 附录 …………………………………………………………………………………24
相关文档
最新文档