【算法总结】博弈论学习

学习(复习)博弈已经两天,然而看和思考的题远远不够,没有抓紧时间
学习一个模型最重要的是能够掌握其基本的定理和运用,需要尽可能多的看各类的题。要抓紧时间找题来想,深入的思考,不能懒惰!

基础的博弈理论

zwfymqz的总结
yyb的总结
**两位大佬总结的非常详细了,我就不再赘述了
博弈最重要的是从博弈的本质出发,能够运用和转化模型:
根据N,P状态的定义来寻找性质
多个子游戏的SG抑或起来,那么我们需要化简出最简的子游戏,通过DP,搜索或者打表来求出SG函数
通过两轮后性质的不变来简化模型----两轮后仍具有的相同性质说明这两轮不会影响胜负(比如取模)
二分图博弈的性质要注意:
点不重的二分图博弈:如果起点在所有最大匹配上则先手必胜。
每次删边的二分图博弈:如果能够找到右边的集合,与左边的相邻集合只有起点度数为奇数,则先手必胜

anti-SG

注意不是所有最后一个操作的人输的题目都是anti-SG。要满足:
对于任意一个Anti-SG游戏,如果我们规定当局面中所有的单一游戏的SG值为0时,游戏结束。
(该条件可以弱化为:当局面中所有的单一游戏的SG值为0时,存在一个单一游戏它的SG函数能通过一次操作变为1)

先手必胜当且仅当:
(1)游戏的SG函数不为0且游戏中某个单一游戏的SG函数大于1;
(2)游戏的SG函数为0且游戏中没有单一游戏的SG函数大于1。

例如在取石子(最经典的nim)中,单一游戏SG = 0当且仅当石子数为空,游戏显然结束。
证明看2009 贾志豪的论文《组合游戏略述 ——浅谈SG游戏的若干拓展及变形》

无向图删边游戏:

缩边双:边双里有偶数条边,则SG = 0 , 奇数条边,则SG = 1
然后在树上做删边游戏

例题和好题

lzw’s blog
这上面有很多opentrains上的题,考虑到以后可能会训练,就没有看

anti-SG 例题:树上删边,最后一个删的人输

首先这是满足anti-SG的条件的。因为删边本质是取石子的组合
还要注意在删边游戏中每个子游戏是根下面的儿子,即一个根代表度数个子游戏的组合,而子游戏与根无关

这题需要输出方案,开始想得特别麻烦,以为要自底向上维护删除的方案。然而,从SG的定义考虑,一个点的SG = i意味着它可以转移到 0 − ( S G − 1 ) 0 - (SG - 1) 0(SG1)的所有局面。所以直接dfs即可,一定有解。
按照SJ定理讨论清楚,所有情况
当输出了一组合法方案的时候直接exit(0),这样写最简单。因为输出了多组方案调了一会。

#include<bits/stdc++.h>
using namespace std;

const int maxn = 1e5 + 10;
struct node{
   
	int next,to;
}e[maxn * 2];
int head[maxn],cnt,f[maxn],n,m,deg[maxn],sz[maxn],fa[maxn];
vector <int> vec,vec2;

void adde(int x,int y){
   
	e[++cnt
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值