这个骰子游戏的几率可以在合理的时间/空间内确定吗?

时间:2012-01-31 15:37:06

标签: probability markov-chains

我问了这个问题question on Boardgame StackExchange,关于哪个角色赢得Button Men比赛的几率更高。这让我想到了在合理的时间内回答问题的具体方法。游戏规则相当简单。

  • 在游戏开始时,每个玩家都会掷出多面体骰子。

  • 拥有最低骰子的玩家先行(领带使用下一个最低骰子)。

  • 玩家可以通过两种可能的方式捕获对手。

    1)力量攻击:使用大于或等于值的单个骰子(然后重新碾压骰子)。

    2)技能攻击:使用多个骰子完全等于对手死亡(重新掷出捕获中使用的所有骰子)。

    3)如果玩家无法捕获对手死亡,他们必须通过。

  • 当玩家没有骰子时游戏结束。每个玩家从他们的对手捕获的每个dX得到X点,并且对于他们自己的每个骰子剩下0.5dX。 (即如果你捕获对手d4,d4,d10,d12,d20,并且仍有你自己的d20你得分(4 + 4 + 10 + 12 + 20 + 0.5 * 20)= 60分。)

    < / LI>

蛮力 Avis Character滚动d4,d4,d10,d12和dX(其中dX是d4,d6,d8,d10,d12或d20)。这意味着它们在初始滚动后最多具有(4 * 4 * 10 * 12 * 20)38,400个状态。 Iago角色最多为4d20(如果他们使用d20作为他们的'dX'挥杆模具),给他们160,000个可能的起始状态。总之,这导致了61.44亿个可能的起始状态,而事情从这里变得更糟。没有任何试图理清最佳动作的智慧,必须尝试所有可能的动作。在最糟糕的情况下,玩家可能会在技能攻击中重新掷骰子。由于在游戏结束之前必须进行多达8次捕获,因此即使在每一侧的力量攻击中重新单击d20也会增加(20 ^ 8 = 25.6亿)。蛮力方法可能会导致评估157+ Quintillion或更多可能的状态。这是不可行的,但还有更好的方法。蛮力方法多次重新评估相同的游戏状态。

马尔可夫链 如果我们看一下最终转换到最终游戏的一系列可能状态的游戏,我们可以评估从游戏中的一个状态移动到另一个状态向后工作的几率,并最终达到每个角色在开始时获胜的几率游戏游戏仅以几种可能的状态结束(相对而言)。一个玩家没有骰子,另一个玩家有自己骰子的一些组合(在下面的例子中,dX挥动骰子被选为d20。这只是现在的概念证明,所以不要担心这个骰子在游戏中是可变的。)

  • Avis:d4 | d10 | d12 | D20

  • Avis:d4,d4 | d4,d10 | d4,d12 | D4,D20

  • Avis:d4,d4,d10 | d4,d4,d12 | d4,d4,d20 | d4,d10,d12 | d4,d10,d20 | d4,d12,d20 | D10,D12,D20

  • Avis:d4,d4,d10,d12 | d4,d4,d10,d20 | D4,D10,D12,D20

  • Avis:d4,d4,d10,d12,d20

  • Iago:d20

  • Iago:d20,d20

  • Iago:d20,d20,d20

  • Iago:d20,d20,d20,d20

一旦这些最终游戏状态对每个玩家进行评分,并且确定该状态是否是每个角色的赢或输,就可以检查“倒数第二个”游戏状态。以类似的方式,可以确定每个“倒数第二”游戏状态将导致我们的最终游戏状态之一的可能性的几率。一些简单的电子表格计算导致约99亿游戏状态的结果(因为我只需要存储游戏状态的输赢特性,我应该能够将这些信息打包到一个位,对吧?)。这似乎不是一个难以逾越的游戏状态来存储/评估。

是否有可能在合理的时间内使用Markov Chains以及相当便宜的硬件来回答哪个角色更好?

有没有更好的方法来解决这类问题?

0 个答案:

没有答案