一种基于并发进程与影响力期望的传播种子节点选择方法与流程

文档序号:15760991发布日期:2018-10-26 19:17阅读:365来源:国知局
一种基于并发进程与影响力期望的传播种子节点选择方法与流程

本发明涉及社会计算与媒体挖掘领域,尤其涉及一种基于并发进程与影响力期望的传播种子节点选择方法。



背景技术:

随着互联网技术的快速发展,越来越多的在线社交网络相继出现。在这些社交网络中,网络中的个体之间以社会网络为媒介相互影响,传播信息、观点与影响力。实际上,随着大数据的研究日益广泛,社交网络影响力传播已经成为数据挖掘和社交网络分析中的关键问题之一。

在社会网络领域中,影响力最大化问题是指给定一种传播模型并选取一个种子节点的集合,信息从这个节点集合开始传播,最终使网络上激活节点的覆盖率达到最大。影响力最大化的目标在于用最短的时间和最少的种子节点来获得最大的传播覆盖率。当前的互联网中,影响力传播主要通过信息传播来体现,因此分析信息传播的影响因素对改进影响力传播模型具有重要意义。信息传播的影响因素可以看作影响力传播模型中节点激活概率的影响因素。

当前应用较为广泛的传播模型包括独立级联模型和线性阈值模型。独立级联模型将活跃节点视为发布者,被激活节点视为接收者,发布者激活接收者。因此,独立级联模型是以发布者为中心的模型,一个节点只能影响与其直接相连的节点,一旦一个节点被激活,它将尝试去激活所有邻居节点。线性阈值模型中每个节点有一个被影响阈值,这个阈值在0到1的范围内均匀、随机地选取,一旦确定在传播中就不再改变。与独立级联模型一样,在t=0时刻有且仅有种子集合s0中的节点被激活。在之后每个时刻t≥1,每个不活跃节点都需要依据它所有已激活的邻居到它的线性加权和是否已达到它的被影响值来判断是否被激活,若是,则节点v在t时刻被激活,否则,节点v仍然保持不活跃状态。当某一时刻不再有新的节点被激活时,传播过程结束。

对于整个传播过程而言,种子节点的选取是传播的基础,因为种子节点的选取结果直接影响传播的最终效果,包括覆盖率及传播时间在内。目前常用的种子节点的选取方法有贪心算法,基于节点度的启发式算法,基于距离的启发式算法,以及随机算法等。

假设初始化后的活跃节点为s,用f(s)表示使用s中的节点作为种子节点进行传播得到最终活跃的节点数目。以覆盖率较高的贪心算法为例,首先初始化一个空的集合s,然后每添加一个节点时需要遍历所有节点,将使得f(s+v)-f(s)的值最大的那个节点加入节点集合s。使用贪心算法选择种子节点时,由于每次添加一个节点时均需要遍历所有节点,因此导致时间复杂度较高,且贪心算法没有考虑图的拓扑结构,这是贪心算法的局限所在。

对于基于节点度的启发式算法,即选择度数最高的k个节点作为初始的活跃节点,该算法相比贪心算法而言时间复杂度降低很多,但由于该算法每次只选择度数较高的节点,忽略了部分节点的信息,而贪心算法每添加一个节点时均遍历所有节点从而选出局部最优解,因此基于节点度的启发式算法算法效果远不及贪心算法。对于更简单的随机算法,即从原节点集合中随机选取若干节点作为种子节点,由于不确定因素较多,随机性大,一般不被选用。

使用贪心算法进行传播,在选取种子节点集合s时,需要对每一个未激活节点进行验证,当用户节点数量增加时,算法的复杂度非常高,而且由于传播算法的随机性而导致不够稳定。针对上述问题,有必要减少验证的节点数,提高验证的节点质量,以改善算法的复杂度,进而提高传播效率,将信息在尽量短的时间内大范围的传播。



技术实现要素:

