对于所有尺寸,如何最佳地改变十五个拼图?

时间:2018-06-12 05:12:17

标签: algorithm shuffle

问题是要产生十五岁以上的'不同大小的谜题,确保所有谜题都是可以解决的。有关测试可解决难题的信息,请参阅Wikipedia或Wolfram。

天真的随机播放方法包括(a)模拟大量的随机动作(b)以某种方式改组,检查是否有效,如果没有则修复。另请参阅How can I ensure that when I shuffle my puzzle I still end up with an even permutation?

最佳随机播放将(a)以相同的概率产生每个可能的可解决的拼图(b)执行不超过N个交换,其中N是瓦片的数量,并且最有可能(c)在每次交换之后使拼图可解决。

有这样的方法吗?

有一种众所周知的方法,使用步骤(1)Knuth或类似的shuffle(2)测试有效性(3)如果需要再做一次交换。这相当于3个独立的算法,并且(因为步骤3)不会产生具有完全相等概率的所有可能的可解决难题。如果没有方法满足要求,那么就应该有一个证据来证明这一点。

经过进一步思考,步骤3可能不会损害洗牌的分布,但它确实(a)使洗牌的总数不确定(b)需要额外的测试。在目标应用程序中,执行该测试的逻辑不可用。

因此,问题可以重新拟定为找到一组最小的掉期,这些互换产生了每次可能的有效混乱,且概率相等。最终结果必须是可解决的难题,无需测试可解性。假设所需的掉期数量为N-1。

3 个答案:

答案 0 :(得分:3)

  

有一种众所周知的方法,使用步骤(1)Knuth或类似的shuffle(2)测试有效性(3)如果需要再做一次交换。这相当于3个独立的算法,并且(因为步骤3)不会产生具有完全相同概率的所有可能的可解决难题。

我认为你的结论是错误的。这是一个3步法:

  1. 正常洗牌。
  2. 检查网格是否可解。
  3. 如果网格不可解决,则将标记为1的图块与标记为2的图块交换。
  4. 首先,通过交换瓦片1和2获得可解决网格和不可解决网格之间的双射。显然,步骤(1)中的混洗产生具有相同概率的所有网格,但是这些网格中只有一半是可解的。因此,如果我们将双射应用于所有不可解析的网格,那么我们将在可解决的网格上保持均匀分布。 (对于任何给定的可解决网格,有两种方法可以“结束”:将网格混洗到该状态,或者将网格混洗到其唯一的相应不可解析状态。显然,对于每个可解决的网格,这种情况都是相同的。)< / p>

    正确性证明

    来自Wikipedia article on the 15 puzzle

      

    不变量是所有16个方格的排列的奇偶性加上从右下角开始的空方格的出租车距离(行数加上列数)的奇偶校验。这是一个不变量,因为每次移动都会改变排列的奇偶性和出租车距离的奇偶性。特别是如果空方块位于右下角,那么当且仅当剩余部分的排列是偶数时,拼图才是可解决的。

    来自Wikipedia article on the parity of a permutation

      

    偶数置换可以作为两个元素的偶数和偶数个交换(称为转置)的组合获得,而奇数置换可以通过(仅)奇数个转置获得。 p>

    因此,交换(转置)任何两个编号的图块(不是空的正方形)将改变置换的奇偶校验(我们添加了一个转置)。但是,空方的出租车距离的平价没有变化(因为空方没有移动)。

    因此,这样的操作将改变拼图的可解决性。换句话说,应用此操作(例如,交换标记为12的切片)将始终将无法解决的谜题转换为可解决的谜题,反之亦然。 (此操作也是一种双射,因为它是可逆的。)

    证明不能同时满足要求(b)和(c)

    考虑起始2x2网格:

    1 2
    3 _
    

    和“目标”网格:

    _ 3
    2 1
    

    我们可以从第一个网格移动到第二个网格,最多使用4次交换(要求(b))并在每次交换后保持网格可解(要求(c))?

    首先,请注意满足要求(c)的唯一允许交换是使用相邻的区块(而不是对角区块)移动空间_。通过对称,我们可以顺时针移动空间而不失一般性。然后执行任何计数器 - 时钟交换是没用的,因为它取消了之前的顺时针交换。

    因此,我们反复将空间与相邻的瓷砖沿顺时针方向交换,直到我们获得所需的网格。这需要6次交换。从6开始> 4,满足要求(c)时不能满足要求(b)。

答案 1 :(得分:0)

假定棋盘颜色。然后从一个可解决的难题(甚至排列奇偶校验)开始,可以进行以下交换:

  1. 任何两个数字:奇偶校验是相反的。
  2. 在相同颜色的正方形上具有任意数字的空格:奇偶校验是相反的。
  3. 在相反颜色的正方形上具有任意数字的空间:奇偶校验不变。

只有唯一的交换是,难题才能在每一步都有效(即使是奇偶校验) 类型3。如果每个类型1或2的交换都跟在另一个相同类型的交换之后,则难题将在每对这样的货币对之后有效。

从上面随机选择的足够数量的交换将实现高度的混乱。总共16次交换,这样 每个方块至少要交换一次,并且遵守这些交换规则就足够了。 很难确定谜题的分布是否完美,但对于大多数目的来说应该足够了。

该解决方案可轻松推广到4x4以外的其他难题。

答案 2 :(得分:-1)

假设棋盘着色,左上方是白色。然后从一个可解决的谜题开始,以下交换让难题可以解决:

  1. 第1行或第3行中的空格,任何相同颜色的正方形
  2. 第2行或第4行中的空格,任何相反颜色的正方形
  3. 相同颜色的正方形上的任意两个数字。
  4. 从上面随机选择的16个有效互换,每平方一个,将实现高度无序和有效的拼图。我无法确定谜题的分布是否完美,但它应该足以满足大多数目的。

    解决方案概括为4x4以外的谜题。