算法合集之《组合游戏略述——浅谈SG游戏的若干拓展及变形》
团体心理辅导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游戏的若干拓展及变形
策略
将偶环删去,将奇环替换成一条边!!! 将偶环删去,将奇环替换成一条边!!!
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位置,算法结束; 否则,转到第二步。
简单的组合博弈游戏
好运!该死的英语四级!
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函数值为0的状态为必败状态,然后逐步求解其他状态的SG函数值。
具体的方法是,先计算所有可以转移到其他状态的状态的SG函数值,然后根据转移关系求出当前状态的SG函数值。
最后,根据SG函数值的计算结果判断游戏状态是否为必胜状态。
综上所述,SG游戏是一种有趣的组合游戏,通过拓展和变形可以增加游戏的难度和趣味性。
使用递归算法可以求解SG游戏的必胜状态。
博弈论基础之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的时候,情况就发⽣了变化。
SG函数
SG函数给定一个有向无环图和一个起始顶点上的一枚棋子,两名选手交替的将这枚棋子沿有向边进行移动,无法移动者判负。
事实上,这个游戏可以认为是所有Impartial Combinatorial Games的抽象模型。
也就是说,任何一个ICG都可以通过把每个局面看成一个顶点,对每个局面和它的子局面连一条有向边来抽象成这个“有向图游戏”。
下面我们就在有向无环图的顶点上定义Sprague-Garundy函数。
首先定义mex(minimal excludant)运算,这是施加于一个集合的运算,表示最小的不属于这个集合的非负整数。
例如mex{0,1,2,4}=3、mex{2,3,5}=0、mex{}=0。
对于一个给定的有向无环图,定义关于图的每个顶点的Sprague-Gar undy函数g如下:g(x)=mex{ g(y) | y是x的后继}。
来看一下SG函数的性质。
首先,所有的terminal position(终端态)所对应的顶点,也就是没有出边的顶点,其SG值为0,因为它的后继集合是空集。
然后对于一个g(x)=0的顶点x,它的所有后继y都满足g(y)!=0。
对于一个g(x)!=0的顶点,必定存在一个后继y满足g(y)=0。
以上这三句话表明,顶点x所代表的postion是P-position当且仅当g (x)=0(跟P-positioin/N-position的定义的那三句话是完全对应的)。
我们通过计算有向无环图的每个顶点的SG值,就可以对每种局面找到必胜策略了。
但SG函数的用途远没有这样简单。
如果将有向图游戏变复杂一点,比如说,有向图上并不是只有一枚棋子,而是有n枚棋子,每次可以任选一颗进行移动,这时,怎样找到必胜策略呢?让我们再来考虑一下顶点的SG值的意义。
当g(x)=k时,表明对于任意一个0<=i<k,都存在x的一个后继y满足g(y)=i。
也就是说,当某枚棋子的SG值是k时,我们可以把它变成0、变成1、……、变成k-1,但绝对不能保持k不变。
算法-组合游戏
什么是组合游戏:
(1)有两个玩家; (2)游戏的操作状态是一个有限的集合(比如:限定大小的棋 盘); (3)游戏双方轮流操作; (4)双方的每次操作必须符合游戏规定; (5)当一方不能将游戏继续进行的时候,游戏结束,同时,对 方为获胜方; (6)无论如何操作,游戏总能在有限次操作后结束;
一个简单的游戏:
(三):尼姆博弈
• [定理2]:T态,取任何一堆的若干根,都将成为S态。 • 证明:用反证法。 若 c = A(1) xor A(2) xor … xor A(i) xor … xor A(n) = 0; c’ = A(1) xor A(2) xor … xor A(i’) xor c xor … xor A(n) = 0; 则有 c xor c’ = A(1) xor A(2) xor … xor A(i) xor … xor A(n) xor A(1) xor A(2) xor … xor A(i’) xor c xor … xor A(n) = A(i) xor A(i’) =0 进而推出A(i) = A(i’),这与已知矛盾。所以命题得证。
(三):尼姆博弈
• 事实上,孤单堆的根数异或只会影响二进制的最后一位, 但充裕堆会影响高位(非最后一位)。一个充裕堆,高位 必有一位不为0,则所有根数异或不为0,故T1态实际上 不存在。
(三):尼姆博弈
• [定理5]:S0态,即仅有奇数个孤单堆,必败。T0态必胜。 • 证明: • S0态,其实就是每次只能取一根。每次第奇数根都由己取, 第偶数根都由对 方取,所以最后一根必己取。败。同理, T0态必胜 • [定理6]:S1态,只要方法正确,必胜。 • 证明: • 若此时孤单堆含奇数个火柴,把充裕堆取完;否则,取成 一根。这样,就变成奇数个孤单堆,由对方取。由定理5, 对方必输。己必胜。 #
简单的组合博弈游戏
1 2
保护未成年人
游戏应设置合适的年龄限制,避免对未成年人造 成不良影响。
公平竞争
游戏应遵循公平、公正的原则,防止作弊和欺诈 行为。
3
弘扬正能量
游戏内容应传递积极向上的价值观,避免传播不 良信息。
感谢观看
THANKS
错误三
忽视长远的战略规划,只关注短期利益。纠 正方法:制定长期战略目标,并适时调整自 己的战术和策略。
05
游戏中的心理学应用
玩家心理预期
预期形成
玩家在游戏过程中会根据经验和当前局面形成对结果的预期,这 种预期会影响玩家的决策。
预期管理
通过调整游戏规则、难度和奖励机制,可以影响玩家的预期,进而 影响游戏结果。
02
游戏规的元素,达成游戏设定的 目标,如获得最高分数或击败对手。
游戏元素
游戏通常包含多种元素,如数字、符号、道具等, 每种元素都有不同的功能和效果。
游戏流程
玩家需要在限定的时间内或步数内,通过选择和 组合不同的元素,达成游戏目标。
基础策略介绍
合理利用资源
特点
组合博弈游戏通常具有明确的游戏规 则、策略性强、需要玩家进行思考和 决策,同时结果往往具有不确定性。
游戏历史与发展
历史
组合博弈游戏的历史可以追溯到古代,如中国的围棋、象棋等。随着时间的推 移,人们不断创造出新的组合博弈游戏,丰富了游戏的种类和玩法。
发展
组合博弈游戏的发展与数学、心理学等学科密切相关。现代组合博弈游戏在理 论和实践方面都取得了很大的进展,成为数学、计算机科学等领域的重要研究 对象。
在游戏中,资源通常是有限的。 玩家需要根据游戏目标和当前情 况,合理分配资源和选择策略。
优先处理紧急任务
ACM组合博弈
Hdu 1846 Brave Game(easy) HDU 1847 1849 1850 Hdu 1527 取石子游戏(经典)
2015/8/12
23
在这里我们仅讲了最基本的博弈问题,博弈论 还有很多东西,尤其Sprage-Grundy 函数. 更多博弈论的知识可以通过以下地址获得: /~tom/Game_T heory/Contents.html
2015/8/12
9
Nim游戏
2015/8/12
10
(1)有两个玩家; (2)有三堆火柴(比如:可以分别是13,12,8根); (3)游戏双方轮流操作; (4)玩家的每次操作是选择其中某一堆火柴,然 后从中取走至少1根,也可以拿完该堆火柴; (5)最后一次取火柴的一方为获胜方;
2015/8/12
2015/8/12
18
int i,j; int sg[31],vis[100]; sg[1]=0;//无后继状态 for(i=2;i<31;i++) { memset(vis,0,sizeof(vis)); for(j=(i+1)/2;j<i;j++) vis[sg[j]]=1; //找最小的非负整数 for(j=0;;j++) if(!vis[j]) { sg[i]=j; break; } printf("%d ",sg[i]); } 0 1 0 2 1 3 0 4 2 5 1 6 3 7 0 8 4 9 2 10 5 11 1 12 6 13 3 14 7 15
(3)无论如何操作, 从必败点(P点)都 只能进入必胜点(N点).
2015/8/12
拓展训练智力游戏介绍
拓展训练智力游戏介绍在当今快节奏的生活中,人们越来越注重通过各种方式来提升自己的能力和素质,拓展训练作为一种新兴的培训方式,受到了广泛的关注和欢迎。
其中,智力游戏是拓展训练中不可或缺的一部分,它不仅能够锻炼参与者的思维能力,还能增强团队协作和沟通能力。
接下来,我将为大家介绍几款常见且有趣的拓展训练智力游戏。
一、数字密码这是一款考验团队成员逻辑推理和沟通能力的游戏。
游戏开始前,教练会准备一组数字密码,并将其写在一张纸上,然后将纸倒扣在桌子上。
团队成员被分成若干小组,每个小组需要通过与其他小组交流和分析线索,来猜出这组数字密码。
游戏过程中,每个小组有一定的提问机会,但提问的内容必须是关于数字密码的特征和规律。
例如,“这组数字是递增的吗?”“数字中是否包含偶数?”等等。
其他小组可以根据自己所掌握的信息回答“是”“否”或者“不确定”。
通过不断地提问和交流,团队成员需要逐渐缩小数字密码的范围,最终猜出正确答案。
这个游戏的关键在于团队成员之间的有效沟通和协作。
在提问和回答的过程中,要清晰准确地表达自己的想法,同时也要认真倾听他人的意见和建议。
只有通过团队的共同努力,才能在最短的时间内猜出数字密码。
二、拼图比赛拼图比赛是一款能够锻炼团队成员空间想象力和耐心的游戏。
教练会准备若干幅难度适中的拼图,并将其打乱分成若干块。
团队成员被分成若干小组,每个小组需要在规定的时间内将拼图完成。
在游戏开始前,每个小组可以先讨论拼图的策略和分工。
比如,有的成员负责寻找边缘的拼图块,有的成员负责整理颜色相近的拼图块,有的成员负责最后的拼接工作。
在拼图的过程中,小组成员需要相互协作,及时交流自己的发现和想法。
如果遇到困难,可以向其他小组请教或者请求教练的帮助。
这个游戏不仅能够培养团队成员的合作精神,还能让大家在紧张的比赛氛围中提高自己的心理素质和应对压力的能力。
三、词语联想词语联想是一款能够激发团队成员创造力和思维敏捷性的游戏。
教练会给出一个词语,然后让团队成员在规定的时间内尽可能多地想出与这个词语相关的其他词语。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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