Forgot password?
 Create new account
View 244|Reply 6

[组合] 开关问题

[Copy link]

178

Threads

236

Posts

2629

Credits

Credits
2629

Show all posts

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

700

Threads

110K

Posts

910K

Credits

Credits
94177
QQ

Show all posts

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

700

Threads

110K

Posts

910K

Credits

Credits
94177
QQ

Show all posts

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

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

gdyx.html

1.39 KB, Downloads: 31

Comment

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

48

Threads

969

Posts

110K

Credits

Credits
14870
QQ

Show all posts

Czhang271828 Posted at 2023-3-4 14:19:23
Last edited by Czhang271828 at 2023-3-4 14:45:00其实这个问题写过的, 见此帖. 一般情况的解法无非常微分那类"特解"+"通解"的形式, 也就是其中一种解法+把零变成零的方法.

对 $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})$ 左右.  

700

Threads

110K

Posts

910K

Credits

Credits
94177
QQ

Show all posts

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

801

Threads

4889

Posts

310K

Credits

Credits
36169

Show all posts

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

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

手机版Mobile version|Leisure Math Forum

2025-4-21 01:27 GMT+8

Powered by Discuz!

× Quick Reply To Top Return to the list