The Stein-Lov´asz Theorem 定理及应用
The Stein-lov´asz定理最早由数学家[Stein(1974)][1]和[Lov´asz (1975)][2]提出。其最理论基础经过发展,应用到了[编码理论][3]。
The stein-lov´asz Theorem 理论最基本的模型是解决集合的元素覆盖问题。使用贪心算法,以获得一个使用最少列元完成最大行覆盖的方案。下面给出简单的Stein-Lovasm定理简单证明过程。在台湾作者李光祥的研究下,将原有的至少有1个 ′1′ 的行元升级到了至少又t个 ′1′ 的行元问题[Guang-Siang Lee][5]。
并且就[Deng’s article][4]的理解,介绍了一种分离哈希函数(Separating Hash Families)的应用,本文就分离函数族结合Stein-Lovasm的证明方法重新复述,并且认为其中具有冗余的证明部分,提出了自己的解释。
定理描述
- 原问题
假设 (0,1) 矩阵A的大小是 N×M ,矩阵 A 的特征是每行至少具有v个1,每列最多a个1。假设现在从其中抽取一个子矩阵C⊂A ,大小是 N×K ,使得子矩阵的每行元素都不是全零行,证明 K 存在一个上界。
K≤N/a+(M/v)ln(a)≤(M/v)(1+ln(a))
原问题分析:能不能使用一种抽取列数尽可能少的方案,如果使用的列数目比给定的边界条件 N/a+(M/v)ln(a) 小,那么原来的问题就自然获得证明。
贪心算法
思路描述如下
- 初始化矩阵 (0,1) 矩阵 A ,每列的
′1′ 权重值 ci∈{ 1,2,3,......,a} ,然后按照列权重按照a,a-1,a-2,…,1执行降序排序,此时的矩阵命名为 Aa ; - 从最左边权重最高为a的第一列开始,删除这一列,并且这列对应的 ′1′ 所在相应的a个行也统一删掉。在删除1列和a行后的矩阵 A ,重新划定权重,继续寻找左边最高权重为a的列,继续删除。在删除
2 列和 2∗a 行后的矩阵 A ,重新划定权重,继续寻找左边最高权重为a的列,继续删除。重复Ka 次后,把最高权重为a的列及对应的 a∗Ka 行都删掉了,此时的矩阵变成了 Aa−1 ; - 以矩阵 Aa−1 开始,从左边权重最高为a-1的第一列开始,删除这一列,并且这列所对应的 a−1 行也统一删掉。删完后,重新划定权重,继续寻找左边最高权重为a-1的列,继续删除。重复 Ka−1 次后,把最高权重为a-1的列及其对应的 (a−1)∗Ka−1 行都删掉了,此时的矩阵变成了 Aa−2 .
- 重复步骤3,删除权重为a-2,a-3,…,1的列,直到矩阵 A1 变成了空。
- 将之前删除的所有列元集中起来重新组合成 N×K 矩阵, K=∑i:1→aKi
- 初始化矩阵 (0,1) 矩阵 A ,每列的
贪心算法的图例解释如附图1.
证明过程
按照贪心算法的步骤:
定义 Aa:=A ,其具有属性 (1) 、 (2) :
(1) 每行至少有v个1;
(2) 每列至多有a个1;
将 Aa 分成两部分 A⋅a 与 Aa−1 ,其中 A⋅a 将所有每列的列权重都是a,而且pairwise disjoint(集合相交为0)的集合合并在一起,并且 A⋅a 的列元数目是 Ka ,删除 A⋅a 及其 ′1′ 所在的行后,剩下的 Aa−1 行数目为 ka−1=N−a∗Ka ,列数目为 M−Ka 。在 Aa−1 中,每列元的最大权重自然变成了a-1,而且每行权重至少是v不变(但凡是对权重有影响的列删除操作,都已经将其行也删除过了,而对这些剩下的行元没有丝毫影响)。所以 Aa−1 的属性变成了:
(3) 每行至少有v个1;
(4) 每列至多有a-1个1;
按照同样的方法,把 Aa−1 剔除权重为a-1并且pairwise disjoint的列元,以及其所在的 ′1′