答案 0 :(得分:1)
动态编程是一种用于解决问题的技术,通过递归方式将困难案例简化为简单案例,直到您达到一个足够简单的案例来解决“通过检查”。因此,如果在每个阶段都可以考虑降低问题复杂性的举措,那么只有合理的DP方法才能解决n-puzzle问题。
例如,如果n-puzzle中的第一个“移动”总是将其变为“(n-1)-puzzle”(对于“move”的某些具体定义,并假设为(n-1) - 谜题有意义),那么你可以应用DP,最终解决“1-puzzle”,并向上组合以解决n-puzzle。
我不知道n-puzzle的任何这种简化过程;我现在想不到一个。但是,这并不意味着一个不存在。