2

我将尝试用简单的术语来解释这一点,因为它可能比我发布代码要短。我做了一个递归解决方案的一部分,它必须通过选择正确的“移动顺序”来完成游戏,如果它陷入僵局,那么它必须回溯。我当前的系统通过在任何不起作用的移动上设置一个标识符来工作,以便在回溯时不能再次使用它,直到找到新的路径/移动顺序。

但是我遇到了一个问题;游戏可以达到只剩下两步的状态,它们都不能解决游戏。我目前的系统基本上会让这两个动作不断地相互交换,因为解决方案尝试下一个动作,发现它不起作用,然后尝试下一个。我相信我的问题是我重置了我的标识符,它告诉解决方案不要使用移动,每次移动时,但我不确定我会如何设置它。

如果您需要任何进一步的信息或有任何见解,请告诉我。谢谢!

4

1 回答 1

0

我不确定您所描述的游戏的性质,更多信息可以帮助您确定更好的方法供您遵循。我在主题中看到您的评论,您说该索引在找到新动作后会重置。这听起来不太好。我相信你必须解决这个问题,因为正如你刚刚从你的例子中看到的那样,在某些情况下它会失败,我们不能有一个只能有条件地工作的算法。

你描述的问题听起来像一个游戏树?正确的?如果是这样,为什么不将您对问题的描述更改为博弈树,并假设游戏是对抗性的,并利用其中一种经过验证的博弈树搜索算法(例如Alpha-Beta 修剪)?

于 2012-02-12T04:50:36.007 回答