博弈复杂度

博弈复杂度（game complexity）可以用许多方法加以衡量。本条目讲述其中的5种方法：状态空间复杂度（state-space complexity）、博弈树的大小（game tree size）、策略复杂度（decision complexity）、博弈树复杂度（game-tree complexity）与计算复杂度（computational complexity）。

## 博弈复杂度的衡量

### 状态空间复杂度

状态空间复杂度指的是从博弈最开始的状态可以变化出的符合规则的状态的数量。

当这太难以计算时，常常通过包含一些不符合规则的状态或不可能在博弈中出现的状态, 从而计算出一个上界限。

### 博弈树的大小

博弈树的大小指的是博弈可以进行的总次数：从博弈树最初的根节点开始延伸出的叶子节点的数量.

博弈树通常比状态空间要大得多，因为同一个状态可以由不同的行为顺序形成。（例如，在一回合井字棋游戏中，面板上有两个X和一个O，这个状态可能由两个不同的方式形成，具体的形成过程由第一个X的下子位置所决定）。一个博弈树的大小的最大值有时可以这么计算：通过仅增大博弈树的方式，简化博弈的过程（例如，允许一些本来不符合规则的行为），直到博弈树的大小变得易于计算。

不过，对于一些没有行为上限的博弈（比如说没棋盘大小的界限，或者有一个可以重复博弈状态的规则），博弈树的大小将会是无限的。

### 决策树

之后的两种方案用到了决策树的方法。一个决策树是博弈树的子树。决策树的状态会被标记上“玩家A获胜”、“玩家B获胜”或者“平手”；如果有那个状态可以被证明具有一个标记（假设双方都作出了最好的决策），并且光从其它状态就可以得出结论.。（终端的状态可以直接标记；如果现在该A行动：如果下一个状态标志着A的胜利，那么现在的状态可以被标记为“玩家A获胜”；如果下一个状态标志着B的胜利，那么现在的状态可以被标记为“玩家B获胜”；或者可以被标记为“平手”，如果下一个状态是平局或者B胜利。相应的对于现在该B行动也是一样。）

#### 决策复杂度

一个博弈的决策复杂度指的是在构成初始状态取值的最小的决策树中，叶子节点的数量。

#### 博弈树复杂度

一个博弈的“博弈树复杂度”指的是在构成初始状态取值的最小“整个”决策树中，叶子节点的数量。整个决策树包含树中所有深度的节点。

这是一个为了尝试决定初始状态取值，所做出的对于需要考虑的节点数量的一个极小化极大算法（Minimax）。

就算是去估量博弈树复杂度，那也十分困难。不过对于一些博弈，一个合理的下界限可以由底数为博弈的平均分支因子，指数为博弈的平均步数的幂得出，即可以表示为：

$$GTC \geq b^d$$

### 计算复杂度

一个博弈的计算复杂性理论描述对博弈进行渐近分析的难度，随着它变得过于巨大，用大O符号表示，或者用复杂性类的成员关系表示。这个概念并不应用于特定的博弈，而是用于广义的博弈，它们会变得非常大，通常在一个n宽n高的面板上玩弄它们。（从计算复杂度的角度来看，一个在有限面板上进行的博弈是一个有限问题，可以通过计算O(1)解决。例如遍历从方案到最佳的移动方案的所有方案。）

## 例子: 井字棋

以井字棋而言，一个简单的状态空间大小的上界限是39 = 19,683。（每一个格子中有3种状态,，有9个格子）这样计算包含了许多不合规则的状态，比如有5个X却没有0的状态，或者两方玩家都有形成一字的状态。一个更精细的计算，除去了这些不合规则的状态之后，留下5,478个状态。然后，如果把旋转或翻转后会得到相同结果的状态算作同一个的状态话，那么就可以得出765个真正本质上不同的状态。

一个简单的博弈树大小的上界限是9! = 362,880。（一开始有9个格子可以下子,，第二回合变为8个，以此类推）这包括了一方玩家获胜后继续下子的不符合规则的情况。一个更精细的计算得出的是255,168种博弈过程。如果把旋转或翻转后会得到相同结果的状态当作相同的话，那么就仅有26,830种博弈过程。

