0

寻找一些逻辑建议。我正在运行深度受限搜索,以便从开始状态到结束状态。我正在扩展深度 > 0 包括源节点的每个节点的所有可能移动(这就是问题所在)。

我尝试存储以前的状态并将其作为不扩展的条件。但是,这也否定了其他扩展分支通过这种状态的能力。

从逻辑的角度来看,我怎样才能避免这个问题,同时避免倒卖?

@acelent 评论(这里)给了我一个想法来创建一个 configDepth 类,它存储每个访问状态及其相应的深度。然后在下一个递归中 -

IF newState(depth) == state(depth-1) THEN !expand 

您对此解决方案有何看法?我走上了许多死胡同,需要新的意见和想法。

谢谢你。

4

1 回答 1

1

由于递归是实现深度搜索的好方法,您可以创建另一个递归,它将接收它可以达到的最大深度。如果达到这个深度,它将中断递归,它会返回到前一个节点,该节点仍然有尚未达到这个深度的元素。

为此,您需要从树的创建中知道顶点的深度,或者您可以在递归过程中计算它。

于 2017-02-20T10:14:02.900 回答