Vertex cover preprocessing for influence maximization algorithms

 Abstract

   影响力最大化问题是社交网络分析中的一个基本问题,其目的是选择一小组节点作为种子集,并在特定的传播模型下最大化通过种子集传播的影响力。本文研究了独立级联模型下影响力最大化算法中执行顶点覆盖作为预处理的效果。所提出的方法从主要计算过程中消除无效节点,以找到最有影响力的节点。基于结果,将所提出的算法与现实世界数据集上的几种方法相结合,证实了该方法的效率。

关键词——社交网络;影响力最大化;独立级联模型;顶点覆盖;病毒式营销;

I. INTRODUCTION

   近二十年来,随着通信技术的发展和互联网的普及,社交网络在信息传播、互动和建立人与人之间的关系方面发挥着至关重要的作用。此外,由于世界各地绝大多数人都使用社交网络,因此每天可以交换大量有价值的信息和想法] 1 [ 。如此大量的信息引起了研究人员对社交网络应用研究的关注。过去的研究在社交网络中的信息传播方面导致了病毒式营销等应用平台的进步。病毒式营销作为一种成功的技术,利用口碑效应,是一种实用的商业方法。同时,它在社交网络中向其他人宣传和传播信息。广告作为病毒式营销的最基本目标,强调基于个人希望受到朋友和邻居影响的事实来销售新产品。为了实现这一目标,在社交网络中寻找有影响力的个体是切实可行的方法之一] 2 [ 。寻找有影响力的个人进行大规模广告激发了社交网络的理论研究,即影响力最大化。因此,这是本文研究的基础。

  影响力最大化(IM)旨在找到一小组节点,通过激活这些节点,社交网络中的影响力传播将最大化。形式上,影响力最大化问题,输入图 G (V, E) 和预定义的 K 值,试图以 |S| 的方式找到集合 S ⊆V = k 且影响函数 S,σ(S) 在特定扩散模型下最大化[3].Eq1。集合S的影响函数是集合S能够活跃的预期活跃节点数。

   第一项研究是由 Kemp 等人完成的。它将 IM 表述为离散优化问题。他们证明了在独立级联模型(IC)和线性阈值(LT)模型下计算 IM 问题的最优解是一个 NP 难问题。他们的贪心算法保证了(1-1/e)的近似比,其中e是自然对数的底数[3]。然而,他们的贪心算法需要很长时间,并且不适合大型网络。因此,人们进行了大量的研究来缓解这种算法。 CELF算法作为实用方法之一,由Leskovec等人提出。 [4]。与贪心算法相比,该算法提高了在网络中查找节点的速度。结果表明,运行时间仍然较高,不适合大型网络。一段时间以来,这个问题已成为社交网络研究者的热门话题。与此同时,各种研究都集中在提高其加速速度和影响力传播上[1,2,5-8]。由于社交网络已显着增长,寻找有影响力的节点需要快速的计算和较短的响应时间。很明显;大规模社交网络中存在许多无效节点。因此,从计算过程中删除其中部分或全部可以减少计算开销。

     当前的论文使用去除无效节点过程作为在社交网络中执行 IM 算法之前的预处理阶段。而且,它的目的是提高内存使用率、影响力传播、加速;建议的方法使用寻找一组顶点作为顶点覆盖的想法。顶点覆盖问题旨在找到覆盖图中所有边的节点子集。由于寻找最小顶点覆盖被证明是 NP 困难问题,因此存在针对次优解决方案的实用近似算法[9]。所提出的方法中使用了贪婪算法,作为解决该问题的有效近似算法之一。所提出的方法可以用作大多数 IM 算法的预处理阶段。因此,它降低了时间复杂度并保持了效率.

   纸张的其余部分形成如下。第二节介绍了 IM 问题的相关工作。同时,第二节提供了所提出方法的相关定义,然后分析了时间复杂度。此外,在第四节中,显示了真实数据集上的实验结果。最后,第五节给出了结论。

II. RELATED WORKS

     IM 问题首先由 Domingos 和 Richardson 在 2001 年为了寻找一组有利可图的客户而提出。他们使用马尔可夫随机场对这个问题进行建模,并提出了一种概率方法[10]。坎普等人。将 IM 问题表述为离散优化问题。他们还引入了一种简单的贪婪爬山算法,该算法保证预期影响力扩散在最佳影响力扩散的 (1-1/e) 范围内[3]。受kemp研究的启发,许多算法都致力于解决IM问题,并试图提高kemp贪心算法的效率。莱斯科维克等人。利用子模块化性质,提出了CELF算法,它比贪婪方法快了近700倍。虽然他们的方法速度很快,但不适合大规模社交网络并且需要很长时间[4]。此外,陈等人。提出了SD算法,假设节点的影响力根据节点的度数而增加。 SD挑出度数最好的节点,然后减少其直接邻居的值,直到所有节点都被选择[6]。

   IM 问题首先由 Domingos 和 Richardson 在 2001 年为了寻找一组有利可图的客户而提出。他们使用马尔可夫随机场对这个问题进行建模,并提出了一种概率方法[10]。坎普等人。将 IM 问题表述为离散优化问题。他们还引入了一种简单的贪婪爬山算法,该算法保证预期影响力扩散在最佳影响力扩散的 (1-1/e) 范围内[3]。受kemp研究的启发,许多算法都致力于解决IM问题,并试图提高kemp贪心算法的效率。莱斯科维克等人。利用子模块化性质,提出了CELF算法,它比贪婪方法快了近700倍。虽然他们的方法速度很快,但不适合大规模社交网络并且需要很长时间[4]。此外,陈等人。提出了SD算法,假设节点的影响力根据节点的度数而增加。 SD挑出度数最好的节点,然后减少其直接邻居的值,直到所有节点都被选择[6]。加快运行时间并注重方法的可扩展性。曹等人。建议OASNET[11]。该算法通过假设社区是独立的并且影响力不能跨不同社区传播来识别子社区。 OASNET采用CNN方法进行社区检测,将网络划分为c个社区,其中c为常数。然后它从每个社区中选择 k 个节点。最后,它在c中选择k个最有影响力的节点。 K 个节点。在[7]陈等人。提出了CIM算法。它分三个阶段寻找有影响力的节点。在第一阶段,采用启发式分层社区检测方法来获取社区结构。然后在第二阶段,根据每个社区的网络拓扑和属性选择候选节点。第三阶段,从候选节点中选出k个有影响力的节点作为种子节点.

III. PROPOSED METHOD

   随着社交网络的扩展和人们的广泛使用,社交网络的规模日益增大。因此,寻找有影响的节点会带来一些问题,例如内存不足、处理速度减慢。所提出的克服这些问题的方法在运行原始算法之前提供了预处理模式。该方法在减少内存、改进检测有用节点的过程和加速进程方面很有用。所提出的方法使用顶点覆盖问题 VCP 作为预处理。它通过顶点覆盖集在应用 IM 算法之前删除无效节点。顶点覆盖是给定图的顶点子集,其中每条边都连接到子集中的至少一个顶点[9]。寻找最小顶点覆盖是图论中的优化问题。

  Definition of vertex cover:  

给定图 G(V, E) 节点 V 的集合和边 E 的集合,顶点覆盖问题是找到一个集合 D⊆V,其中对于每条边 {u,v} ε E、u ε D 或 v ε D [ 12]。图 1(a) 显示了一个包含六个节点和六个边的图。在图 1(b) 中,顶点覆盖集以红色显示。从观察来看,图中的所有边都连接到红色节点

Definition of minimum vertex cover:

图 1 (a) 包含六个节点和六个边的示例图。 (b) 顶点覆盖集 (c) 最小顶点覆盖。

  具有最少顶点数的顶点覆盖集 S(|S| = min {|D |,D 是顶点覆盖集})。图 1(c) 显示了最小顶点覆盖。所提出的方法 VCP 声称大多数有效节点都在顶点覆盖集中。这样,VCP不再在图的所有节点中寻找有效节点,而是仅检查顶点覆盖集并剪枝其他节点。结果,计算量显着减少。另一方面,有两个因素表明寻找最小顶点覆盖集不适用于 IM 算法的预处理。主要依据是该问题自然是NP问题。因此寻找最小集合需要大量的计算时间。同时,第二个动机是它会将给定的集合大小(作为输入)减少太多,从而限制了有效节点的范围。

  因此,这将使所提出的方法无效。根据现状,VCP 方法建议使用近似算法来查找顶点覆盖(不一定是最小集)。所提出的方法使用算法1,其时间复杂度为O(|V|+|E|),并且近似系数为2[9]。

在算法1中,顶点覆盖集由D表示,它在第1行中用null初始化。在第 2 行中,集合 E ́ 保存图的边的副本,在第 3 行中,在迭代过程中检查每条边。从 E ́ 中选择了一条边 (u, v),并将其端点添加到集合 D 中。然后,将连接到每个端点 u 或 v 的所有边从集合 E ́ 中删除。因此,去除É中的所有边后,得到集合D作为顶点覆盖集合。

图 2. 在“Zachary’s karate Club”网络上执行顶点覆盖

图 2 展示了在“Zachary’s karateclub”数据集 [13] 上执行该算法的结果。 “扎卡里的空手道Club”网络有34个节点。算法1选择18个节点作为顶点覆盖集。这样,有效节点就可以从18个节点中进行选择,而不是34个节点。因此,该数据集的计算过程几乎可以减少一半。

IV. EXPERIMENTS

   本节论文展示了IC模型下VCP算法的效率。所有实验均在 Windows PC intel corei7 3.07 GHz、8GB 内存上进行。该算法已在最大 6GB 堆大小的 Java 中实现。此外,为了获得种子集蒙特卡罗的影响扩散,模拟了10000次迭代。

A. Experimental results

   在这项研究中,使用了四个真实世界的数据集来检查所提出方法的性能。文献[1]中介绍的Dolphin网络展示了Dolphin的合作网络。它包括七年来海豚之间的行为。该网络中的节点代表海豚,边显示海豚之间的连接。 GrQc 社交网络 [2],来自 arXiv 的协作网络,它展示了“广义相对和量子宇宙学”类别中共同撰写的文章。节点代表作者,边代表文章中作者之间的协作。 NetHEPT网络[3]。该社交网络还表明了文章作者之间的关系。该网络源自 1991 年至 2003 年间 arXiv 数据库的“高能物理理论”部分。维基投票网络 [4]。它是一个用于选择维基百科网站管理员的投票网络。在这个网络中,节点是站点用户,边 (u, v) 意味着 u 投票给了 v。表 I 提供了真实世界数据集的统计特征.

  此外,为了评估所提出的方法,结合CELF[4]、DDSE[8]和IPA[17]算法对预处理阶段的性能进行了研究。 CELF算法已使用1000次MonteCarlo模拟,IPA中的阈值设置为θ=1/160。 DDSE探索性算法使用遗传学来解决最大化问题的影响。此外,IPA 算法是一种基于路径的启发式方法,基于路径独立的假设。

表II显示了有关VCP通过设置k=50删除测试数据集无效节点的性能的信息。该表显示数据集中删除节点的平均数量。例如,从 NetHEPT 数据集中可以看出,使用 VCP 平均消除了数据集中 20% 的节点(近 3K 个节点),从而提高了速度,从而减少了运行时间。

   表III说明了在预处理阶段应用VCP方法后删除的有效节点的平均百分比。这样,执行VCP算法后的剩余节点就与每个算法的最终响应进行了比较。从观察来看,该方法消除了微不足道的有效节点,对最终结果确实有积极的影响。例如,在GrQc网络中,将VCP应用于IPA算法仅删除IPA算法找到的50个有效节点之一,而不添加VCP。

图3. 基于IC模型的不同算法对四个现实世界网络的影响分布,其中主动概率为p=0.01

图 3 显示了不同算法对基于 IC 模型的四个现实数据集的影响分布,其中主动概率为 p = 0.01。每幅图都说明了在预处理之前和之后对不同数据集执行算法的情况。据观察,应用VCP作为影响力最大化算法的预处理,不仅不会对最终的影响力扩散率产生不利影响,而且还可以提高影响力扩散率。

除此之外,图 4 提供了有关测试数据集上不同算法的执行时间的信息,以在每个网络中选择 50 个种子节点。在此图中,x 轴描述种子集,y 轴提供时间的对数值。从图 4 中观察,结果表明,将 VCP 方法与其他算法相结合具有优异的性能,并减少了所有比较算法的执行时间。在大型数据集中,它也更加具体。更准确地说,网络越广泛,VCP 的性能就越好。例如,在 NetHEPT 数据集中将 VCP 方法与 CELF 算法相结合,记录了出色的性能,并将运行时间减少了约 7 分钟。

CONCLUSION

  本文提出了一种实用的预处理方法来解决社交网络中 IC 模型下的影响力最大化问题。该方法的成就可以与减少算法的运行时间有关,这是通过对主图进行预处理并从影响力传播计算过程中消除无效节点而获得的。此外,它还改善了影响力传播,从而在网络中找到更有影响力的节点。在真实社交网络上执行该方法的实验结果表明,该方法与其他算法结合具有更好的性能,并且可以在可接受的时间内减少在大型网络上运行该算法的时间

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/753341.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

网络通信加密算法有哪些及其原理

网络通信加密算法的原理 网络通信加密算法的原理可以通过两种算法来解释:对称加密算法和非对称加密算法。 对称加密算法:对称加密算法使用相同的密钥来进行加密和解密。在通信开始之前,双方需要协商一个密钥,并确保第三方无法获…

结构体成员访问操作符

1.结构体成员的直接访问: 结构体变量.成员名: 2.结构体成员的间接访问: 间接访问应用于指向结构体变量的指针:如下

Qt应用开发(安卓篇)——安卓广播机制

一、前言 在Android的开发中,我们的程序需要得到网络状态变化、电池状态、屏幕状态、电池、系统启动完成、U盘等外设接入状态、apk安装等这些信息,除了主动去找到这些节点的信息,还可以通过安卓的广播机制被动去得到。 Android广播机制包含三…

代码随想录算法训练营第九天|28. 实现 strStr()、459.重复的子字符串、字符串总结、双指针回顾

题目:28. 实现 strStr() 文章链接:代码随想录 视频链接:LeetCode:实现strStr 题目链接:力扣题目链接 详解:KMP:主要应用于字符串匹配,当出现字符串不匹配是,可以知道一部分之前已…

YOLOv8独家改进:block改进 | RepViTBlock和C2f进行结合实现二次创新 | CVPR2024清华RepViT

💡💡💡本文独家改进:CVPR2024 清华提出RepViT:轻量级新主干!从ViT角度重新审视移动CNN,RepViTBlock和C2f进行结合实现二次创新 改进结构图如下: 收录 YOLOv8原创自研 https://blog.csdn.net/m0_63774211/category_12511737.html?spm=1001.2014.3001.5482 💡…

数字化时代的风向标:解密Facebook的成功秘诀

在当今数字化时代,社交媒体已经成为人们日常生活中不可或缺的一部分,而Facebook作为全球最大的社交媒体平台之一,其成功之处不言而喻。本文将深入探讨Facebook的成功秘诀,解密其在数字化时代的风向标。 用户体验至上: …

深入探讨ChatGPT:技术突破与应用前景

目录 一、ChatGPT究竟是什么? 二、ChatGPT的发展脉络 三、ChatGPT的突出优势 强大的语言生成能力 多场景适应性 多语言处理能力 广泛的应用范围 数据敏感性的重视 四、结语:ChatGPT的未来与挑战 Tips:国内的ChatGPT ⭐ 点击进入Chat…

c#——请求一个URL接口

.net 4.6环境下 .net4.6支持异步编程 命名空间&#xff1a; using System; using System.Net.Http; using System.Text; using System.Threading.Tasks; 创建一个异步方法发送请求&#xff1a; public static async Task<string> CallWebAPIAsync(string url, strin…

什么是React属性钻取(Prop Drilling)

一、介绍 在React开发过程中&#xff0c;状态管理是一个绕不开的话题。无论是新手还是有经验的开发者&#xff0c;都会面临如何有效管理组件状态的挑战。React为我们提供了多种状态管理方案&#xff0c;如直接的状态传递&#xff08;俗称"属性钻取"&#xff09;、Co…

那些年我们在数模竞赛中踩过的坑(附避坑指南)

数乐君猜测关注我们的同学大多都已经参加过数模竞赛了&#xff0c;可能有的同学对于数模竞赛的经验已经很丰富&#xff0c;或者即将要参加第一次数模竞赛&#xff0c;但要说起曾经在数模竞赛中踩的那些坑&#xff0c;也是有苦难言&#xff0c;那或许大家会好奇&#xff0c;数模…

【神经网络 基础知识整理】前向传播 反向传播

神经网络 基础知识整理 前向传播前向传播pytorch中的forward函数 反向传播 顾名思义&#xff0c;前向传播是从前往后传播的&#xff0c;从input层到output层的方向&#xff1a;前面一层的输出传入后一层作为输入&#xff0c;再对数据进行相应的处理&#xff0c;继续传下去&…

力扣Lc17--- 345.反转字符串中的元音字母(java版)-2024年3月18日

1.题目 2.知识点 注1&#xff1a; indexOf() 是 Java 中 String 类的方法之一&#xff0c;它用于查找指定字符或字符串在字符串中第一次出现的位置。如果找到了该字符或字符串&#xff0c;则返回它在字符串中的索引位置&#xff08;从0开始&#xff09;&#xff0c;如果没有找…

Qt的多线程类

主要介绍一些Qt的多线程类 QThread QThread 是 Qt 提供的基本的多线程类&#xff0c;它允许创建自定义的线程。可以继承 QThread 类&#xff0c;并重写其 run() 方法&#xff0c;在 run() 方法中编写线程要执行的代码。以下是一个简单的示例&#xff1a; #include <QThre…

03、判断和循环

三、判断与循环 文章目录 三、判断与循环顺序结构分支结构If语句在程序中就是用来判断的switch 循环结构forwhiledo while 顺序结构 顺序结构是Java程序默认的执行流程&#xff0c;按照代码的先后顺序&#xff0c;从上到下依次执行。 分支结构 If语句在程序中就是用来判断的 …

C语言 实用调试技巧

我们的博客已经更新到了数据结构&#xff0c;但是当我在深耕数据结构时我发现我在C语言是遗漏了一个重要的东西&#xff0c;那就是C语言的使用调试技巧。这篇博客对数据结构非常重要&#xff0c;请大家耐心观看。 1. 什么是bug&#xff1f; 第一次被发现的导致计算机错误的飞蛾…

抖音小店怎么高效的对接达人?分享四年老运营的经验,可记笔记!

大家好&#xff0c;我是电商糖果 抖音现在最火的卖货方式&#xff0c;依旧是达人带货&#xff0c;也就是商家和达人合作模式。 有很多刚开店的朋友找达人合作总是失败&#xff0c;不知道什么原因。 其实找达人合作是需要技巧的&#xff0c;糖果做抖音小店已经四年了&#xf…

Vue2 基础三组件化开发

代码下载 组件 (Component) 是 Vue.js 最强大的功能之一&#xff0c;组件可以扩展 HTML 元素&#xff0c;封装可重用的代码。 组件注册 全局注册&#xff1a; Vue.component(组件名称, {data: 组件数据,template: 组件模板内容});// 全局组件Vue.component(button-counter, …

在AI创业热潮下,如何抓住AI赚钱机会,实现人生逆袭

随着人工智能技术的迅猛发展,AI创业热潮正席卷全球。这不仅为科技领域的专业人士提供了无限的商机,也为普通人开辟了全新的赚钱途径。本文将为您揭示在AI创业热潮下,普通人如何抓住AI赚钱机会,实现人生逆袭,同时探讨哪些行业适合应用AI技术。 一、普通人如何抓住AI赚钱机…

前端基础篇-快速了解 Vue 前端框架(Vue 指令)

&#x1f525;博客主页&#xff1a; 【小扳_-CSDN博客】 ❤感谢大家点赞&#x1f44d;收藏⭐评论✍ 文章目录 1.0 Vue 概述 2.0 Vue 指令 2.1 指令 - v-bind 2.2 指令 - v-model 2.3 指令 - v-on 2.4 指令 - v-if、v-else-if、v-else 2.5 指令 - v-show 2.6 指令 - v-for 3.0 生…

实现C++自定义的String类

一、简介 采用了COW写时复制的方式实现&#xff0c;即在每个String类数据域之前用了4个字节的空间进行引用计数。通过拷贝构造函数或者赋值运算符函数进行赋值时不会重新开辟空间&#xff0c;只会对引用计数加一&#xff0c;当有修改操作时&#xff0c;才会重新开辟新的空间&a…