从棋盘到牌桌:七大常见策略游戏的变化量金字塔与 AI 决策思维进化史
从棋盘到牌桌:七大常见策略游戏的变化量金字塔与 AI 决策思维进化史
原博客地址:https://blog.huanment.top/posts/ai-strategy
如果把可观测宇宙中的所有原子——大约 10⁸⁰ 个,想象成一排排编号机器,那么这台机器连给围棋的所有合法局面编号都远远不够。围棋的状态空间约有 10¹⁷² 种,相当于把“宇宙原子计数器”再复制出接近一亿亿亿亿亿亿座摩天大楼。
但围棋甚至还不是今天故事里最值得讨论的地方。
因为真正有意思的,从来不只是:
“一个游戏到底有多大?”
而是:
当这个数字越来越大,人类和 AI 到底该怎么思考?
从斗地主里的贪心决策,到象棋里的深度优先搜索;从 Alpha-Beta 剪枝,到动态规划式的状态复用;再到扑克里的概率推断、围棋里的 MCTS(蒙特卡洛树搜索)和神经网络——
这七款游戏,其实像一条隐藏的算法进化史。
先搞清楚:什么叫“状态空间”,什么叫“博弈树”?
很多人第一次看到这些数字,会把“状态空间”和“博弈树”混为一谈。
其实可以把它们想象成两种完全不同的东西。
状态空间,就是:
“这个游戏理论上到底有多少种不同的局面?”
比如棋盘上的棋子换一种摆法,就是一个新的状态。
博弈树则是:
“从开局开始,把所有可能的行动一层一层展开,最终会有多少条可能的游戏过程?”
它们一个更像“地图上总共有多少个城市”,另一个更像“从起点出发一共有多少条可能的路线”。
所以你会看到一些非常反直觉的数据:
有的游戏状态空间巨大,但博弈树估算反而没有那么大;有的游戏状态不算离谱,真正恐怖的却是它的决策路径数量。
这也是为什么:
“状态空间排行榜”不等于“AI 难度排行榜”。
AI 真正头疼的,是三个东西同时膨胀:
状态越来越多、信息越来越少、可选择的行动越来越多。
01 斗地主:先学会“贪心”,再学会“猜人”
斗地主是这七款游戏里最适合作为起点的一个。
规则并不难:
三个人拿牌,其中一人叫地主,另外两人合作;随后按照牌型依次出牌,谁先把手里的牌打光,谁就赢。
简单吧?
但它的状态空间常见估算已经达到 10³⁰。
这大概是什么概念?
就是你可以把地球上的每一粒沙子都想象成一个游戏局面,但沙子队伍排到太阳系外,可能都还没数完。
它的博弈树更达到约 10⁸⁵。
这已经超过可观测宇宙原子数 10⁸⁰,像宇宙里的每个原子旁边再复制出十万个原子,依旧不够给这些可能的出牌路径一一编号。
但斗地主最有意思的地方,不是“搜索树巨大”。
而是它非常适合展示一种最朴素的算法思想:
贪心
所谓贪心,就是每一步先选一个眼前看起来最划算的方案。
例如:
“我现在出这手牌,可以一下减少很多手数。”
或者:
“对方快走完了,那我优先阻止他。”
又或者:
“我的单牌很多,先想办法处理掉。”
这些判断,本质上都是局部最优。
但问题马上来了:
局部最优真的等于全局最优吗?
通常不等于。
你这一手牌少打了两张,可能下一轮就被迫拆掉一个顺子。
你现在为了抢一轮牌打出了炸弹,可能最后反而失去最大的控制权。
于是斗地主很适合让人理解一个重要概念:
贪心算法不是“每次看起来最好”,而是“我相信当前这个局部选择,足以导向最终最优解”。
一旦这个条件不成立,贪心就会翻车。
而斗地主恰恰大量存在这种“先赚一点,后面亏一大坨”的情况。
所以更高级一点的 AI,会开始搜索。
从贪心到 DFS:不只看眼前一步
DFS,也就是深度优先搜索,可以理解成:
“我先沿着一种打法一路走到底,再回来换另一种。”
在斗地主里,就是:
“如果我现在出 A,对方可能出 B,那我继续看我下一手能干什么;如果这条路线不行,就退回来重新试。”
这其实已经和后面的棋类 AI 接轨了。
只不过斗地主比象棋多了一层麻烦:
你不知道对方手里到底有什么。
所以你搜索的并不是一棵确定的树。
而是一棵“带迷雾的树”。
这就是斗地主开始进入第二阶段的地方:
搜索只能解决“我能算什么”,概率才能解决“我应该相信什么”。
02 国际象棋:DFS + Minimax + Alpha-Beta,把暴力搜索变成艺术
国际象棋的规则并不复杂。
8×8 的棋盘——就是一个只有 64 个格子的小战场——双方轮流移动棋子,将对方的王逼入无法逃脱的状态。
棋盘不大。
规则也不像很多卡牌游戏那样复杂。
但它的状态空间约为 10⁴⁶。
这意味着如果每一个局面都对应一粒沙子,你需要一片远远超过太阳系规模的“数字沙漠”才能装下这些局面。
而它的博弈树约有 10¹²³。
相比宇宙中的 10⁸⁰ 个原子,还高出了几十个数量级。
问题来了:
这么大的树,怎么搜?
答案是:
深搜 + Minimax + Alpha-Beta
首先是 DFS。
把整个决策过程想象成一棵树:
你走一步,对手走一步,你再走一步……
DFS 就是一条路先往深处钻。
但只会 DFS 还不够。
因为你不能只考虑“我希望对方怎么走”,而必须假设:
对手一定会选对我最不利的那一步。
这就是 Minimax,也就是“极小极大”。
你负责最大化自己的利益。
对手负责最小化你的利益。
于是 AI 的思维变成:
我走 A,对手最狠能怎么回?
我走 B,对手最狠能怎么回?
在这些最坏情况中,哪个对我最好?
这已经比单纯 DFS 高了一个层级。
但仍然有个问题:
树太大了。
如果每一步有几十种选择,搜索十几层以后,数字就开始起飞。
于是 Alpha-Beta 剪枝登场。
它的思想非常漂亮:
既然这条分支已经不可能超过当前最优答案,那后面就别看了。
这就是典型的分支限界思想。
例如你已经找到一种走法,保证结果至少有 5 分。
现在搜索另一种方案。
结果发现对手只要这一招,你最多只能得到 3 分。
那么后面那些变化还有必要继续算吗?
没有。
因为你已经知道:
这条分支无论怎么优化,都不可能打败前面的 5 分。
砍。
这就是 Alpha-Beta。
它不是让计算机“算得更快”这么简单。
而是让计算机开始懂得:
哪些东西根本不值得算。
03 中国象棋:搜索树更复杂,状态复用开始变得重要
中国象棋把这个思路继续推了一层。
9×10 的棋盘——也就是 90 个交叉位置组成的战场——比国际象棋的 64 个格子更大。
常见估算中,中国象棋状态空间约 10⁴⁸。
如果把一个局面看作一栋房子,这意味着光是不同“户型”,就已经多到远远超过宇宙里的 10⁸⁰ 个原子能够充当门牌号的程度。
而它的博弈树约 10¹⁵⁰。
这已经像一座摩天大楼长出了摩天大楼,楼里的每间房又连接出新的城区。
中国象棋最有意思的地方,是它会自然引出另一个算法概念:
动态规划的核心思想:重复的东西,不要重复算
动态规划常被误解成:
“碰到表格就叫 DP。”
其实不是。
动态规划最核心的一句话是:
一个已经算过的状态,就不要再算第二遍。
棋类搜索里存在大量这种现象。
你从不同的走法出发,可能在很多步之后重新到达同一个棋局面。
如果 AI 傻乎乎重新搜索,那么就等于:
同一道数学题今天做了一遍,明天换个颜色的纸再做一遍。
显然很蠢。
于是棋类程序会使用**置换表(Transposition Table)**之类的缓存机制:
“这个局面我以前见过。”
“它往后的结果我已经算过。”
“直接拿答案。”
这本质上就是:
搜索 + 记忆化。
从算法结构上看,它和动态规划的精神高度一致。
所以如果把整个棋类 AI 拆开看,你会发现一个非常有趣的组合:
DFS 负责探索。
Minimax 负责对抗。
Alpha-Beta 负责剪枝。
缓存 / 置换表负责避免重复计算。
这已经不只是“会下棋”。
而是一整套算法思想的联合编队。
04 五子棋:规则少,不代表搜索简单
五子棋可能是这七款游戏里规则最简单的。
15×15 的棋盘——也就是几百个交叉点铺成的一张大网——双方轮流落子,谁先形成五连,就赢。
没车。
没马。
没炮。
甚至连棋子移动都没有。
但它的状态空间却可以达到约 10¹⁰⁵。
这个数字已经超过宇宙原子数 10⁸⁰ 二十五个数量级以上,相当于你把“一个宇宙的原子”复制成成千上万亿亿亿份,才开始摸到这个数字。
它的博弈树估算约 10⁷⁰。
注意,这和状态空间不完全一致。
因为一个局面可能通过不同的落子顺序到达。
这正好再次说明:
“可能的局面数量”和“可能的游戏过程数量”不是一回事。
而五子棋又特别适合展示一个算法思想:
威胁优先:一种非常强的启发式贪心
比如对手已经形成活三。
你还在想:
“中心要不要占?”
“边上有没有潜力?”
“这个形状以后有没有发展空间?”
实际上可能根本不用想。
因为你只有一个任务:
先处理眼前最大的威胁。
于是 AI 会优先搜索:
活四、冲四、活三、双三……
这其实是一种“启发式贪心”:
把最有威胁的着法排在最前面。
为什么?
因为搜索算法最怕的不是“正确答案不存在”。
而是:
正确答案藏在海量垃圾分支的后面。
如果你能提前把高价值分支排在前面,Alpha-Beta 剪枝就能砍掉更多无关分支。
于是一个非常漂亮的组合出现了:
贪心负责排序。
DFS 负责深入。
Alpha-Beta 负责剪枝。
这就是算法之间真正的协同。
不是“某个算法单挑解决问题”。
而是一群算法一起工作。
05 麻将:当信息藏起来以后,搜索开始失去确定性
麻将的转折意义非常大。
它拥有巨大的状态空间,部分估算达到 10¹²¹。
如果把这些状态都打印成一本书,每一页只记录一个麻将局面,那么即使宇宙里的 10⁸⁰ 个原子每个都变成一家出版社,也根本印不完。
更麻烦的是:
你看不见别人的牌。
隐藏手牌信息可以达到 10⁴⁸ 量级。
这意味着你面对的不是:
“真实状态 S。”
而是:
“我现在不知道真实状态究竟是 S1、S2、S3 还是 S4。”
这时传统 DFS 遇到了一个根本性问题。
搜索树要求你知道:
这一节点到底是什么状态。
可麻将里这个问题本身就没有答案。
于是 AI 开始从:
确定性搜索
走向:
概率推断。
贝叶斯推理:不是“他有什么”,而是“他多大概率有什么”
例如对手一直不打某种花色。
一开始,你觉得:
“他可能有,也可能没有。”
这就是一个先验。
然后他连续打出几张其他牌。
于是你的判断改变:
“现在他手里持有某些牌的概率明显提高了。”
新证据来了。
再更新。
再更新。
这就是贝叶斯思想最朴素的解释:
先有一个猜测,再根据新证据不断修改猜测。
人类麻将高手嘴里的:
“他这张牌打得不正常。”
在算法语言里,其实就是:
这个动作改变了隐藏状态的后验概率分布。
这已经不是 DFS 了。
它更像:
概率版的搜索。
06 德州扑克:从“算牌”进入“算对手”
无限注德州扑克又把问题推进一步。
状态空间常见估算在 10¹⁶⁵ 量级。
这意味着即使拿可观测宇宙 10⁸⁰ 个原子当计数单位,还得再乘上一个超过十的八十五次方的数量级,才能碰到它。
而德州扑克最麻烦的是:
你的行动本身,会改变别人对你的判断。
例如你下注。
对手可能认为你是强牌。
于是他弃牌。
但你也可能知道他会这么想。
所以你故意拿弱牌下注。
于是:
对手猜你在诈唬。
然后跟注。
然后你又可以用强牌下注。
这时候游戏变成了一层又一层的“你猜你猜你”。
这里最重要的算法思想之一就是:
Range:从一个答案变成一个概率分布
不要问:
“他拿的是什么牌?”
而应该问:
“他可能拿哪些牌?每种牌的概率是多少?”
这就是 Range。
它非常像机器学习里的概率分布。
你不再把世界理解成:
“答案是 A。”
而是:
“答案有 20% 是 A,15% 是 B,5% 是 C……”
进一步,你还得考虑:
不同 Range 下,我的下注策略应该怎么变?
于是博弈论中的纳什均衡开始进入核心位置。
所谓纳什均衡,可以粗略理解为:
双方都找到了一个相对稳定的策略,以至于谁单独改变策略,都很难从中获得额外收益。
这和棋类完全不同。
棋类更像:
“找到唯一最佳路线。”
扑克更像:
“找到一个不会被对手轻易利用的策略体系。”
这是一种非常重要的思想跃迁。
07 围棋:当树大到搜不完,AI 开始学习“什么值得搜索”
然后终于到了围棋。
19×19 的棋盘——361 个交叉点组成的战场——让棋局从局部战斗变成了整张地图上的长期博弈。
它的状态空间约 10¹⁷²。
记住前面的宇宙原子:
10⁸⁰。
现在把那个宇宙再复制出大约 10⁹² 份,数量级上才接近围棋状态空间。
而博弈树更恐怖:
约 10³⁶⁰。
已经不是“宇宙装不下”了。
更像是:
给宇宙里的每个原子都再配一个宇宙,然后给每个新宇宙里的原子再配一个宇宙……
所以 Alpha-Beta 的传统思路在这里开始遭遇真正的极限:
我不是不会剪,而是不知道该剪掉谁。
于是 MCTS 登场:让搜索变成“抽样”
MCTS,也就是蒙特卡洛树搜索。
它不再幻想:
“我要把整棵树全部看完。”
而是:
“我随机或者重点抽样很多次,然后观察哪些方向更有希望。”
这和统计学里的蒙特卡洛方法非常像。
假设面前有十万条路。
传统搜索想办法尽可能把路都走一遍。
MCTS 则更像:
“我先派大量侦察兵去各个方向看看。”
跑很多次模拟。
统计胜率。
然后把更多计算资源投给表现最好的方向。
这又出现了一个非常熟悉的算法思想:
探索与利用
你不能永远探索新路线。
因为可能错过已经明显很强的方案。
但你也不能只利用当前最好的一条路线。
因为万一它只是暂时看起来不错呢?
所以 MCTS 在做一件非常典型的决策问题:
探索未知,还是利用已知?
这其实已经和强化学习、在线决策这些更广泛的 AI 问题连接起来了。
但 MCTS 还是不够:搜索负责看路,神经网络负责挑路
AlphaGo 真正惊艳的地方,不只是用了 MCTS。
而是:
它让神经网络负责提前判断“哪些地方值得搜索”。
这一步极其重要。
因为 MCTS 如果什么都平均看,仍然会浪费大量计算。
所以神经网络可以先告诉它:
“这几个点,高手更可能下。”
于是搜索重点集中到这些区域。
这和人类高手非常像。
高手看到一个棋盘,不会真的考虑:
“361 个点,我逐个计算。”
他通常第一眼就知道:
“这里是战斗中心。”
“这里可能有先手。”
“这里虽然暂时没棋,但以后很关键。”
所谓棋感,从某种角度看,就是:
把海量历史经验压缩成非常快的模式识别。
于是围棋时代的算法组合变成:
神经网络负责直觉。
MCTS 负责搜索。
模拟负责评估。
AI 到这里终于不再像一台单纯的“暴力计算器”。
它开始像一个会先判断重点,再集中算力的选手。
七款游戏,其实串起了一条完整的算法进化路线
把它们重新看一遍,会发现一个非常漂亮的隐藏结构。
| 游戏 | 核心难题 | 对应的算法思想 |
|---|---|---|
| 斗地主 | 局部选择 + 隐藏信息 | 贪心、DFS、概率推断 |
| 国际象棋 | 巨大确定性搜索树 | DFS、Minimax、Alpha-Beta |
| 中国象棋 | 搜索 + 大量重复状态 | DFS、剪枝、状态缓存 / 动态规划思想 |
| 五子棋 | 强制威胁与先手优势 | 贪心排序、DFS、剪枝、威胁搜索 |
| 麻将 | 隐藏状态 | 贝叶斯推理、概率决策 |
| 德州扑克 | 对手策略与范围 | 概率分布、博弈论、纳什均衡 |
| 围棋 | 搜索空间极端膨胀 | MCTS、强化学习、神经网络 |
这张表背后其实隐藏着一个非常重要的规律:
游戏越来越复杂,AI 并没有简单地“把旧算法做得更快”。
相反,它在不断换问题。
第一阶段:把问题当成一棵树
国际象棋、中国象棋、五子棋最典型。
思路是:
我知道当前状态。
我知道有哪些动作。
那我就把未来展开。
于是:
DFS → Minimax → Alpha-Beta → 状态缓存
这一整套东西诞生了。
这时候 AI 的核心能力是:
计算。
第二阶段:发现世界不确定
麻将、斗地主、德州扑克告诉我们:
“等等。
你连当前状态都不知道。”
于是问题从:
“这一步应该怎么走?”
变成:
“在我不知道真实状态的时候,我该怎么行动?”
这时候:
概率、贝叶斯推理、信息集、纳什均衡
开始取代单纯的暴力搜索。
AI 的核心能力变成:
推断。
第三阶段:发现连搜索都不值得全部做
围棋又给出最后一记暴击:
“就算你知道整个棋盘,也别想把所有未来都算完。”
于是 AI 进一步学会:
不是所有信息都值得处理。
神经网络负责压缩经验。
MCTS 负责分配搜索预算。
策略网络告诉搜索器:
“去这里。”
价值网络告诉搜索器:
“这个局面大概有多好。”
这时 AI 的核心能力变成:
抽象。
所以真正的“AI 决策进化史”,并不是算力越来越大
而是:
从“算什么”走向“为什么算”。
最开始的 AI 会说:
我有算力,我把所有可能都算一遍。
后来它学会:
这条路已经不可能赢了,剪掉。
再后来:
这个状态我以前算过,不要重复算。
再后来:
对手的牌我不知道,我得用概率猜。
再后来:
对手知道我知道他在猜你,所以我要考虑策略之间的相互影响。
最后:
整棵树太大了,我先判断哪些枝条值得看。
这其实就是从:
暴力 → 剪枝 → 记忆 → 概率 → 博弈 → 抽象
的一条完整算法进化路径。
最后:复杂度越高,真正稀缺的就越不是“算力”
七款游戏摆在一起,会得到一个很有意思的结论。
游戏复杂度越低,我们越容易相信:
只要算得足够多,就能得到最优答案。
但随着复杂度继续上升,这种信念开始崩塌。
因为现实世界存在隐藏信息。
存在随机性。
存在对手。
存在重复状态。
存在数不清的分支。
更存在一个最根本的问题:
你的计算资源永远是有限的。
于是,一个越来越重要的能力出现了:
在有限资源下,把计算花在最值得的地方。
这其实才是从棋盘到牌桌,再到现代 AI 决策系统最值得研究的地方。
贪心告诉我们:
先抓眼前最重要的东西。
DFS 告诉我们:
把可能性展开。
动态规划告诉我们:
算过的不要再算。
剪枝告诉我们:
没价值的分支直接砍掉。
贝叶斯告诉我们:
不知道答案,就根据证据更新概率。
博弈论告诉我们:
别只考虑自己,还要考虑对手会怎么想。
MCTS 告诉我们:
搜索预算有限,就优先探索最有希望的地方。
神经网络则进一步告诉 AI:
很多时候,与其穷举,不如先学会“什么值得看”。
所以,从某种意义上说,围棋并不是这场故事的终点。
它只是让一个问题第一次变得特别明显:
真正强大的智能,也许不是“什么都能算”,而是“知道什么根本不值得算”。
那么问题就来了。
如果未来出现一种复杂度远超围棋、隐藏信息远超扑克、状态变化甚至比现实世界还混乱的游戏——
AI 还能继续统治吗?
还是说,当搜索、概率和神经网络都被逼到极限之后,真正稀缺的能力最终又会回到最古老的东西:
直觉。
而那时所谓的“直觉”,也许只是另一种我们还没学会解释的算法。
更多推荐


所有评论(0)