Forgot password?
 Register account
View 399|Reply 6

[组合] 开关问题

[Copy link]

195

Threads

247

Posts

2785

Credits

Credits
2785

Show all posts

hjfmhh Posted 2023-3-3 22:10 |Read mode

682

Threads

110K

Posts

910K

Credits

Credits
90973
QQ

Show all posts

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

682

Threads

110K

Posts

910K

Credits

Credits
90973
QQ

Show all posts

kuing Posted 2023-3-4 01:05
Last edited by kuing 2023-11-18 01:12运用我这菜鸟的 JS 水平尝试写代码实现网页上玩这个关灯游戏:
大家可以点击网格玩玩😊
3 x 3:
5 x 5:
4 x 6:

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

gdyx.html

1.39 KB, Downloads: 61

Comment

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

48

Threads

771

Posts

110K

Credits

Credits
13880
QQ

Show all posts

Czhang271828 Posted 2023-3-4 14:19
Last edited by 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})$ 左右.  

682

Threads

110K

Posts

910K

Credits

Credits
90973
QQ

Show all posts

kuing Posted 2023-3-4 15:14
Czhang271828 发表于 2023-3-4 14:19
其实这个问题写过的, 见 forum.php?mod=viewthread&tid=8555. 一般情况的解法无非常微分那类"特解"+"通解"的形式, 也就是其中一种解法+把零 ...
噢,我竟然把那帖给忘了😥加个tag连接起来先……
看了下那帖的代码,竟然只用 form + table 就实现了类似 3# 的效果😯得慢慢学习下……

768

Threads

4685

Posts

310K

Credits

Credits
35004

Show all posts

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

大家可以点击网格玩玩😊
哎呀,可以点~
isee=freeMaths@知乎

Mobile version|Discuz Math Forum

2025-6-5 07:35 GMT+8

Powered by Discuz!

× Quick Reply To Top Edit