【发布时间】:2013-10-29 18:21:39
【问题描述】:
我正在解决 8 谜题。这是一个看起来像这样的问题:
图片由:https://ece.uwaterloo.ca/~dwharder/aads/Algorithms/N_puzzles/ 提供(您还可以在此处查看 8 拼图的更详细说明)。用户可以将与空白相邻的正方形移动到空白中。任务是恢复如图所示的排列,从一些任意排列开始。
现在,当然可以将状态描述为 9 位数字的排列。如图所示,排列为:
1 2 3 4 5 6 7 8 0
但是,并非所有排列都可以从显示的配置中获得。因此,我有以下问题。
通过将瓷砖滑入空白处,从所示的初始配置中可以获得多少排列?
调用上述 N 的答案。现在,我想要一个从 1 到 N 的整数到排列的 1-1 映射。也就是说,我想要一个接受排列并返回适当整数的函数,以及一个接受整数并返回排列的函数。映射必须是双射(即不完美的哈希是不够的)。
【问题讨论】:
-
8-puzzle 不是有一个属性,即从任何开始状态都可以达到恰好一半(全部)排列吗?
-
user2864740,我不知道。如果你知道解释这个的地方,请分享。
-
已经有一段时间了,但我想我记得有两个不同的“可解”和“不可解”状态集。也许stackoverflow.com/a/11923585/2864740 包含相关信息。
-
@user2864740 - 这是正确的。恰好有两个等价类的可达配置。用于证明 15 谜题 (see here) 的这一事实的技术同样适用于 8 谜题。 (事实上,存在任意 m x n 个谜题的证明。)
-
Google 是您的朋友:Complete Solution of the Eight-Puzzle 等。
标签: algorithm artificial-intelligence sliding-tile-puzzle planning