浅谈子集系统、拟阵与贪心

来源:互联网 发布:软件开发java 高级证书 编辑:程序博客网 时间:2024/05/23 07:25

拟阵前先谈另一个东西,子集系统。
子集系统是一个有序二元组M=(S,L),它必须满足以下3个条件:
1.S是一个有限集。
2.L是S的一些子集构成的有限非空子集。
3.遗传性:对∀B∈L,∀A⊆B,有A∈L(可知∅必须是L的元素)。
S中每个元素被赋予一个正值w(s)。
举个例子,一个带权无向图G的边集为E,它的所有生成森林集合为J,则(E,J)为一个子集系统。

独立集
对于U⊆S,如果U∈L。则U为独立集

对于独立集A,若存在x∈S,满足x∉A且A∪x∈L,则称A为可扩展的。不可扩展的为极大独立集。

极大独立集的基数为它所包含的元素个数。

前一个例子中,G 的所有生成树是所有的极大独立集,它们的基数都为|V|- 1,|V| 为G 的顶点数。

拟阵是一个子集系统,但它还必须满足第4个条件:交换性,也称为独立扩展公理,对于∀A∈L,B∈L,|A|<|B|,存在一个x∈B-A,使A∪{x}∈L。
举个例子,S为一个班的所有学生,L为若干张这个班级部分学生名单的集合。由遗传性可得,从一张名单中选若干个同学组成的子名单仍存在于名单集合中。由交换性可得,若名单A上的人数少于B,则必然可以从B中选一个人不属于A,将这个人加入A中后形成的新名单仍然存在于名单集合中。

对于拟阵M=(S,L),L中的极大独立集称为拟阵的基。
用β表示基的集合,则β非空且它满足基交换性,即若A,B∈β,A≠B,a∈A-B,则∃b∈B-A使得A-{a}+{b}∈β。
有基交换性得每个基大小相同。拟阵的秩就是基的大小,拟阵的并仍是拟阵。若S中元素带权,则M为带权拟阵。
对于U⊆S,如果r(u)=max{|x|:x⊆U,且x为独立集},则称r(U)为U的秩,r称为拟阵的秩函数。

子集优化问题:在子集系统中选一个元素E∈L,使得w(E)最大,w(E)=eEw(e)

求权值最大的极大独立集:将所有s∈S按w(s)从大到小排序,能加就加。但这个算法只在拟阵中成立。

GreedyAlgorithm(M, w) {    A := 空集;    根据w按非增长顺序对S[M]排序;    for 每个x∈S[M],根据w(x)的非增长顺序 do        if(A∪{x}∈L[M]) then A := A∪{x};    return A;}

定理:
1.拟阵M=(S,L)的所有极大独立集都有相同大小。
2.设加权拟阵M=(S,L)的权函数为w且S 已按权非升排序。设x是第一个使得{x}独立的元素,若这样的元素存在,则存在一个包含x的最大权独立子集。
3.设x是对于加权拟阵M=(S,L)由定理2中所选择的S的第一个元素,则剩下问题可归结为求加权矩阵M’=(S’,L’)的最大权独立集问题,其中S’={y|y∈S且{x,y}∈L},L’={B|B⊆S-{x}且B∪{x}∈L}

由交换性可证定理1。
设B是任意非空的最优子集,且x∉B,∀y∈B,w(x)≥w(y)。构造集合A={x},由交换性,可反复地在B中找出新元素加入A中直到|A|<|B|,且A仍是独立集。因此∀y∈B,使得A=B-{y}+{x}。w(A)=w(B)-w(y)+w(x)≥w(B)。定理2得证。
对于定理3,在M’=(S’,L’)中的最优解X’,X’∈L’,由L’定义得X’∪{x}∈L。M=(S,L)中包含x的最优解X,X-{x}⊂S-{x}且X∈L,即X-{x}∈L’且为L’中最有解。定理3得证。

定理3给出了一个递归算法来解决该问题。
定理3中递归选择的元素显然不增。
贪心算法所选择的元素就是定理3中递归算法所选择的元素可由归纳法证明,即贪心算法在拟阵中是正确的。

那么我们现在就可以用拟阵证明部分背包问题和MST。

对于部分背包问题,我们首先进行一步转化:将体积为V,单位价值为W的物品变成V个体积为1,价值为W的物品。定义一个M=(S,L):
(1).S是所有物品的集合。
(2).L={x:x⊆S,|x|≤MAX}
这个M显然满足拟阵的前两个条件。根据L的定义,对∀x∈L,∀y⊆x,满足|y|≤|x|≤MAX,有y∈L,因此M满足遗传性,是一个子集系统。对于∀A∈L,B∈L,|A|<|B|,随意选取一个x∈B-A,令C=A∪x,显然有|C|=|A|+1≤|B|,所以M满足交换性。因此M是一个拟阵。
那么背包问题目标是使权值最大,上面提到了S是所有物品的集合,将S的任意元素x的权值w(x)定义为x的价值,那么问题就转化成了求背包问题的拟阵最大独立集。显然权值最大的独立集是极大独立集。

对于最小生成树问题,考虑无向图G=(V,E),我们可以定义M=(S,L):
(1).S是边集E。
(2).L={x:x⊆E且x组成的图无环}
这个M显然满足拟阵的前两个条件。根据L的定义,对∀x∈L,∀y⊆x,假设y形成环,则x形成环,矛盾,所以y不形成环,所以y∈L,因此M满足遗传性。考虑∀A∈L,B∈L,|A|<|B|,我们将A组成的森林命名为GA,B组成的森林命名为GBGA有|V|-|A|个连通分量,GB有|V|-|B|个连通分量。|A|<|B|,所以|V|-|B|<|V|-|A|,所以GB中存在的一个连通分量T,T中的点在GA中不连通。那么T中必然存在一条边x连接GA中不同的连通分量的边,显然x∉A且x∈B,且A∪{x}无环,即A∪{x}∈L。所以M满足交换性。因此M是一个拟阵。
背包问题目标是使权值最小,如何将最下转化为求最大?我们将权值去负,但是此时不合定义。但是由于权值是一个相对概念,所以我们可以将所有负权加上一个极大值,那么问题就转化为了求新图的最大生成树了。对于S的每一个元素x(x是图上的一条边),使w(x)=-g(x)+delta,其中g(x)为x的边权,delta>边权最大值。显然w(x)>0。这样,求最小生成树就转化为了求拟阵的权值最大独立集了。

原创粉丝点击