关灯游戏 Lights out (三)(线性代数+高斯消元,搜索全部解)

        关灯游戏和线性代数联系紧密,对于一个 的灯阵,用线性方程组+高斯消元法求解,时间复杂度为O(m×n)^3。相对于首行枚举算法复杂度O(2^n) ,线代算法的时间复杂度低很多。用线性代数求解关灯游戏是个很不错的选择。

        本文用最通俗的语言介绍线代求解关灯游戏原理。由于解释通俗化,细节之处难以严谨表述,说得不好的地方,请大神轻拍。

线性方程组求解关灯游戏的原理

问题:

        一个2×2灯阵,初始局面右下方3盏灯亮,左上角一盏灯不亮,如下图所示。请用线性代数求解,找到可以使得所有灯都熄灭的开关操作。


解:

        我们对四盏灯的开/关操作分别记为 x1、x2 、x3 、x4 ,如下图所示:


       我们用1代表操作,用0代表未操作,即 的取值为0或1。对四盏灯的亮/灭状态分别记为 L1、L2 、L3 、L4 ,如下图所示:


       我们用1代表亮着的灯,用0代表熄灭的灯,根据局面的初始状态,很显然有


接下来观察局面,

能影响L1灯的亮/灭状态的操作只有 x1、x2 、x3 ;

能影响L2灯的亮/灭状态的操作只有 x1、x2 、x4 ;

能影响L3灯的亮/灭状态的操作只有 x1、x3 、x4 ;

能影响L4灯的亮/灭状态的操作只有 x2、x3 、x4 ;


  • 5
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值