首页 > 其他分享 >一类可以转化成有向图上博弈的问题

一类可以转化成有向图上博弈的问题

时间:2023-07-07 09:02:13浏览次数:45  
标签:状态 有向图 博弈 转化成 先手 出边 end 平局 dp

概述

定义基本规则:

  • 两个玩家轮流移动同一颗棋子。

  • 每次移动沿一条出边将棋子移到下一个点。

  • 当前玩家走不了(没有出边)时输。

  • 图可能有环,游戏无法结束时为平局。

出现平局的根本原因是决策会绕起来成环。我们先来解决如何判断一个点的胜负状态。

首先,如果图是 \(\text{DAG}\),则有经典做法:

  • 没有出边的点先手必败。

  • 出边中能走到先手必败点的点先手必胜。

  • 所有出边走到的都是先手必胜点的点先手必败。

然后有了环,先给出结论:只需加上这一条即可:

  • 建反图,由已知状态倒推,不满足上述任意一种情况的点即为平局。

考虑证明。将不满足前三种情况的点称为“状态未知”。

若当前在一个状态未知的点,它一定不满足前三种情况。于是这个点必然满足:出边到达的点中有一些先手必胜,另外的状态未知且存在至少一个这样的点。

这样,当前玩家为了不败,一定不会走那些先手必胜的点,而走向状态未知的点。如此下来,棋子所在的位置永远是状态未知的点,因此游戏不会结束,即为平局。

具体做法是建反图然后 bfs,然后根据当前点的状态与上述规则进行转移。

例题

一个单词可看作是一条边,代表前三个字母的状态走向后三个字母的状态。

比如 abcdef 就是 abc 走向 def

直接运用上述做法,转化成起点是起始单词的后三个字母,Aoki 先手的游戏。

code

略微修改一下“胜负”的定义,改为“游戏是否会结束”。

定义 \(end[u][0/1]\) 表示 Takahashi/Aoki 在 \(u\) 是游戏是否会结束。

对于 \(u\) 来说,显然有:

  • 若 \(\forall u \to v,end[v][0]= Ture\),则 \(end[u][1]=Ture\)。

  • 若 \(\exist u \to v,end[v][1]= Ture\),则 \(end[u][0]=Ture\)。

亦可用上述方法得到 \(end\) 数组,证明不难。

然后是求以每个点开始游戏时结束后的值 \(dp[u][0/1]\),表示 Takahashi/Aoki 在 \(u\) 是游戏结束后的值。

则有:

\[dp[u][0]=\min_{u\to v}dp[v][1]+w[u\to v] \]

\[dp[u][1]=\max_{u\to v}dp[v][0]+w[u\to v] \]

而在用上面方法的时候,\(dp[u][0]\) 的转移会出现一些问题,用普通队列无法保证用到 \(dp[u][0]\) 时它的最优性。

而转移顺序对 \(dp[u][1]\) 没有影响,因为根据上面的做法,只有当所有 \(u\) 的出边遍历到以后 \(u\) 才会入队。因此考虑使用优先队列(小根堆),保证第一次转移到 \(dp[u][0]\) 时就是最小的。

code

胜负状态与平局都很明确,直接做就行了。

状态有 \(O(n^6)\),表示三个棋子分别在什么位置。

具体地,\(dp[x1][y1][x2][y2][x3][y3][0/1]\) 表示红棋在 \((x1,y1),(x2,y2)\),黑棋在 \((x3,y3)\),当前红/黑走时的答案(包含是否必胜与步数)。

与上文一样,而此题边权都是 1,相当于保证了直接用 queue 的正确性(先转移步数少的)。可以与上一题类比成边权为 1 和边权大于 1 的最短路。

轻微卡常,可以把红棋有序变无序,状态数压一半。

code

标签:状态,有向图,博弈,转化成,先手,出边,end,平局,dp
From: https://www.cnblogs.com/jimmywang/p/17338055.html

