数字华容道的数学原理

147 篇文章 19 订阅
52 篇文章 1 订阅
本文介绍了作者在玩数字华容道时的体验和心得,探讨了问题与群论的关联,指出复原步骤需满足偶置换要求。通过程序实现,得出3阶华容道的解法,并分析了深搜与广搜在求最优解中的差异。同时,讨论了不同阶数华容道中空格行数对解题的影响,揭示了解题关键在于数字排列的奇偶性和空格位置。
摘要由CSDN通过智能技术生成

给儿子买了一套数字华容道的棋盘,结果毫不意外地成了我打发时间的工具,玩儿多了后就有了一些心得,结合网上的资料,总结如下图所示。

这是一个NPC问题,目前还没有通用解法。更深刻的数学原理涉及到群论了,群论在大学数学里面有着完全不一样的画风,没有深入学习过。

以三阶为例,可以验证,每个复原步骤均满足上述条件:


共计48步,这个步数必定是个偶数,因为黑框从最后一个位置再回到最后的位置,必定为偶数,根据群的基本理论,所以必须保证初始状态的逆序数也为偶数。这样完成后才满足偶置换的要求,如上的所有条件都是为了满足这个要求

深搜程序,计算出来四种方案,步骤都非常多,可见如果想得到最优步数需要用到广搜,深搜一头走到黑,得到的一般不是最优结果,如果限制路径堆栈的深度,可以得到接近最优的搜索路径:

我们按照程序计算出来的顺序实际操作一遍:

up->left->left->up->right->right->down->left->left->up->right->right->down->left->left->up->right->right->down->down->left->up->up->right->down->left->down->right->up->up->left->down->left->up->right->right->down->down->left->up->left->down->right->up->right->down->left->up->right->down

按照程序给出的操作步骤,顺利完成了3阶华容道的还原。

程序在限定步数前后,搜索步数会出现较大差异,是由于深度搜索过程中,首次出现的某个可解状态并非以最优次序出现,导致即便后续最优序列出现的时候,由于状态重复而被剪枝。

限定最大不超过30步的情况下的搜索结果:

left->left->up->right->right->up->left->down->right->up->left->down->left->down->right->up->right->down->left->left->up->right->up->left->down->right->down->left->up->right->right->down

空格和空格行数

空格水平位置的变化不影响逆序数,但是垂直方向上的变化却可能影响逆序数的奇偶性变化,并且这种影响和华容道的阶数有关,对于三阶来说,空格上下移动,相当于数字向前/向后连续置换了两次,次数为偶数,所以逆序数仍然是偶数保持不变,可以不用考虑空格行数的变化。

但是对于四阶来说,上下移动后,相当于一个数字向前/向后移动了三个块,发生三次置换,次数为奇数,所以逆序数的奇偶性一定发生了变化,需要加上空格行数作为补偿。是偶数才能复原。

进一步引申,奇数阶的数字华容道是否有解,只和当前数字排列的奇偶性有关,逆序数为偶数才有解。偶数阶的数字华容道,除了要考虑数字排列逆序数之外,还需要考虑到空格所在的行数。

扩展

这个问题很像一个迷宫问题,不同的是迷宫问题会限制行走的边界,而对于数字华容道这个问题来说,空格就像黑洞一般,在边界范围内可以随便走,只是这种黑洞的随便走是否能够遍历所有的LAYOUT,或者任意给定的有效LAYOUT,这种暴力搜索是否能够走到,不知道有没有理论上的证明。


结束!

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

papaofdoudou

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值