【发布时间】:2014-04-25 18:34:33
【问题描述】:
编辑:这个问题不是What is the optimal algorithm for the game 2048?的重复问题
- 这个问题问“赢得比赛的最佳方式是什么?”
- 此问题询问“我们如何才能计算出游戏的复杂性?”
它们是完全不同的问题。我对走向“胜利”状态需要哪些步骤不感兴趣 - 我感兴趣的是找出是否可以计算可能的步骤总数。
我一直在阅读 question 关于游戏 2048 的文章,其中讨论了创建在游戏中表现良好的算法的策略。
接受的答案提到:
游戏是一个离散的状态空间,完美的信息,象棋一样的回合制游戏
这让我想到了它的复杂性。对于像国际象棋这样的确定性游戏,有可能(理论上)计算出导致获胜状态的所有可能动作并向后工作,选择持续导致该结果的最佳动作。我知道这会导致大量可能的移动(在宇宙中的原子数量范围内).. 但是 2048 或多或少复杂?
伪代码:
for the current arrangement of tiles
- work out the possible moves
- work out what the board will look like if the program adds a 2 to the board
- work out what the board will look like if the program adds a 4 to the board
- move on to working out the possible moves for the new state
在这一点上,我想我会在这里等待它运行一段时间......
所以我的问题是 - 我将如何开始编写这个算法 - 哪种策略最适合计算游戏的复杂性?
我看到的 2048 和国际象棋之间的最大区别是程序可以在添加新棋子时在 2 到 4 之间随机选择 - 这似乎增加了大量额外的可能移动。
最终,我希望程序输出一个数字,显示游戏中可能排列的数量。这可能吗?!
【问题讨论】:
-
有什么东西可以解释那个东西的规则吗?编辑:现在我明白了...
-
因为有两个随机分量,并且您想要确切的数字(不是理论上的最大值)...我认为没有比尝试所有可能性更好的解决方案。 (顺便说一句,这个游戏很有趣:D)
-
是的,所以我要问的是-'是否有一种标准方法可以以编程方式计算该确切数字,或者由于计算的实用性而只能猜测它'例如我的 psudocode 将需要很长时间,并且可能在完成之前耗尽内存
-
在问题顶部添加了注释。很明显不是重复的。不知道为什么人们会抓住机会将其标记为这样。
标签: algorithm logic artificial-intelligence game-theory