随笔 - 26  文章 - 6  trackbacks - 0
<2009年4月>
2930311234
567891011
12131415161718
19202122232425
262728293012
3456789

常用链接

留言簿(3)

随笔分类

随笔档案

朋友

  • cqh
  • 大学室友...

搜索

  •  

最新评论

阅读排行榜

评论排行榜

寻找平衡状态(也称必败态, 奇异局势),(满足:任意非平衡态经过一次操作可以变为平衡态)

()巴什博奕(Bash Game):

只有一堆n个物品,两个人轮流从这堆物品中取物,规定每次至少取一个,最多取m.最后取光者得胜.

n = (m+1)r+s , (r为任意自然数,s≤m), n%(m+1) != 0, 则先取者肯定获胜

()威佐夫博奕(Wythoff Game):

有两堆各若干个物品,两个人轮流从某一堆或同时从两堆中取同样多的物品,规定每次至少取一个,多者不限,最后取光者得胜.

(ak,bk)(ak ≤ bk ,k=0,1,2,...,n)表示奇异局势

求法:

ak =[k(1+√5)/2], bk= ak + k (k=0,1,2,...,n 方括号表示取整函数)

       判断:

              Gold=(1+sqrt(5.0))/2.0

1)假设(ab)为第k种奇异局势(k=0,1,2...) 那么k=b-a;

2)判断其a==(int)(k*Gold),相等则为奇异局势

(注:采用适当的方法,可以将非奇异局势变为奇异局势.

假设面对的局势是(a,b)

b = a,则同时从两堆中取走 a 个物体,就变为了奇异局势(0,0)

1.       如果a = ak,

1.1   b > bk, 那么,取走b - bk个物体,即变为奇异局势(ak, bk)

1.2   b < bk 则同时从两堆中拿走 ak – a[b – ak]个物体,变为奇异局势( a[b – ak] , a[b – ak]+ b - ak)

2         如果a = bk ,

2.1   b > ak ,则从第二堆中拿走多余的数量b – ak

2.2   b < ak , b = aj (j < k)  从第一堆中拿走多余的数量a– bj;  (a > bj)

b = bj (j < k)  从第一堆中拿走多余的数量a– aj;  ( a > aj)

例题:pku 1067

()尼姆博奕(Nimm Game):

n堆各若干个物品,两个人轮流从某一堆取任意多的物品,规定每次至少取一个,多者不限,最后取光者得胜.

任何奇异局势(a1, a2, … , an)都有a1(+)a2(+)…(+)an =0.  ( (+) 按位与)

例题:pku 2234

例题:hdu 1730

例题:pku 1740

例题:pku 1704

例题:pku 1082 (大量分析结论很简单。 也可以根据简单的推论模拟实现。)

 

posted on 2009-05-15 09:47 longshen 阅读(3077) 评论(2)  编辑 收藏 引用 所属分类: acm总结

FeedBack:
# re: acm博弈题 -- 个人小结 2013-03-14 17:32 913614263@qq.com
楼主,你的博文中有一处错误, ((+)为 按位与)是错的,(+)应该为按位异或  回复  更多评论
  
# re: acm博弈题 -- 个人小结[未登录] 2014-02-13 21:08 zj
1730用博弈论是怎么做的?  回复  更多评论
  

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理