艺术画廊守护者

逼零集,点灯游戏和解线性方程组


axpokl 3年前写下了点灯游戏Flip Game的算法,感觉颇为神奇1。文章的算法很巧妙,但是算法的正确性并不显然。想象整个算法抽象成为了两个矩阵。 用了Light Chasing操作得到了. 解方程找到中的. 然后对进行light chasing操作获得的解。

这个算法是否是正确的?原先以为这应该非常显然,但自己要解释给人听的时候发现自己没法马上证出来。而且我一度错误的以为矩阵的秩都一样。 那么,是否有可能存在解,我们找到了个的解, 对进行操作之后得到的向量却无法满足?从一个高维空间映射到了一个低维空间,我们竟然没有丢失什么信息嘛?axpokl也并没有给出正式的证明。

点灯游戏和解是同一个问题。自然也会思考这算法如何延伸到解。

找了一堆文献后,发现算法里使用的性质在图上叫做逼零集(zero forcing set)。图上初始有一些蓝色的点。如果有一个蓝色的点,有且仅有1个非蓝色的邻点,则染色这个邻点为蓝色。如果不断染色直到整个图都能被染为蓝色,则初始的那些顶点被称之为逼零集。逼零集自然也可以被定义在有向图上,也能定义在 矩阵上──如果把矩阵看成领接矩阵。逼零集满足一系列不错的属性,在物理和电网监测方面都有用途。不过认真的讨论用逼零集解方程,以及计算复杂度,我们并没有找到这样的文章。

为此,本校的研一学生王建波,数学科学学院的博士生周思芸和我做了点工作。证明了以下的定理。

定理1

给定有个非元素的矩阵,和一个大小为的逼零集。可以在时间创建一个空间的数据结构。使得给任意, 可以在时间找到的解。

文章可以这里看到。我们也顺便将点灯游戏的复杂度降到了,这部分倒是非常显然。

我线性代数已经忘得差不多了,基本简单证明都不会搞。所以在这个问题上,两位学生做出了比我要多很多贡献。

为了解决这个问题,我终于知道了最general的解线性方程组的算法是使用LSP分解[1](非常像LUP分解)。对于一个矩阵,LSP分解的复杂度是

1 未解问题

  1. 找到最小逼零集是NP-hard的。是否存在快速的近似算法?
  2. 的部分是否可以提升到或者的算法?

References

[1]
C.-P. Jeannerod, LSP matrix decomposition revisited, École Normale Supérieure de Lyon, 2006.

  1. 我还在下面留言,表示 的算法应该存在。不过那时我没有意识到嵌套分割(nested dissection)只能用在满秩矩阵。而且在有限域里,只有随机算法存在。↩︎

许超发布
标签: