Processing math: 3%

Submodual

子模态定义

子模态是集合函数的一种性质。一个集合函数f(x)的定义要满足下面这个性质

f:2ΩR

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 是非负实数,则下面这个函数

\begin{equation}F(x)=\sum_{i=1}^{k}{c_if_i(x)}\end{equation}

仍然是子模态的。即多个子模态函数的非负线性组合仍然是子模态函数。这个推论可以很简单的验证出来,这里也就懒得做证明的。

子模态与贪心方法

接下来的问题就是,子模态这个函数性质有什么用。简单来说子模态这个函数性质在组合优化中很有用。特别是针对保持|x| 的大小固定,然后去求f(x)的最大值这种问题。 这个子模态性质可以保证我们在贪心求解这个问题得到的解不会差,事实上贪心解f(x)的值不会小于(1−1/e )*OPT,其中OPT为最优解。在该问题的贪心求解过程中,我们是从0开始构建目标集合x的。每一步我们将一个新的元素加入到x中,迭代k步。我们以X_i 来代表迭代i次之后的x集合,初始x_0 =\emptyset。我们对下一个要加入的节点u的选取的贪心规则为

\begin{equation}u=arg max_{u}{f(X_{i-1}\cup { u})}\end{equation}

现在我们要证明在此贪心规则下

\begin{equation}f(x)\geq (1-\frac{1}{e})*OPT\end{equation}

为此,我们先证明一个引理

\begin{equation} f(A\cup B)-f(A)\leq \sum_{j=1}^{k}{[f(A\cup {b_j})-f(A)]}\end{equation}

其中B={b_1,\cdots,b_k}.此时我们定义Bi=b_1,\cdots,b_i,则

\begin{equation}\begin{split}f(A\cup B)-f(A)&=\sum_{i=1}^{k}{[f(A\cup B_i)-f(A\cup B_{i-1})]}\\&=\sum_{i=1}^{k}{[f(A\cup B_{i-1}\cup {b_i})-f(A\cup B_{i-1})]}\\&\leq\sum_{j=1}^{k}{[f(A\cup {b_j})-f(A)]}\end{split}\end{equation}

设最优解为T={t_1,\cdots,t_k},\delta_i=f(X_i)-f(X_{i-1}),根据上面这个不等式我们可以推出

\begin{equation}\begin{split}f(T)&\leq f(X_i\cup T)\\&=f(X_i\cup T)-f(X_i)+f(X_i)\\&\leq\sum_{j=1}^{k}{[f(X_i\cup {t_j})-f(X_i)]}+f(X_i)\\&\leq\sum_{j=1}^{k}{[\delta_{i+1}]}+f(X_i)\\&=f(X_i)+k\delta_{i+1}\end{split}\end{equation}

综上我们可以得出这个结论

\begin{equation}\delta_{i+1}\geq \frac{1}{k}[f(T)-f(X_i)]\end{equation}

所以

\begin{equation}\begin{split}f(X_{i+1})&=f(X_i)+\delta_{i+1}\\&\geq f(X_i)+\frac{1}{k}[f(T)-f(X_i)]\\&=(1-\frac{1}{k})f(X_i)+\frac{1}{k}f(T)\end{split}\end{equation}

通过上面的递推式,我们可以给出f(X_i)

\begin{equation}f(X_i)\geq [1-{(1-\frac{1}{k})}^i]f(T)\end{equation}

这个是简单的递推数列求通项,这里也就懒得证明了。所以

\begin{equation}f(X_k)\geq [1-{(1-\frac{1}{k})}^k]f(T)\geq [1-\frac{1}{e}]f(T)\end{equation}

这就是贪心大法好的证明。

子模态的应用

下面我就以影响最大化这个例子来说明这个东西还是有点用的。

影响最大化(influence maXimization)这个问题是定义在一个有向无环图G=(V,E)上的。对于这个图的任意一条边(v,w),我们都有这条边的权值p_{vw}p_{vw} 用来代表vw的影响能力,这个影响能力是一个概率,因此p _{vw} \in [0,1]。对于边(v,w)不存在的时候,p_{vw} 定义为0.

发散网络

这个图类似于一个传播网络,或者感染网络。现在我们来定义影响函数f(X),这是一个集合函数。为了表征这个函数,我们需要定义一个随机过程S。初始时刻0,我们给定输入P=X_0P表示活动集合。在时刻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个集合,使得

\begin{equation} arg\max_u{f(S_{i-1}\cup{u})}\end{equation}

但是,如何证明这个贪心是有效的一个难题,因为这是一个随机过程,每个点的增益在每一个时刻都是一个不同的随机变量,函数表达式也不是一个解析式。

我们现在先从简化问题出发,然后再去求解原问题。而简化问题就是我们之前提到的集合覆盖问题f(S)=|\cup i\in S x_i |,这个问题其实是子模态的。证明也很简单,直接对集合进行分割就行了,这里就省去了具体的证明。我们再回归到原问题,在t时刻节点v引发w的概率为p_{vw} ,这是一个01分布。事实上这个结果是0还是1与时刻t是无关的,所以我们可以预先生成好这个随机变量。对所有的边进行提前生成随机变量之后,我们就得到了一个图N.N的拓扑结构与原图一致,不同的地方就是p_{vw}

新图1

新图2

新图3

而当v引发w时,p_{vw} =1,否则就等于0.在N中的影响最大等价于之前讨论的集合覆盖问题。设生成图N_i 的概率为p_i ,设f_i(X)为在图N_i 上寻找影响最大的解,则

\begin{equation}f(X)=\sum_{i=1}{p_if_i(X)}\end{equation}

可以看出这是多个子模态函数的非负线性组合,因此f(X)是子模态的。又根据我们在之前证明贪心法在子模态函数上是可行的,所以贪心法对影响最大问题是可行的。

参考链接

Published:
2014-06-23 20:31
Category:
Tag: