博弈论中的Nim博弈

\(Updating ...\)

瞎扯

 \(orzorz\) \(cdx\) 聚聚给我们讲了博弈论。我要没学上了,祝各位新年快乐。现在让我讲课我都不知道讲什么,我会的东西大家都会,太菜了太菜了。

 

 马上就要回去上文化课了,今明还是收下尾再稍微开一波多项式吧,不然万一文化课上自闭了被锤自闭了站教室外面没课听了还能有事情做……所以把这两天学到的东西稍微整理一下,以后再慢慢完善好了。

 

 发现博弈论的题目还是 \(Nim\) 博弈和其他的比较多。这次就先简单整理一些 \(Nim\) 博弈的类型和东西吧,主要是以某博客里搜来的一串题目为引导。因为是整理,所以就写一些自己的理解,不会说的很详细了……

 

Bash 博弈

 一类经典而基础的博弈问题。

 

 引入了 \(N\) 状态和 \(P\) 状态的概念,在博弈论问题中,显然最终状态是一个让当前状态先手无路可走的 \(P\) 状态。这样根据定义,能转移到此状态的状态就是 \(N\) 状态,常用这样的逆推方法,推到起手为止。

 

 而经过观察与推算,这样的问题常常是存在可总结的规律的,经过这样的总结往往可以使时空复杂度大幅度降低以致到常数级别。

 

 

 

Bash 博弈 II

 一类经典而基础的博弈问题的加强版。

 

SG 函数

 \(SG\) 函数,是博弈论中重要的概念和工具。

 

Nim 博弈

 又是一类经典而基础的博弈问题的最初版本。

 

DAG 与博弈

 这一类问题中,\(SG\) 函数的用法显而易见。

 

对称博弈

 一类博弈问题的套路。

 

阶梯博弈

 \(Nim\) 博弈的直接变种一,有着类似的特性且广泛出现。

 

反 Nim 博弈

 \(Nim\) 博弈的直接变种二,已经是有些分析难度的模型了。

 

Moore‘s Nimk

 \(Nim\) 博弈的直接变种三,变得更麻烦起来了。

 

树上博弈

 又是 \(Nim\) 的变种,不过已经看不太出来了呢。

 

图上博弈

 和树上博弈类似的东西,只是多了一点技巧而已。

 

 

 就先这么多吧……有没有 \(dalao\) 补充啊 \(orz\)。

 

 —— 我知道有些人是爱我的,但我好像缺乏爱人的能力。  《人間失格》

原文地址:https://www.cnblogs.com/nanjoqin/p/10211576.html

时间: 2024-10-01 10:07:41

博弈论中的Nim博弈的相关文章

UVA 11859 Division Game (Nim博弈)

题目:http://acm.hust.edu.cn/vjudge/problem/viewProblem.action?id=32746 题意:有一个n*m(1<=n,m<=50)矩阵,每个元素均为2~10000之间的正整数,两个游戏者轮流操作.每次可以选一行中的1个或者大于1的整数,把他们中的每个数都变成它的某个真因子,比如12可以边长1,2,3,4或者6,不能操作的输. 分析:考虑每个数包含的素因子个数(比如12=2*2*3包含3个素因子),则让一个数"变成它的素因子"

hdu 5011 (nim博弈模版)

//nim博弈 //有n堆石头,两人轮流每次从一堆中拿至少1,之多全部的石头,没有石头可拿为lose //判断先手是win还是lose # include <stdio.h> # include <algorithm> # include <string.h> using namespace std; int main() { int n,i; __int64 a,sum; while(~scanf("%d",&n)) { sum=0; fo

HDU 1907 Nim博弈变形

1.HDU 1907 2.题意:n堆糖,两人轮流,每次从任意一堆中至少取一个,最后取光者输. 3.总结:有点变形的Nim,还是不太明白,盗用一下学长的分析吧 传送门 分析:经典的Nim博弈的一点变形.设糖果数为1的叫孤独堆,糖果数大于1的叫充裕堆,设状态S0:a1^a2^..an!=0&&充裕堆=0,则先手必败(奇数个为1的堆,先手必败).S1:充裕堆=1,则先手必胜(若剩下的n-1个孤独堆个数为奇数个,那么将那个充裕堆全部拿掉,否则将那个充裕堆拿得只剩一个,这样的话先手必胜).T0:a1

ZOJ 3529 A Game Between Alice and Bob (分解质因数+Nim博弈)

A Game Between Alice and Bob Time Limit: 5 Seconds      Memory Limit: 262144 KB Alice and Bob play the following game. A series of numbers is written on the blackboard. Alice and Bob take turns choosing one of the numbers, and replace it with one of

[Nim博弈]hdu 1850 Being a Good Boy in Spring Festival

题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=1850 Being a Good Boy in Spring Festival Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 4053    Accepted Submission(s): 2394 Problem Description

POJ 2234 Matches Game(Nim博弈裸题)

Description Here is a simple game. In this game, there are several piles of matches and two players. The two player play in turn. In each turn, one can choose a pile and take away arbitrary number of matches from the pile (Of course the number of mat

hdu1850(nim博弈)

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1850 题意:中文题诶- 思路:nim博弈 可以将本题抽象成一般nim博弈,那么有: 1. 对于所有元素异或值为0的情况为P局面 2. 若a1^a2...^ai...^an=m!=0,那么一定存在一个ai'使得a1^a2...^ai'...^an=0:不难算出ai'=num^ai: 即只要我们能将ai变成num^ai,那么对手将面对P局面:又从游戏规则可知ai'<ai(要从ai中拿掉一定数目的牌变成a

hdu 1907(Nim博弈)

John Time Limit: 5000/1000 MS (Java/Others)    Memory Limit: 65535/32768 K (Java/Others)Total Submission(s): 4407    Accepted Submission(s): 2520 Problem Description Little John is playing very funny game with his younger brother. There is one big bo

hdu5011(Nim博弈)

题意: 有好几堆石子,现在两人轮流取石子,一个人可以选择其中一堆,取至少一个石子,然后可以选择将这堆分成两堆,取走最后一个石子是胜利者: 问先手胜还是后手胜: 思路: Nim博弈模板:这题中分堆这个操作实际上并没有作用: #include<cstdio> #include<cstring> #define ll long long int n; int main() { while(scanf("%d",&n) != EOF) { ll res = 0;