【问题标题】:8-queen problem using Dynamic programming使用动态规划的 8 皇后问题
【发布时间】:2011-10-26 17:17:32
【问题描述】:

我对使用动态编程实现 8-queen 问题的想法感到非常困惑。对于 DP 来说,这似乎是不可能的“如果将问题分解为一系列子问题并找到每个子问题的最佳解决方案,那么最终的解决方案将通过这些子问题的解决方案来实现。一个问题没有这种结构的问题不能用动态规划来解决”(Reference)。考虑到这一点,7x7 电路板的最佳解决方案可能不是 8x8 的最佳解决方案(甚至不正确)。因此,问题的结果可能无法通过子问题的最优解来实现。

另一方面,DP是针对回溯问题的优化...如果是这样,那么可以通过回溯解决8-queen问题...是否意味着通过仅存储死端可以将回溯解决方案转换为DP?如果是这样,那么可能 2,1 对于父 1,1 是不可行的,但对于 1,2 可能是可行的。

更新

有人知道8-queen或n-queen问题是否可以通过使用动态规划来解决?如果是这样,那么您的 cmets 对上述观察结果有何看法?

【问题讨论】:

  • @lnuyasha 更新了问题。
  • @mqpasta,“8 个皇后动态规划”的网络搜索产生了相当多的点击量。您是否阅读过这些资料中的任何一个以了解他们如何针对此问题定义 DP?你不同意吗?您是正确的,7-queen 解决方案不是 8-queen 解决方案的组成部分,所以您的问题非常有趣。
  • 好吧,我没有遇到任何将 8-queen 描述为 DP 的资源......但我相信它一定是因为 DP 是为了优化回溯......但没有必要证明这一点。 ..
  • 理论上是一个有趣的问题(虽然我不知道如何使用 DP)但我不知道你为什么要进一步优化它,一个好的回溯算法将检查小于 4 *7!展示位置是 20160(请记住,其中很多会因为对角线而提前终止)
  • 4*7! - 对于 n = 8。如果 n > 100 怎么办?

标签: algorithm dynamic-programming n-queens


【解决方案1】:

7x7 电路板的最佳解决方案对于 8x8 可能不是最佳的(甚至不正确)。

是的,你是对的。但这不是解决问题的好方法。查看paper yi_H posted in his answer,定理2.4,并查看算法描述。他们根据封闭线的集合(即受皇后威胁的线)将解决方案划分为等价类。定理 2.4 保证一旦他们解决了特定闭线上的子问题,他们就可以单独解决其余的问题,然后将结果组合起来!非常聪明。

【讨论】:

    【解决方案2】:

    只是发布明显的谷歌点击:

    A dynamic programming solution to the n-queens problem

    注意:对于大的 n,这仍然非常慢,O (f(n)*8^n),你最好使用其他算法:

    A Polynomial Time Algorithm for the N-Queens Problem

    【讨论】:

    • 您对“n-queens 问题的动态规划解决方案”的第一个条目不是很清楚。我读了那个文件。即使有作者提供的运行示例。对于第二个链接,它适用于排列或随机解决方案。它更有可能是遗传的!无论如何...我正在考虑计划一个 DP 问题来纠正不正确的 8-queen 问题...好主意!
    • 但是,我仍在寻找一个答案来描述我的问题中所述的观察结果。
    猜你喜欢
    • 1970-01-01
    • 2011-10-17
    • 2012-04-09
    • 1970-01-01
    • 2016-11-26
    • 2011-10-14
    • 1970-01-01
    相关资源
    最近更新 更多