我正在研究给定here的算法,和 在某个地方,它声称它是有效的,并始终给出正确的结果。
但是,我尝试运行算法,并没有给出正确或有效的输出以用于以下模式。 对于5 x 5网格,其中(n)是灯号,0/1表示灯打开/关闭,1 ON和0 OFF。
(1)1 (2)0 (3)0 (4)0 (5)0 the output should be 1,7,13,19,25(Pressing this light will make the full grid OFF. But what I am getting is this
(6)0 (7)1 (8)0 (9)0 (10)0 3,5,6,7,8,10,13,16,18,19,20,21,23.
(11)0 (12)0 (13)1 (14)0 (15)0
(16)0 (17)0 (18)0 (19)1 (20)0
(21)0 (22)0 (23)0 (24)0 (25)1
虽然对于某些模式,它给我正确的输出如下。
(1)0 (2)0 (3)0 (4)0 (5)1 the output should be 5,9,13,17,21, and the algorithm is giving me correct result.
(6)0 (7)0 (8)0 (9)1 (10)0
(11)0 (12)0 (13)1 (14)0 (15)0
(16)0 (17)1 (18)0 (19)0 (20)0
(21)1 (22)0 (23)0 (24)0 (25)0
如果有人需要代码,请告诉我我可以发布。
如果这种方法总能给出正确和有效的结果,请有人告诉我吗?
答案 0 :(得分:0)
(我是您链接的代码的作者。)据我所知,代码是正确的(我确信使用高斯消除而不是GF(2)的高级算法是正确)。它所产生的解决方案可以保证解决这个难题,尽管它不一定是最小数量的按钮按下。我在写作中提到的“效率”指的是整体解决难题的时间复杂度(它可以在多项式时间内解决Lights Out网格,而不是尝试所有可能组合的指数时间暴力解决方案)而不是生成的解决方案的“效率”。
我实际上不知道任何有效的算法来找到需要最少按钮次数的解决方案。如果你找到一个,请告诉我!
希望这有帮助!