贪心算法、独立系统、拟阵
基本概念
独立系统与独立集
-
独立系统: 对于集合系统 (E,F) ,其中 E 是有限基本元素集合,F∈2E,若满足:
- (M1) ∅∈F
- (M2) 若 Y⊆X∈F,则 Y∈F。(包含的封闭性)
则 (E,F) 是一个独立系统。
-
独立集:F 中的元素称为独立集。
F 可以看作某种规则,F 中的元素就是满足规则的集合。比如定义规则 F={T⊆E,∣T∣≤K},(E,F) 就是一个符合定义的独立系统,独立集就是模不大于 K 的子集。
基、相关集与圈
- 基: 对于 F⊆E,若 T⊆F 是 F 上的独立集,且 ∀ e∈F, e∈/T,都有 T∪e 就不是独立集,则 T 是 F 上的极大独立集,又称 T 是 F 的一个基。
- 相关集:2E\F 中的元素称为相关集。
- 圈: 对于相关集 T,若 T 去掉任意一个元素都变成独立集,则 T 是极小相关集,又称 T 是一个圈。
在上面的例子中,基就是模等于 K 的子集,相关集就是模大于 K 的子集,圈就是模等于 K+1 的子集。
秩、下秩与秩商
对于 E 的子集 F⊆E,有:
- 秩(上秩):γ(F)=max{ ∣Y∣:Y⊆F, Y∈F }。即模最大的独立集的元素个数。
- 下秩:ρ(F)=min{ ∣Y∣:Y 是 F 的基 }。即模最小的极大独立集的元素个数。
- 秩商:q(E,F)=F⊆Eminγ(F)ρ(F)。即找到集合 E 的一个子集 F, 使得下秩和上秩的比值最小(感性理解就是下秩上秩差别最大),秩商表示这个比值。
容易想到,模最大的独立集也是极大独立集,所以其实上秩下秩分别是模最大和最小的基的元素个数;秩商小于等于1。
优化问题
我们前面提到过的很多组合优化问题都可以归结为独立集系统的问题。
记问题为 (E,F,C) ,其中 C:E→R+ 表示每个元素的权重。对 F∈E,记 C(F) 为 F 的权重,一般而言, C(F)=Σe∈FC(e)。我们有两种基本优化问题:
- 极大化问题 (E,F,C) :寻找权重最大的独立集(结果也是极大独立集)
- 极小化问题 (E,F,C) :寻找权重最小的极大独立集
组合优化问题的例子
最小生成树问题:
对于连通无向图 G=(V,E),边权 C:E→R+,求权重最小的生成树。
E 表示边集,F={F⊆E ∣ F 是无圈子图 },最小生成树问题是求权重最小的极大独立集。(极大独立集就是生成树)
最短路问题:
对于图 G=(V,E),边权 C:E→R+,求 s-t 的最短路。
E 表示边集,F={F⊆E ∣ F 是一条 s-t 路径的边子集 },最短路问题是求权重最小的极大独立集。(极大独立集就是一条 s-t 路径)
顶点覆盖问题:
对于无向图 G=(V,E),点权 C:V→R+,求权重最小的顶点覆盖(E 中任意一条边的两个顶点至少有一个在)。
E 表示点集,F={F⊆E ∣ F 是某个极小顶点覆盖的子集 },求权重最大的独立集。
最大权匹配问题:
对于无向图 G=(V,E),边权 C:E→R+,求权重最大的边集,其任意两边无公共顶点。
E 表示边集,F={F⊆E ∣ F 中的边无公共顶点 },求权重最大的独立集。
装箱问题:
对于物品集合,每个物品有相应体积,若干单位容量的箱子,求箱子用量最小的装箱方式。
设单个箱子的可行装填方案有 M 个,用 ti 表示一个单箱装填方案,则任一个装箱的可行解都是若干单箱方案的集合,使得每个物品一定出现在某个方案中。
则 E={t1,...,tM},每个方案的权重 C(ti)=1,F={F⊆E ∣ F 是某个装箱可行解的子集 },求权重最小的极大独立集。(极大独立集就是一个装箱可行解)
背包问题:
对于物品集合 E,每个物品的体积 C:E→R+,背包体积给定为 K,求权重最大的装包方案。
E 表示物品集合,F={F⊆E ∣ C(F)≤K },求权重最大的独立集。
旅行商问题:
对于无向图 G=(V,E),边权 C:E→R+,求权重最小的哈密尔顿圈。
E 表示边集,F={F⊆E ∣ F 是某个哈密尔顿圈的子集 },求权重最小的极大独立集。(极大独立集就是哈密尔顿圈)
贪心算法
对于 (E,F,C) 上极大化问题的贪心算法,有 Best in 和 Worst out 两种
Best in:
对权重进行排序: c1≥c2≥...≥cn
F=ϕ
for i = 1 to n
if F∪ei∈F
F:=F∪ei
Worst out:
对权重进行排序:c1≥c2≥...≥cn
F=E
for i = 1 to n
if F\ei 含基
F:=F\ei
-
证明使用Best-in求解极大化问题满足q(E,F)≤OPT(E,F,C)G(E,F,c)≤1,注意下界是与权c无关的。
证明:
Ej={e1,e2,...,ej} C: E→R+,c1≥c2≥...≥cn
贪心算法解:Gn,Gj=Gn∩Ej, j=1,2,...,n
最优解:On,Oj=On∩Ej, j=1,2,...,n
C(Gn)=j=1∑n(∣Gj∣−∣Gj−1∣)cj=j=1∑n∣Gj∣(cj−cj+1)≥j=1∑nρ(Ej)(cj−cj+1)[Gj是Ej的⼀个极大独立集]≥qj=1∑nr(Ej)(cj−cj+1)[q(E,F)=F⊆Eminγ(F)ρ(F)]≥qj=1∑n∣Oj∣(cj−cj+1)[γ(F)=max{∣Y∣,Y⊆F,Y∈F}]=q C(On)
证下界是紧的:
由秩商的定义, ∃F,γ(F)ρ(F)=q(E,F),即 ∃F , F 的基 B1,B2 满足 ∣B2∣∣B1∣=q(E,F)
定义权重:c(e)=1,e∈F; c(e)=0,e∈/F 。把 B1 的元素排在前面 e1,e2,...,e∣B1∣,... 。使用Best in,会选择前 ∣B1∣ 个元素,而最优解可以选 ∣B2∣ 个元素。
因此贪心算法的近似比
q(E,F)≤OPT(E,F,C)G(E,F,C)≤1
-
Worst out类似:Worst-out求解极小化问题,将元素按照权重从大到小排序,依次尝试去掉一个元素,如果还有一个基剩余那么就去掉该元素,满足1≤OPT(E,F,c)G(E,F,c)≤maxX⊆E∣X∣−r∗(X)∣X∣−ρ∗(X),其中X是E的一个任意非独立子集,证明在对偶系统部分。
考虑下面两个问题:极小覆盖集的最大权问题,极大独立集的最小权问题,可以发现只有在best-in用在极大化问题,worst-out用在极小化问题时才可以保证上述两个约束,当然特例是拟阵,两个算法相同
对偶独立系统
定义:
(E,F)→(E,F∗)F∗={X⊆E ∣ ∃F的一个基B,满足X∩B=∅}
性质:
-
(E,F∗) 是一个独立集系统:证明满足独立集系统的定义即可
-
B 是 (E,F) 的基, 当且仅当, E\B 是 (E,F∗) 的基:
若 A 是 (E,F∗) 的一个基,则 ∃B∈F,A∩B=∅并且B是基
由于 A 是极大独立集, 再加任何一个就不是独立集,A=E\B
-
(E,F∗∗)=(E,F)
∀X∈F∗∗⇔∃(E,F∗)的一个基B∗,X∩B∗=∅⇔∃(E,F)的一个基B,X∩(E\B)=∅⇔∃(E,F)的一个基B,X⊆B,X⊆F
独立集系统的对偶主要用于分析Worst out极小化问题,可以证明:
1≤OPT(E,F,C)G(E,F,C)≤maxF=∅∣F∣−γ∗(F)∣F∣−ρ∗(F)
证明与极大化问题类似.
Gj∪(E∖Ej)含有E的基,并且任取e∈Gj,Gj∪(E∖Ej)∖{e}就不再是E的基。
E∖(GJ∪(E∖Ej))=Ej∖Gj是F∗在Ej上的基,因此∣Ej∣−∣Gj∣≥ρ∗(Ej)。
考虑On⊆E∖(Ej∖Oj)且是一个基,所以Ej∖Oj∈F∗,因此∣Ej∣−∣Oj∣≤r∗(Ej) 。
因此我们得到了∣Gj∣≤∣Ej∣−ρ∗(Ej)∣Oj∣≥∣Ej∣−r∗(Ej),那么令λ=maxX⊆E∣X∣−r∗(X)∣X∣−ρ∗(X),则有∣Gj∣≤λ∣Oj∣,带入best-in证明即可。
秩商的估计式
如果对任意A∈F, e∈E,A+e最多P个圈,则q(E,F)≥1/p。
![1](data:image/gif;base64,R0lGODdhAQABAPAAAMPDwwAAACwAAAAAAQABAAACAkQBADs=)
拟阵
拟阵是一类特殊的独立集系统: (E,F) 满足:
- (M1): ∅∈F
- (M2): 若 X∈F, ∀Y⊆X,Y∈F
- (M3): 若X,Y∈F,∣X∣>∣Y∣,则∃e∈X\Y,Y∪{e}∈F , 也就是说 Y 可从X扩充
(M3’): 若X,Y∈F,∣X∣=∣Y∣+1,则∃e∈X\Y,Y∪{e}∈F, 也就是说 Y 可从X扩充
(M3"): ∀F⊆E, F 上的任何基有相同的元素个数 (要注意这里不只是 E 上的基,而是 E 的任意子集上的基)
M3, M3’, M3" 是相互等价的,只要满足其中之一的独立集系统就是拟阵。
例子:
-
向量
E={v1,v2,...,vm}, F={Z⊆E∣Z是线性无关组}
-
相同的模
E 是有限集合,K 是一个给定的正整数, F={X⊆E∣ ∣X∣≤K}
-
图拟阵
E 是无向图 G 中的边集, F={X⊆E,X构成一个森林}
可以看到很多常见的体系都是一个拟阵,如矩阵与线性无关的概念,森林与树。又或者说,拟阵是这些体系的一个抽象,从而分析它们的共性。
拟阵与贪心算法
可以简单得到,拟阵的秩商是 1,根据前面独立集系统的分析,贪心算法的近似比为1。因此,在拟阵中使用贪心算法可以得到最优解。[ 所以最小生成树问题贪心就可以得到最优解。]
用秩商分析得到这个结论是显然的,下面用另一种方法证明拟阵上贪心算法可以得到最优解(来自算法导论)
引理1: (拟阵具有贪心选择性质) 假定 M=(S,I) 是一个加权拟阵,加权函数为 $ w$ , 且
S 已按权重单调递减顺序排序. 令 x 是S 中第一个满足 {x} 独立的元素( 如果存在)。如果存在这样的 x , 那么存在 S 的一个最优子集 A 包含x.
证明:
- 如果不存在这样的 x , 唯一的独立子集是空集,引理显然成立。否则,令B 为任意非
空最优子集. 假定 x∈/B。
- B 中元素的权重都不大于 w(x): 我们观察到 y∈B 意味 ${y} 是独立的,x$ 是第一个形成独立集的元素,因此对任意 y∈B, 有 $w(x) \ge w(y) $。
- 构造集合 A . 以 A={x} 开始,集合 A 是独立的。根据 (M3): 若X,Y∈F, ∣X∣>∣Y∣, 则∃e∈X\Y,Y∪{e}∈F, 反复寻找 B 中一个可以加入 A 中的新元素, 同时保持 A 的独立性,直至 ∣A∣=∣B∣ . 此时, A 和B 的区别仅在 A 包含 x ,而 B 包含另一个元素 y . 由于 w(x)≥w(y) ,所以 w(A)=w(B)−w(y)+w(x)≥w(B) 。
- 由于集合B 是最优的,因此集合A 必然也是最优的,且包含 x。
引理2: M=(S,I) 是一个拟阵. 如果 x 是 S 中一个元素, 且它不是 ∅ 的一个扩展.
那么它也不是 S 的任何独立子集 A 的扩展.
证明:由独立集的定义,独立集中的任何元素 x 自身形成的集合 {x} 也是一个独立集。因此若 {x} 不是独立集,则 A∪{x} 也不是独立集。
引理2表明, 任何元素如果首次不能用于构造独立集,则之后也不可能被用到。因此,贪心算法跳过 S 中那些不是 ∅ 的扩展的起始元素,不会导致错误结果。
引理3: (拟阵具有最优子结构性质) M=(S,I) 是一个加权拟阵,x 是 S 中第一个被贪心算法选出的元素,则接下来寻找一个包含 x 的最大权重独立子集的问题归结为寻找加权拟阵 M′=(S′,I′) 的一个最大权重独立子集的问题, 其中
S′={y∈S:(x,y)∈I}I′={B⊆S−{x}:B∪{x}∈I}
M′ 的权重函数就是 M 的权重函数,但只局限于S’ 中元素. 我们称 M′ 为 M 在元素 x 上的收缩 ( contraction)
证明: 若 A 是 M 的任意一个包含x 的最大权独立子集,则 A′=A−{x} 是 M′ 的一个独立子集。同时,任何 M′ 的独立子集 A 可生成 M 的独立子集 A=A′∪{x} . 均有 w(A)=w(A′)+w(x).因此 M 的包含 x 的最大权重独立子集必然生成 M′ 的最大权重独立子集.反之亦然.
定理: (拟阵上贪心算法的正确性) 若 M=(S,I) 是一个加权拟阵,加权函数为 $ w$ .那么贪心算法返回一个最优子集
证明:由引理2, 贪心算法跳过 S 中那些不是 ∅ 的扩展的起始元素可永远丢弃. 因为这些元素不会被用到。一旦贪心算法选出第一个元素 x, 引理 1 表明算法将 x加入 A 不会导致错误结果, 因为必然存在包含 x 的最优子集。 引理 3 说明剩下的问题就是如何寻找拟阵 M′ 的最优子集, M′ 是 M 在 x 上的收缩。将 A 设为 {x} 后.我们可以将之后的所有步骤解释为拟阵 M′=(S′,I′)上的操作,因为对所有集合 B∈I′ , B 在 M′ 中独立当且仅当 B∪{x} 在 M 中独立。因此, 贪心算法随后的操作将会找到M’ 的一个最大权重独立子集。而其所有操作的总体效果就是找到 M 的一个最大权重独立子集。
拟阵与独立系统
独立集系统的交: (E,F1),(E,F2) 的交为 (E,F1∩F2)
任何一个独立集系统⼀定是有限个拟阵的交。构造法证明:
记独立集系统为 (E,F) , 设独立集系统有 k 个圈: c1,c2,...,ck
令 Fi={X⊆E∣X⊉ci} , 可以证明 (E,Fi) 是一个独立集系统。
[ 这里很容易弄晕,解释一下。前面说过独立集系统表示了一个集合与一个规则,在这里不同的 Fi 表示了不同的规则,因此形成了不同的独立集系统,每个独立集系统都确定了哪些是独立集哪些不是。 (E,Fi) 这个独立集系统表示的是:如果一个集合不包含 ci 中的所有元素,则它是一个独立集。对于第 i 个独立集系统,独立集可以包含其他圈。圈的概念是极小相关集,但这里的相关集是独立集系统 (E,F) 中的相关集,在当前的独立集系统中,包含 ‘圈’ 的集合仍可以是独立集 ]
下证, (E,Fi) 是拟阵,用 M3": ∀F⊆E, F 上的任何基有相同的元素个数。对于 ∀F⊆E
- F⊉ci ,则整个集合 F 是一个独立集,因此它就是 F 上的极大独立集, F 上的基有相同的元素个数
- F⊇ci ,对 ∀e∈ci , F\e 是极大独立集, F 上的基有相同的元素个数
现证 F=∩i=1kFi
-
F⊆∩i=1kFi:
∀X∈F,X 不包含任何圈, X∈Fi,i=1,...,k ⇒X∈∩i=1kFi
-
F⊇∩i=1kFi
∀X∈Fi,X不包含圈 ci 。∀X∈∩i=1kFi⇒X不包含任何圈 ⇒X∈F
[ 需要指出的是,这里只是用构造法说明了任何⼀个独⽴集系统都可以表示为有限个拟阵的交,但用这种构造不一定能分解为最少的拟阵,在实际应用中不一定能得到紧的解 ]
少数的例子:
对于二部图 G=(A∪B,E), (E,F) 表示图的匹配的独立集系统。
F1={X⊆E,∣δX(u)∣≤1,∀u∈A}F2={Y⊆E,∣δY(u)∣≤1,∀u∈B}
其中 δX(u) 表示 u 的度数,只考虑 X 中的边。可以证明, (E,F1),(E,F2) 是拟阵且 F=F1∩F2 。
若独立集系统是 k 个拟阵的交,则贪心解的近似比至少为 1/k
记独⽴集系统为 (E,F),是 k 个拟阵 (E,Fi) 的交。
证:即证秩商 q(E,F)≥1/k 。对 ∀F⊆E, 考虑 (E,F) 在 F 上任意两个不同的极⼤独⽴集 A,B ∣B∣≥∣A∣ , 只需证 ∣B∣≤k∣A∣
Ai 是 (E,Fi) 在 A∪B 上含 A 的极大独立集,容易得 A=⋂i=1kAi
Bi 是 (E,Fi) 在 A∪B 上含 B 的极大独立集,B=⋂i=1kBi
∀e∈B\A, ,由于 e∈/A, 有 e∈/⋂i=1kAi, 则 e 不可能同时在每个 Ai , e 最多同时出现在 k−1 个 Ai\A 中。每一个 B\A 中的元素最多在 k−1 个 Ai\A 中,因此有 k−11∑i=1k∣Ai\A∣≤∣B\A∣ , 于是:
∑i=1k∣Ai\A∣≤(k−1)∣B\A∣≤(k−1)∣B∣∑i=1k∣Ai∣−k∣A∣≤(k−1)∣B∣
由于 (E,Fi) 是拟阵, Ai,Bi 是在 $A\cup B $ 上的基,有 ∀i,∣Ai∣=∣Bi∣ .因此
k∣B∣≤∑i=1k∣Bi∣≤∑i=1k∣Ai∣≤k∣A∣+(k−1)∣B∣∣B∣≤k∣A∣
对 ∀F⊆E, F 上任意两个不同的极⼤独⽴集A,B 有 ∣A∣≤∣B∣≤k∣A∣, 因此秩商最小为 1/k ,贪心解的近似比至少为 1/k 。