子模态定义¶
子模态是集合函数的一种性质。一个集合函数f(x)的定义要满足下面这个性质
即f(x)的定义域为集合Ω的任何一个子集,值域为实数集。而这个集合函数如果要满足子模态性质的话,还需要满足下面三个等价条件中的任何一个。
-
对于任何一个X,Y\subset Ω且X\subset Y,以及对任何一个x\in Ω \\ Y,下面的式子一定成立。
f(X\cup {x})-f(X)\geq f(Y\cup {x})-f(Y) -
对于任何一个X,Y\subset Ω ,下面的式子一定成立。
f(X)+f(Y)\geq f(X\cup Y)+f(X\cap Y) -
对于任何一个X\subset Ω及x_1 ,x_2 \in Ω∖X,下面的式子一定成立,
f(X\cup {x_1})+f(X\cup {x_2})\geq f(X\cup {x_1,x_2})+f(X)
读者可以很轻松的验证这几个条件是等价的,这里就不去证明了。
根据这些条件,我们可以得出下面这个结论。设f_1 (x),f_2 (x),\cdots,f_k (x)都是有子模态性质的函数,c_1 ,c_2 ,\cdots,c_k 是非负实数,则下面这个函数
仍然是子模态的。即多个子模态函数的非负线性组合仍然是子模态函数。这个推论可以很简单的验证出来,这里也就懒得做证明的。
子模态与贪心方法¶
接下来的问题就是,子模态这个函数性质有什么用。简单来说子模态这个函数性质在组合优化中很有用。特别是针对保持|x| 的大小固定,然后去求f(x)的最大值这种问题。 这个子模态性质可以保证我们在贪心求解这个问题得到的解不会差,事实上贪心解f(x)的值不会小于(1−1/e )*OPT,其中OPT为最优解。在该问题的贪心求解过程中,我们是从0开始构建目标集合x的。每一步我们将一个新的元素加入到x中,迭代k步。我们以X_i 来代表迭代i次之后的x集合,初始x_0 =\emptyset。我们对下一个要加入的节点u的选取的贪心规则为
现在我们要证明在此贪心规则下
为此,我们先证明一个引理
其中B={b_1,\cdots,b_k}.此时我们定义Bi=b_1,\cdots,b_i,则
设最优解为T={t_1,\cdots,t_k},\delta_i=f(X_i)-f(X_{i-1}),根据上面这个不等式我们可以推出
综上我们可以得出这个结论
所以
通过上面的递推式,我们可以给出f(X_i)
这个是简单的递推数列求通项,这里也就懒得证明了。所以
这就是贪心大法好的证明。
子模态的应用¶
下面我就以影响最大化这个例子来说明这个东西还是有点用的。
影响最大化(influence maXimization)这个问题是定义在一个有向无环图G=(V,E)上的。对于这个图的任意一条边(v,w),我们都有这条边的权值p_{vw} 。p_{vw} 用来代表v对w的影响能力,这个影响能力是一个概率,因此p _{vw} \in [0,1]。对于边(v,w)不存在的时候,p_{vw} 定义为0.
这个图类似于一个传播网络,或者感染网络。现在我们来定义影响函数f(X),这是一个集合函数。为了表征这个函数,我们需要定义一个随机过程S。初始时刻0,我们给定输入P=X_0 ,P表示活动集合。在时刻t,我们对\forall v \in X_t做如下操作:\forall w\in V/P,我们以概率p_{vw} 将节点w加入到X_{t+1} 中。此操作完成之后,检查X_{t+1} 是否为空。如果为空,则返回P;否则P=P \cup X_{t+1} ,然后重复上面的操作。这个模型叫做independent Cascade Model,由Goldenberg, Libai,and Muller提出来的(这个模型是不是跟微博上的转发非常像)。
最后我们来表征f(X),就是初始集合X该过程S下所返回的集合P的大小的平均值。
影响最大化问题就是在固定集合X大小k的情况下,最大化f(X)。我们可以证明这个优化问题是NPHard 的。该问题的简化形式为p_{vw} 都是1,此时该问题不再是一个随机过程。每个初始点v的可达集是固定的,我们可以表示为R_v 。因此,原问题等价于在集合R_1 ,\cdots,R_{|v|} 中找到k个集合,使得
但是,如何证明这个贪心是有效的一个难题,因为这是一个随机过程,每个点的增益在每一个时刻都是一个不同的随机变量,函数表达式也不是一个解析式。
我们现在先从简化问题出发,然后再去求解原问题。而简化问题就是我们之前提到的集合覆盖问题f(S)=|\cup i\in S x_i |,这个问题其实是子模态的。证明也很简单,直接对集合进行分割就行了,这里就省去了具体的证明。我们再回归到原问题,在t时刻节点v引发w的概率为p_{vw} ,这是一个01分布。事实上这个结果是0还是1与时刻t是无关的,所以我们可以预先生成好这个随机变量。对所有的边进行提前生成随机变量之后,我们就得到了一个图N.N的拓扑结构与原图一致,不同的地方就是p_{vw} 。
而当v引发w时,p_{vw} =1,否则就等于0.在N中的影响最大等价于之前讨论的集合覆盖问题。设生成图N_i 的概率为p_i ,设f_i(X)为在图N_i 上寻找影响最大的解,则
可以看出这是多个子模态函数的非负线性组合,因此f(X)是子模态的。又根据我们在之前证明贪心法在子模态函数上是可行的,所以贪心法对影响最大问题是可行的。
参考链接¶
-
http://www.cs.cornell.edu/home/kleinber/kdd03-inf.pdf 业界大佬kleinberg ,请收下我的膝盖。