编辑:这个问题不重复What is the best algorithm for the game 2048?
- 这个问题问'赢得比赛的最佳方式是什么?
- 这个问题问“我们如何才能计算出游戏的复杂性?”
它们是完全不同的问题。我对走向“胜利”状态需要哪些步骤不感兴趣——我有兴趣找出是否可以计算可能步骤的总数。
我一直在阅读这个关于游戏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 之间随机选择——这似乎增加了大量额外的可能移动。
最终,我希望程序输出一个数字,显示游戏中可能的排列数量。这可能吗?!