博弈游戏

可参考:张一飞《由感性认识到理性认识——透析一类搏弈游戏的解答过程》以及 王晓珂《解析一类组合游戏》)

例一、有两个选手A,B,桌上有21个石子,两人轮流拿走1-3个石子,A选手开始拿,拿到最后一个石子的人赢。

分析:逐个观察找规律0,1,2,3,4,5,6,7,8,……

 

组合游戏的模型:

(1)两个选手。

(2)存在一个状态的集合。

(3)规则确定了每个选手在每个状态转向的其他状态。规则可能对不同选手不一样。

(4)选手轮流进行操作。

(5)不能进行操作时,游戏结束,当前不能进行操作者输。

(6)游戏会在有限步之内结束(没有平局)。

有向图模型 G=(X,F) X游戏的状态集合,F(X)为X可以到达的状态集合。无环图(无平局)

 

 

分析此模型的方法

基本概念

P-Positions:Positions are winning for Previous player. (必败状态)

上例中 0,4,8……

N-Positions:Positions are winning for  Next player. (必胜状态)

上例中 1,2,3……

Terminal Position(结束状态)上例中 0

解决步骤

(1)把结束状态标记为必败状态。

(2)能够通过一步操作到必败状态的状态标记为必胜状态。

(3)一步操作后到达的都是必胜状态的状态标记为必败状态。

(4)如果在第三步中找不到新的必败状态,则停止,否则转向操作(2)

例一中:

0   1   2    3   4   5   6   7    8   9   10 ……

P   N   N   N   P   N   N   N   P   N   N

 

练练手(熟悉P,N状态)

1.用S表示一个正整数集合,每次选手只能拿走s (属于S)个石子,求必胜状态。

   S={1,2,3,4,5,6}

   S={1,3,6}

   S={1,2,4,8,16……,2^n}

2 Empty and Divide

3 POJ 2234 1082 2505

*4 Dynamic subtraction/Zeckend Theorem(和二进制,fibonacci 表示有关)

 

 

例二 (NIM)有三堆石子(x1,x2,x3),选手轮流取,选手每次选一堆石子,至少取一个至多全取掉,谁取到最后一个为赢者。

分析观察:(0,0,x) (0,x,x)……

 

定理一、(x1,x2,x3……,x^n)是必败局面仅当x1^x2^x3……^xn=0.

理解(1)0^0^…^0=0 (2)P一定到N   (3) N可以到P

 

 

 

练练手(熟悉模型转化)

1.Nimble(Poj 2960 S-Nim)

2.Turning Turtles

3.StairCase Nim (Poj 1704 Georgia and Bob Poi Game

 

例三   Graph   Games

模型定义:(X,F)X表示状态,F表示转移函数。

(1)选手一从x0开始

(2)选手轮流操作

(3)在状态x可以选择到状态y(y属于F(x))

(4)无法进行操作者输

为保证无平局,我们让图中无环

 

分析解决办法

重点 Sprague-Grundy 函数

g (X)= minn| n∈N ,n≠ for y∈F(x)

g (X)=0当且仅当X为必败状态,这用其定义很容易验证:

1)           当X为结束状态时,由于g (X)=0它是必败状态。

2)           当X不是结束状态时,如果它能到达必败状态,那么g (X)>0,X是必胜状态。

3)           如果X不是结束状态且它到达的所有状态未必败状态,那么g (X)=0它是必败状态。

这样我们通过g (X)值就可判断状态X是否必败。

例子:Excise1

Sprague-Grundy Theorem:(局面分解)

对于G=G1+G2+ … … Gn

G(X1,X2,… …Xn) =G1(X1) XOR G2 (X2) … …Gn(Xn)

练练手

2425 A Chess Game

 


其他题目:二维硬币   POI GAME   1740A NEW GAME   POJ 2975 NIM

还有很多模型,需要好好研究。

 

 

(转载:http://hi.baidu.com/5l2_/blog/item/19f2cbd92d28c22910df9b41.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值