Skip to content
On this page

拟阵与贪心算法

拟阵可以用来分析和阐释贪心算法成立的原因。

子集系统

在了解拟阵前,需要先了解子集系统。子集系统定义在有序二元组上,满足下面几个条件

  • 基础集合S是一个有限集。
  • L是由S子集构成的集合(注意L是集合的集合)且L非空。
  • 遗传性:,如果,则(即L中元素的子集必在L中)。

注意由第二、三点可知,空集必然在L中(包含空集的集合不是空集🤣)。

例子:集合可以是

拟阵

拟阵是特殊的子集系统,它需要满足交换性(又称独立扩展公理):

是{1,2,3}的子集系统,但是不是一个拟阵。

是拟阵。

中元素带权值,则为带权拟阵。

拟阵的并仍是拟阵。

独立集

独立集是拟阵中的元素,仍然用表示子集系统。对于,如果,则为独立集。对于独立集,若存在,满足,则称为可扩展的。不可扩展的独立集为极大独立集

它有几个性质:

  • 空集一定是独立的,也就是说,(与子集系统定义的遗传性的推论相符)。
  • 遗传性:每个独立集的子集是独立的(与子集系统定义遗传性相符)。
  • 交换性:如果的两个独立集,有更多的元素,则在中存在一个元素,当其加入时得到一个比更大独立集 (与拟阵定义中的交换性相符)。

关于拟阵和极大独立集有如下定理:

  1. 拟阵的所有极大独立集都有相同大小。

  2. 设加权拟阵的权函数为已按权非升序排序。设是第一个使得独立的元素,若这样的元素存在,则存在一个包含的最大权独立子集。

  3. 是对于加权拟阵由定理2中所选择的S的第一个元素,则剩下问题可归结为求加权矩阵的最大权独立集问题,其中

定理的证明思路:

  1. 由交换性可证定理1。

  2. 是任意非空的最优子集,且。构造集合,由交换性,可反复地在中找出新元素加入中直到,且仍是独立集。因此,使得。定理2得证。

  3. 对于定理3,在中的最优解,由定义得中包含x的最优解X,,即且为中最优解。定理3得证。

定理二和定理三本质提供了一个递归的算法,由它利用数学归纳法可以推出拟阵上使用贪心算法的正确性。

子集优化问题与贪心算法

子集优化问题:给集合中每个元素赋予一个正值,在子集系统中选一个元素,使得最大,其中

该优化问题的解决方法是求权值最大的极大独立集。在拟阵中,可以使用贪心算法。将基础集合中的所有元素从大到小排序,能加就加入到子集中的元素,就把它加入到中。回顾最小生成树问题的Kruskal算法和Prim算法,是不是就是这么解决的?注意:权值和最小等价于这里的最大,可以把权值视为负数就等价了。

GreedyAlgorithm(M, w){
     A := ∅;
     (S,L) := M;
     Sort S to the descending order;
     For each x in S do
         If(A∪{x} in L) 
         	Then A := A∪{x};
     Return A;
}

案例分析:部分背包

给定一个最大载重量为T的背包和N种物品。已知第种物品最多放入,其单位价值为,确定一个方案,使得装入背包中的所有物品总价值最大。

对于部分背包问题,我们首先进行一步转化:将体积为,单位价值为的物品变成个体积为1,价值为的物品。定义

  • S是所有物品的集合。
  • 这个M显然满足拟阵的前两个条件。

根据的定义,,满足,有,因此满足遗传性,是一个子集系统。

对于,随意选取一个,令,显然有,所以M满足交换性。因此M是一个拟阵。

背包问题目标是使权值最大,上面提到了是所有物品的集合,将的任意元素的权值定义为的价值,那么问题就转化成了求背包问题的拟阵中权值最大的独立集,也就是上面的子集优化问题的变种。显然权值最大的独立集是极大独立集,同时因为是拟阵,故可以用贪心算法求解。

案例分析:最小生成树(MST)

一个有 个结点的连通图的生成树是原图的极小连通子图,且包含原图中的所有$ n$ 个结点,并且有保持图连通的最少的边。即在一给定的无向图 中, 代表连接顶点 $u $与顶点 的边,而 代表此边的权重,若存在 的子集且为无循环图,使得 最小,则此 的最小生成树。

对于最小生成树问题,考虑无向图,我们可以定义

  • 是边集
  • 组成的图无环

这个显然满足拟阵的前两个条件。

根据的定义,对,假设形成环,则形成环,矛盾,所以不形成环,所以,因此满足遗传性。

考虑,我们将组成的森林命名为组成的森林命名为个连通分量,个连通分量。,所以,所以中存在的一个连通分量中的点在中不连通。那么中必然存在一条边连接中不同的连通分量的边,显然,且无环,即。所以M满足交换性。因此M是一个拟阵。

因为M是一个拟阵,故可以用贪心算法解决它的子集优化问题。

补充:拟阵的秩

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

对于拟阵中的极大独立集称为拟阵的基

表示基的集合,则非空且它满足基交换性,即若,则使得。 基交换性得每个基大小相同。

拟阵的秩就是基的大小。

子集的秩通过秩函数定义,它有以下几种性质:

  • 秩函数的值总是非负的
  • 对于任意的子集,有
  • 对于的任意两个子集 ,有,这意味着秩函数是一个子模函数(见补充:子模函数)
  • 对于任意集合A和元素x,有

子集A的元素个与其秩的差叫作子集的零化度或补秩,它是从A中移除元素使得A成为独立集的最小移除数量。

基础集合在拟阵上的零化度叫做拟阵的零化度或的补秩

补充:次模函数

次模(submodular)函数:又称“子模函数”或“亚模函数”,次模函数具有次模性(submodularity),它是经济学上边际效益递减(property of diminishing returns)现象的形式化描述(若对于连续函数,单调递增时,二阶导数递减)。

TIP

次模函数定义:

给定一个集合函数 ,其将有限集V的一个子集映射为一个实数。

如果对于任意S,满足:

则称是次模函数。

从边际效益递减的角度考虑,次模函数还有一种等价定义

TIP

次模函数定义:

从边际效益递减的角度考虑,次模函数还有一种等价定义:对任意的,并且

上式指出,当集合越来越大,s的“价值”将越来越小,正是边际效益递减的特性。这个现象在自然界普遍存在,例如:香农熵函数就是随机变量集合上的次模函数。当时有,则称该次模函数是单调的(monotone)。 更进一步,次模性是convexity(凸性)的离散模拟。由于convexity使得连续函数更容易最优化,因而次模性在组合优化中重要作用。当目标函数是次模函数时,许多组合优化问题能够在多项式时间内得到最优解或近似解。次模函数最大化被证明是一个NP-hard问题,幸运的是,存在高效并且解的质量有保证的近似算法。一个流行的结果是:最大化一个单调非负的带基数约束(cardinality constraint,即对子集S大小的约束)的次模函数,贪心算法至少能够达到 的结果,其中表示问题的最优解,1-1/e大约是0.63。

References

基于次模函数最大化的方法: https://blog.csdn.net/hohaizx/article/details/82936743

浅谈子集系统、拟阵与贪心:https://blog.csdn.net/MaverickFW/article/details/78207719