本发明的目的在于克服目前贪心算法选择种子节点时计算时间过长和由于随机性而导致不够稳定的问题,从而提供具有较高稳定性与较高效率的传播种子节点选择方法。

为了实现上述目的,本发明提供了一种基于并发进程与影响力期望的传播种子节点选择方法,包括:

步骤1)、对种子节点集合和其他节点集合进行初始化,并计算出其他节点集合中任一节点的影响力期望值,将最大值对应的节点放入种子节点集合中;其中,所述种子节点集合用于存放已被选中的种子节点,其初始集合为空集,所述其他节点集合用于存放未被选中的节点,其初始集合为所有待激活的节点;

步骤2)、采用并发进程方法来计算种子节点集合中所有节点与其他节点集合中任一节点组合之后的影响力期望值,从其他节点集合中选择组合影响力期望值最大的节点作为待激活节点,将该点从其他节点集合移动到种子节点集合中;

步骤3)、重复步骤2),直至选够j个种子节点为止。

上述技术方案中,在步骤1)中,计算其他节点集合中任一节点的影响力期望值包括:

步骤101)、以当前要计算影响力期望值的节点为核心,依次寻找该节点直接指向的节点,将这些节点称为一层节点;将该节点与每个一层节点相连的边的影响力求和,得到一层节点的期望值;

步骤102)、依次寻找当前层节点直接指向的节点,将这些节点作为下一层节点,将每个下一层节点与当前层节点中的对应节点相连边的影响力、所述当前层节点中的相应节点与前一层中的相应节点间的相连边的影响力相乘,然后求和,从而得到所述下一层节点的期望值;接着将所述下一层节点作为新的当前层节点;

步骤103)、重复步骤102),直至没有新的下一层节点为止;

步骤104)、将每层的期望值求和得到该节点的期望值。

上述技术方案中,在步骤2)中,采用并发进程方法来计算种子节点集合中所有节点与其他节点集合中任一节点组合之后的影响力期望值包括:

步骤201)开启进程池,同时调用k个并发进程;

步骤202)在每一个进程中,按任意顺序取其他节点集合中的一个节点,将种子节点集合中的所有节点和该选取的节点组合后形成核心节点集合,计算核心节点集合的期望值,并将计算结果保存到结果集合中;

步骤203)在并发执行过程中,当有新的请求提交到进程池中时,如果进程池还没有满,就会创建一个新的进程用来执行该请求;但如果进程池中的进程数已经达到最大值,那么该请求就会等待,直到进程池中有进程结束,才会创建新的进程来执行它;

步骤204)所有期望值都计算完毕后,调用端从结果集合中获取到结果,关闭进程池。

本发明还提供了一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现所述基于并发进程与影响力期望的传播种子节点选择方法的步骤。

本发明的优点在于:

与现有技术相比,本发明利用节点影响力的期望值进行种子节点的选择,不需要调用传播函数,提高了稳定性并避免了时间复杂度过高,同时通过引入了并发进程,同时计算多个节点的期望值,进一步提高了运行效率。仿真效果表明,20个并发进程可以提高5到20倍的计算速度,而用期望值可以稳定在一个平均计算效果。

附图说明

图1是本发明的基于并发进程与影响力期望的传播种子节点选择方法的流程图;

图2本发明的基于并发进程与影响力期望的传播种子节点选择方法中节点的期望值计算的示意图。

具体实施方式

现结合附图对本发明作进一步的描述。

在对本发明的方法做详细说明之前,首先对本发明方法中所涉及到的一些数据结构做一简要说明。

种子节点集合already:种子节点集合already用于存放已被选中的节点{a0,a1,…},其中already的初始集合设为空集。

其他节点集合not-in:其他节点集合not-in用于存放未被选中的节点{v0,v1,…},待激活节点总数设为j,则not-in的初始集合设为全部节点。

图1是本发明的基于并发进程与影响力期望的传播种子节点选择方法的流程图,该方法包括:

