寻找更好的回溯系统

时间:2012-02-12 04:00:21

标签: c++ recursion backtracking

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

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

如果您需要任何进一步的信息或有任何见解,请与我们联系。谢谢!

1 个答案:

答案 0 :(得分:0)

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

您描述的问题听起来像游戏树?正确?如果是这样,为什么不将问题的描述更改为游戏树,并使用经过验证的游戏树搜索算法之一,例如Alpha-Beta Pruning假设游戏是对抗性的?