井字棋的计算复杂度取决与它如何广义化。一种自然的广义化是将其变为m,n,k型博弈：在一个宽"m"高"n"的棋盘上，第一个将"k"个子连成一线的玩家获胜。很容易就可以发现，这个博弈可以通过查找整个博弈树，解DSPACE(mn)，得出结果。这将它归类到了重要的复杂性类PSPACE里面。稍微再花点功夫，可以将它变换为PSPACE完整。

## 一些知名博弈的复杂度

由于博弈复杂度非常巨大，下面表中一些数据只显示了以10为底数的指数部分。下面的表中的数值都需要小心对待：在博弈中，一个看起来很微小的规则变换会引起结果的巨大变化（通常依然会被粗略地估计），可能实际情况会比数值估计的结果要大得多。

博弈｜棋盘大小 (格数)｜状态空间复杂度 (以10为底数的指数部分)｜博弈树复杂度 (以10为底数的指数部分)｜平均博弈长度 (步数)｜分枝因素｜引用｜对应广义化博弈的复杂性类

井字棋｜9｜3｜5｜9｜4｜PSPACE-complete

Sim｜15｜3｜8｜14｜3.7｜PSPACE-complete

五格骨牌｜64｜12｜18｜10｜75｜?, but in PSPACE

美国播棋｜14｜13｜18｜Generalization is unclear

屏风式四子棋｜42｜13｜21｜36｜4｜?, but in PSPACE

Domineering (8 × 8)｜64｜15｜27｜30｜8｜?, but in PSPACE; in P for certain dimensions

马来播棋｜14｜15｜33

英国跳棋｜32｜20 or 18｜31｜70｜2.8｜or ｜EXPTIME-complete

西非播棋｜12｜12｜32｜60｜3.5｜Generalization is unclear

多层式四子棋｜64｜30｜34｜20｜54.2｜PSPACE-complete

迂棋｜45｜21｜46｜44｜11｜?, but in EXPTIME

直棋｜24｜10｜50｜50｜10｜?, but in EXPTIME

西洋跳棋｜50｜30｜54｜90｜4｜EXPTIME-complete

中国跳棋(2人)｜121｜23｜EXPTIME-complete

中国跳棋(6人)｜121｜78｜EXPTIME-complete

集结棋｜64｜23｜64｜44｜29｜?, but in EXPTIME

黑白棋｜64｜28｜58｜58｜10｜PSPACE-complete

OnTop (2人局)｜72｜88｜62｜31｜23.77

六贯棋｜121｜57｜98｜40｜280｜PSPACE-complete

五子棋(15x15, 无禁手)｜225｜105｜70｜30｜210｜PSPACE-complete

围棋(9x9)｜81｜38｜45｜EXPTIME-complete

国际象棋｜64｜47｜123｜80｜35｜EXPTIME-complete (without 50-move drawing rule)

连六棋｜361｜172｜140｜30｜46000｜PSPACE-complete

双陆棋｜28｜20｜144｜50-60｜250｜Generalization is unclear

象棋｜90｜40｜150｜95｜38｜?, believed to be EXPTIME-complete

角力棋｜61｜25｜154｜87｜60｜?, but in EXPTIME

三宝棋｜271｜127｜157｜66｜240｜?, but in PSPACE

韩国将棋｜90｜44｜160｜100｜40｜?, believed to be EXPTIME-complete

墙棋｜81｜42｜162｜91｜60｜?, but in PSPACE

卡卡颂(2p base game)｜72｜>40｜195｜71｜55｜Generalization is unclear

亚马逊棋｜100｜40｜212｜84｜374 or 299｜PSPACE-complete

围棋(13x13)｜169｜79｜90｜EXPTIME-complete

日本将棋｜81｜71｜226｜115｜92｜EXPTIME-complete

印度斗兽棋｜64｜43｜402｜92｜17281｜?, but in EXPTIME

围棋(19x19)｜361｜171｜360｜150｜250｜EXPTIME-complete

西洋陆军棋｜92｜115｜535｜381｜21.739

Double dummy bridge｜(52)｜<17｜<40｜52｜5.6

## 外部链接

- David Eppstein's Computational Complexity of Games and Puzzles