找回密码
 快速注册
搜索
查看: 110|回复: 6

[组合] 开关问题

[复制链接]

170

主题

196

回帖

2372

积分

积分
2372

显示全部楼层

hjfmhh 发表于 2023-3-3 22:10 |阅读模式

730

主题

1万

回帖

9万

积分

积分
93633
QQ

显示全部楼层

kuing 发表于 2023-3-3 23:00
关键词:关灯游戏 (Lights Out Puzzle)
借用一下这帖 zhihu.com/question/292428157/answer/2033484451 末尾的 mma 代码玩了一下,5 下确实可以,但要证明低于 5 下不行还没想
关灯游戏n=3只关一角.gif
PS、根据链接里的介绍,关掉所有灯也是至少 5 下。

730

主题

1万

回帖

9万

积分

积分
93633
QQ

显示全部楼层

kuing 发表于 2023-3-4 01:05
本帖最后由 kuing 于 2023-11-18 01:12 编辑 运用我这菜鸟的 JS 水平尝试写代码实现网页上玩这个关灯游戏:
大家可以点击网格玩玩😊
3 x 3:
5 x 5:
4 x 6:

PS、未能实现“悔棋”以及当所有灯都亮时弹出成功提示(主要还是太菜😥
完整代码见附件。
$type

gdyx.html

1.39 KB, 下载次数: 4

点评

收藏一下,蛮好玩的  发表于 2023-3-5 21:59

48

主题

992

回帖

1万

积分

积分
14981
QQ

显示全部楼层

Czhang271828 发表于 2023-3-4 14:19
本帖最后由 Czhang271828 于 2023-3-4 14:45 编辑 其实这个问题写过的, 见此帖. 一般情况的解法无非常微分那类"特解"+"通解"的形式, 也就是其中一种解法+把零变成零的方法.

对 $n\times m$ 网格, 可以用逐行消掉第 $1$ 横行至第 $n-1$ 横行, 进而所有黑块在最后一横行. 注意到在一个空白的网格中, "点击第一行的某个方块+应用上述归纳消去法"的总体效果是在最后一行凭空创造若干黑块, 换言之, "点击第一行的一个方块"等价于"改变最后一行的若干方块".

由于所有步骤可交换, 我们可以用矩阵反推最后一行黑块所对应的"第一行应做的变换". 对 $5\times 5$ 的情形, 解空间和零空间是显然的.

当然还有个很显然的结论, 如果把灯对应成图上的点, 边对应点亮关系, 那么无向图一定可以从全亮变成全暗.

回答原问题, 即 $3\times 3$ 的网格中只有 $(1,1)$ 是绿的, 求变全白的最少步数?
  • 通过点击第一行+递归消去法, 找到"凭空创造最后一行绿块"的所有方法: 这里是
    \[
    (1,1)\mapsto (3,2)+(3,3),\quad (1,2)\mapsto (3,1)+(3,2)+(3,3),\quad (1,3)\mapsto (3,1)+(3,2).
    \]
    由于 $\mathbb F_2$ 上有满秩矩阵 $\det\begin{pmatrix}1&1&0\\1&1&1\\0&1&1\end{pmatrix}=1$, 从而把"点击第一行方法"映至"最后一行绿块改变"的 $\mathbb F_2$-线性映射是双射. 进而任意初始状态的绿块都可以被消除, 这也蕴含没有非平凡的"通解".
  • 找到消去 $(1,1)$ 块的"特解", 在"通解"平凡时也就是唯一解了, 题中 $5$ 不但是最少步数, 而且是唯一的步数(根据各步骤可交换性和对称性, 我们不妨约定每个块至多点一次).


对 $5\times 5$ 情形, 把"点击第一行方法"映至"最后一行绿块改变"的 $\mathbb F_2$-线性映射不是满秩的, 所以会有无解的情况. 一个值得研究的问题是 $n\times n$ 在何种情况下一定有解? 按照传统意义下的算法, 这个复杂度是 $\mathcal O(n^{2.3})$ 左右.  

730

主题

1万

回帖

9万

积分

积分
93633
QQ

显示全部楼层

kuing 发表于 2023-3-4 15:14
Czhang271828 发表于 2023-3-4 14:19
其实这个问题写过的, 见 kuing.cjhb.site/forum.php?mod=viewthread&tid=8555. 一般情况的解法无非常微分那类"特解"+"通解"的形式, 也就是其中一种解法+把零 ...


噢,我竟然把那帖给忘了😥加个tag连接起来先……
看了下那帖的代码,竟然只用 form + table 就实现了类似 3# 的效果😯得慢慢学习下……

830

主题

4866

回帖

3万

积分

积分
36180

显示全部楼层

isee 发表于 2023-3-5 18:44
kuing 发表于 2023-3-4 01:05
运用我这菜鸟的 JS 水平尝试写代码实现网页上玩这个关灯游戏:

大家可以点击网格玩玩😊

哎呀,可以点~
isee=freeMaths@知乎

手机版|悠闲数学娱乐论坛(第3版)

GMT+8, 2025-3-5 00:58

Powered by Discuz!

× 快速回复 返回顶部 返回列表