如果给你:
- 一个好的洗牌算法(一个很好的随机性来源加上一种洗牌方法,不受任何会影响结果的常见陷阱的影响)
- 一个神奇的函数
WINNABLE(D)
,它采用洗好的牌组,如果牌D
组可以通过某些播放顺序获胜,则返回 True,如果不可避免地导致输掉位置,则返回 False。
那么就可以通过使用 (1) 生成大量起始套牌,然后使用 (2) 将它们过滤到可获胜的套牌来生成一组“分布良好”的可获胜单人纸牌交易。当您试图避免细微的选择偏差潜入您的结果时,这种随机生成可能性并从中挑选的方法始终是一个很好的起点。
问题在于(2)很难(可能是 NP-hard,具体取决于游戏),甚至它的近似值在计算上也很昂贵(比如说,如果你在 iPad 上)。然而,更便宜的算法,例如从获胜位置开始并随机“不移动”以将游戏反转回起点,可能会偏向难以量化或避免的特定套牌洗牌。
在生成这样的可赢游戏领域是否有任何有趣的算法或研究?