【发布时间】: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