相关文章

  • matlab:双或三方演化博弈,lotka-Volterra 1.双方演化博弈:代分析稳定点分析,代绘制相位图
    matlab:双或三方演化博弈,lotka-Volterra1.双方演化博弈:代分析稳定点分析,代绘制相位图,matlab仿真图代码2.三方演化博弈:代分析稳定点分析,代绘制相位图,matlab仿真图代码3.lotka-Volterra模型原创文章,转载请说明出处,资料来源:http://imgcs.cn/5c/644023709252.html原创文章,转载请说明......
  • MATLAB代码:基于主从博弈理论的共享储能与综合能源微dian网优化运行研究
    MATLAB代码:基于主从博弈理论的共享储能与综合能源微dian网优化运行研究关键词:主从博弈共享储能综合能源微dian网优化调度 参考文档:《基于主从博弈理论的共享储能与综合能源微dian网优化运行研究》完全复现原创文章,转载请说明出处,资料来源:http://imgcs.cn/5c/672932543894.htm......
  • 有向图
    #include<stdio.h>#defineN20#defineTRUE1#defineINF32766#defineINFIN32767typedefstruct{ intvexnum,arcnum; charvexs[N]; intarcs[N][N];}graph;voidcreateGraph_w(graph*g,intflag);voiddijkstra(graphg,intv);voidprintPa......
  • abc059d <博弈, 打表找规律>
    D-Alice&Brown如何打表要善于通过打表展示视觉信息,从而找到规律;#include<iostream>#include<algorithm>usingnamespacestd;typedeflonglongLL;intf[100][100];//0未定,1win,2lose//注意这里找先手必胜与必负的方式//当我的可以转移到任何一个必输态......
  • 数据结构代码整理_基于邻接表存储结构的有向图的实现(C++)
    目录RequirementsDebuggingEnvironmentChatCode1.graph.h2.test.cppRequirements       基于邻接表存储结构实现有向图的典型操作(构造、析构、增加顶点、删除顶点、增加弧、删除弧,查找一个顶点、判空、判满、图中顶点个数、邻接表中指定顶点的第一个邻接顶点、深度优先......
  • (博弈论)Even Number Addicts
    Alice和Bob正在一个序列 ai​ 上玩游戏,Alice先手,轮流玩。每一轮当前玩家可以取走序列中任意一个数,直到取完。如果最后Ailce取走的数的和为偶数,则Ailce赢,否则Bob赢。保证每个人用最优策略玩。对于每组数据,输出赢家。输入输出样例输入#1复制4313541357......
  • 加密监管博弈时代!SEC起诉巨头!美国立法者们会如何抉择?
        在SEC对币安、Coinbase相继提起诉讼之际,众议院农业委员会于召开了关于数字资产监管的双小组听证会,多位立法者对SEC目前采用的执法监管模式表示担忧,并认为该机构已经“越界”。SEC拒绝行业沟通和对话   Coinbase首席法务官PaulGrewal批评SEC在数字资产行业缺乏明确规则......
  • 跳出零和博弈,AIGC是元宇宙的“催命符”还是“续命丹”?
    文|智能相对论作者|青月从科幻小说《雪崩》里走出来的元宇宙,如今正在上演“地价雪崩”。CoinGecko的一项调查显示,OtherdeedforOtherside、TheSandbox、Decentraland、SomniumSpace和VoxelsMetaverse这五款知名元宇宙土地价格近期均出现了不同程度的下滑。其中,歌手林俊杰......
  • 博弈练习
    博弈练习理论后面再补吧[省选联考2023]过河卒我们将其局面抽象为一张图,然后不难发现没有环的情况我们直接\(dfs\)就可以了如果有环的话,其对应的应该就是\(Tie\)的情况,具体的就是如果我们在访问\(x\)的祖先时\(x\)就可以达成死循环的局面,但这个不好维护反过来考虑,我们......
  • 三个博弈-巴什博奕、威佐夫博弈、尼姆博弈。acm博弈算法笔记HDU 2149,1850,1527
    博弈论(一)、acm博弈基础算法BashGame,NimGame和WythoffGame(即巴什博奕、尼姆博弈、威佐夫博弈)Bash  Game: 同余理论Nim   Game: 异或理论WythoffGame: 黄金分割(二)、三个博弈。1、巴什博奕。只有一堆n个物品,两个人轮流从这堆物品中取物, 规定每次至少取一个,......