确定是否可以在给定范围内打开灯泡

时间:2018-12-02 12:58:14

标签: algorithm

假设您有N个灯泡,这些灯泡是连续的。您还拥有ML形式的R开关,可用于在L至{{1}范围内切换灯泡的状态。 }(包括两者)。

如何通过使用这些R开关中的任意一个来确定是否存在打开所有灯泡的方式? (我只是想知道是否有可能)

一种简单的方法是尝试所有可能的开关组合,然后检查灯泡是否全部打开。但这是极其低效的。有没有更好的方法可以做到这一点?

灯泡和开关的数量限制为M

示例:

如果有1000个灯泡和10个开关在3176范围内切换灯泡,76,那么我们可以只使用一次所有开关,然后将所有灯泡从10转到1

1 个答案:

答案 0 :(得分:1)

梅林的权利。如果通过部分枢轴实现LU分解,则通过仔细的枢轴选择,可以确保减少的行始终是间隔。真正引人注目的是,在进一步分析中,我们甚至不需要进行分解。实际上,只需确定图中的1N+1之间是否存在路径,其中每个开关L..R都会引起一条边{L, R+1}