步骤1)、对种子节点集合already和其他节点集合not-in进行初始化,并计算出其他节点集合中任一节点的影响力期望值,将最大值对应的节点放入种子节点集合中;

步骤2)、采用并发进程方法来计算种子节点集合already中所有节点与其他节点集合not-in中任一节点组合之后的影响力期望值,从not-in中选择组合影响力期望值最大的节点作为待激活节点,将该点从not-in移动到already中;

步骤3)、重复步骤2),直至选够j个种子节点为止。

图2为本发明的期望值计算方法的示意图,所述步骤1)中的节点影响力的期望值计算方法包括:

步骤101)、以当前要计算影响力期望值的节点为核心,依次寻找该节点直接指向的节点,将这些节点称为一层节点。将该节点与一层节点相连的边的影响力,记为n1i,其中i表示一层节点中的第i个节点,求和得到一层节点的期望值e1=n10+n11+...+n1m,其中m表示一层节点的个数。

以图2为例,当前要计算影响力期望值的节点为图2中的节点a,该节点直接指向的节点包括节点b、节点c、节点d、节点e,这些节点就是所述的一层节点,在图2中用黑色节点来表示。如图所示,节点a与节点b之间的边ab的影响力为0.5,节点a与节点c之间的边ac的影响力为0.2,节点a与节点d之间的边ad的影响力为0.08,节点a与节点e之间的边ae的影响力为0.3。则一层节点的期望值为0.5+0.2+0.08+0.3=1.08。

步骤102)、依次寻找该一层节点直接指向的节点,将这些节点称为二层节点,二层节点与相应一层节点相连的边的影响力,记为n2j,其中j表示二层节点中的第j个节点。将每个二层节点与相应一层节点相连的边的影响力n2j与相应的n1i相乘,求和得到二层节点的期望值e2=∑n1i*n2j。

仍以图2为例,寻找一层节点b、c、d、e直接指向的节点,得到二层节点f、g、h、i;二层节点f与一层节点b相连的边bf的影响力为0.8,二层节点g与一层节点c相连的边cg的影响力为0.9,二层节点h与一层节点d相连的边dh的影响力为0.7,二层节点i与一层节点e相连的边ei的影响力为0.23。由此得到二层节点的期望值为0.5*0.8+0.2*0.9+0.08*0.7+0.3*0.23=0.705。

步骤103)、参照步骤102)重新寻找下一层节点并为下一层节点计算期望值,直至没有新的下一层节点为止。

步骤104)、将每层的期望值求和得到该节点的期望值e,即e=e1+e2+...+ei。

由于每个节点期望值的计算过程都是相互独立的,且在节点数量较多的情况下该步骤需要的时间比较长,因此引入并发进程同时计算多个节点的期望值。

所述步骤2)中计算期望值的方法,进一步包括:

步骤201)开启进程池,同时调用k个并发进程,即任务队列中最多可以同时执行k个任务,在一个实施例中,k的默认值为20;

步骤202)在每一个进程中,按任意顺序取节点vi∈not-in,将种子节点集already中的所有节点和vi组合后形成核心节点集合,计算核心节点集合的期望值,并将计算结果保存到结果集合中。

步骤203)在并发执行过程中,当有新的请求提交到进程池中时,如果进程池还没有满,就会创建一个新的进程用来执行该请求;但如果进程池中的进程数已经达到最大值,那么该请求就会等待,直到进程池中有进程结束,才会创建新的进程来执行它。

步骤204)所有期望值都计算完毕后,调用端从结果集合中获取到结果,关闭进程池。

最后所应说明的是,以上实施例仅用以说明本发明的技术方案而非限制。尽管参照实施例对本发明进行了详细说明,本领域的普通技术人员应当理解,对本发明的技术方案进行修改或者等同替换,都不脱离本发明技术方案的精神和范围,其均应涵盖在本发明的权利要求范围当中。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1