各位读者大家好,今天要介绍一个非常有名的图论问题,名字就是Influence maximization(影响最大化问题)。首先简要介绍一下这个问题:在一个社交网络图中寻找固定数量的节点,使得这些节点对所有节点的影响值尽可能的大。这个问题由于在病毒式营销,谣言监控,舆情分析等活动之中有巨大的应用,所以在过去的几十年,已经被广泛的研究过了。举个例子:一家化妆品公司想要通过送给一些用户免费产品的形式来推广产品,这些用户如何选择就可以采用解决Influence maximization问题的思路来进行。这个问题首先是被Kempe首先提出来的,他提出了两种模型来解决这个问题,第一个是independent cascade model (独立级联模型),第二个是 linear threshold model(线性阈值模型),直到现在为止,解决这个问题的很多方法都是在这两种模型上来进行优化,也有很多人是通过提出新的模型来模拟现实世界之中的信息传过程。

首先对这个问题给出形式化的定义:输入一个有向图G = (V,E) ,V代表节点,E代表有向边,每一条边有一个权值  ∈ [0,1],代表源点对终点的影响因子(源点有多大的几率对终点产生影响)。定义参数向量θ=( ) e∈E 代表每一条边上的影响因子。我们定义 (S)为影响传播函数,( (S)代表从S出发能传播到的所有节点数目的期望值) ,其中L代表图G的一个子图, [L]代表在参数向量θ下子图L出现的概率(每一条边出现的概率就是传播因子)。RL(S)代表在子图L中从S节点能到达所有节点的个数。

Influence maximization问题就是要找到使得 (S)取得最大值得集合S。它已经被证明是一个NP-hard的问题。

(S)具有下面三个性质:(1)(∀S⊆V, (S)≥0);(2)单调递增(∀S⊆T⊆V, (S)≤ (T));(3)(∀S⊆T⊆V, ∀v∈V, (S∪{v})− (S)≥ (T∪{v})− (T))。由 的这三个性质便可以得到一个很暴力的贪心做法。每一次找到使得 增长幅度最大的节点,加入结果集合中,循环k次,便得到我们想要的集合了。下面是伪代码:

 

但是这个算法并不是一个好的算法,因为时间复杂性太高。而时间复杂度高的原因是 (S)函数的计算并不存在多项式时间的算法。精确计算 (S)函数本身就是一件很困难的事情,但是我们有一些别的方法来近似的计算 (S),比如我们可以运行一次信息级联模型,首先将S集合设置为种子节点,然后根据边上的影响因子来确定种子节点旁边的节点是否受到影响,这样算法运行结束之后便可以得到最终有多少节点受到影响,如果对数据的精确度要求比较高的话,我们可以多次运行这个信息级联模型,然后对最后的结果取平均值,这样的话,我们就能够算出一个比较好的结果,我在真正运行程序查看结果的时候,发现每一次运行信息级联模型的结果差距比较小,所以这个方法我个人觉得还是可行的。

Influence maximization问题虽然已经被广泛的研究过了,但是对于一个社交网络图,我们往往只能得到一个有向图,至于每一条边上面的影响因子,我们很难准确的知道,但是我们可以容易的得到一个影响因子的置信区间,使得影响因子落在这个区间中的可能性大于某一个下界。由于影响因子的不确定性,解决Influence maximization问题的算法寻找到的k个种子节点已经不够好了。

如何解决这个新的问题呢?在论文《robust influence maximization》之中比较好的解决了这个问题。第一步还是形式化的定义这个问题robust influence maximization(RIM):给一个有向图G = (V,E) ,V代表节点,E代表有向边,每一条边有一个权值区间 ,代表源点对终点的影响因子的置信区间。定义参数空间Θ= (Θ实际就是每一条边上权值区间的笛卡尔乘积),我们希望能找到一个大小为k的集合,使得目标函数g(Θ,S)取得最大值。也就是找公式中的集合 (定义如下)

 ,

作者在提出这个问题之后,证明这个问题是NP-hard的,并且提供了一个LUGreedy算法给出 一个近似的解法。下面是伪代码:

 

这个算法的思想就是取每一条边上影响因子为区间上界re运行一次算法1,得到一个集合1,取每一条边上影响因子为区间上界le跑一遍算法,又得到一个集合2,最后看这两个集合在影响因子为le构成的参数向量上得到的影响值,取表现好的那个结果。接着作者证明这个算法的结果存在一个依赖于解的下界:

 

 

但是作者接下来又证明了,当图的规模很大的时候,算法运行结果的下界并不让人满意,不仅如此次,RIM问题在这种情况下,根本不存在令人满意的解,直观上也很容易想出来,当每一条边上的影响因子的不确定度很大的时候,目标函数
的最大值很容易受到影响。所以这个算法还有很多改进的地方,有兴趣的同学可以试着做一下,改进这个算法,使得RIM问题能够更好地得到解决。

    本人水平一般,能力有限,解释的难免有疏漏之处,望大家批评指正,大家如果有什么问题的话,可以下载作者的论文进行研究https://arxiv.org/pdf/1601.06551.pdf,还有作者在会议上展示论文的视频,大家可以观看一下,下面是视频的链接:https://www.youtube.com/watch?v=IPOvXd9vZPs 。如果大家有问题的话,欢迎私信讨论。本人qq:3294349775

posted on 2017-09-14 15:43  qioqio  阅读(1353)  评论(0编辑  收藏  举报