【问题标题】:Pruning: When to Stop?修剪:何时停止?
【发布时间】:2010-04-23 20:24:38
【问题描述】:

在深度优先搜索中,修剪何时不再有效?我一直在研究一种解决 N-Queens 问题的有效方法,并且我第一次考虑修剪。我已经为前两行实现了它,但是它什么时候不再有效?我应该修剪到多远?

【问题讨论】:

  • 我认为您应该更详细地描述您的算法。我不确定你所说的修剪到底是什么意思。拒绝你肯定会导致死胡同的路径永远不会停止有效。

标签: c++ algorithm depth-first-search pruning


【解决方案1】:

N-Queens 问题通常是递归的。在一个深度实施修剪应该意味着在任何深度实施它。

答案将取决于您正在进行何种修剪。如果您正在修剪对称移动,那么当检查的成本超过评估整个分支的成本乘以分支对称的概率时,则不值得修剪。对于 N-Queens 问题,在前两行之后,对称性可能不是一种很有成效的修剪方法。

【讨论】:

    【解决方案2】:

    我曾经看到过这样的一句话,“尽早修剪;经常修剪。”还有一句,“不要做傻事;不要做两次。”

    我认为你做的修剪量应该取决于你解决问题的目标,或者你在 N 上的界限。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-10-11
      相关资源
      最近更新 更多