CELF(Cost-Effective Lazy Forward selection)具有成本效益的惰性前向选择算法

2023-05-16

CELF(Cost-Effective Lazy Forward selection)算法解析
  

  引言:在社交网络影响力最大化问题的求解过程中,我们往往需要去选择一些目标种子结点作为信息初始传播的源头。贪婪算法在传播效果上的解决可以达到影响的最大化,但是在时间复杂度上面显得确十分糟糕。为此CELF算法应势而生,CELF算法利用了函数次模性的特点,在第一轮选择种子结点时,计算网络中所有节点的边际收益,但将在之后的过程中,不再做网络节点边际收益的重复计算,这相对于传统的贪婪算法,将在时间上得到非常明显的改善。本文是对论文《Cost-effective Outbreak Detection in Networks》的补充,如果你是看了这篇论文之后,依然不明白CELF算法,那么本文可能会给予你一点点启示。

一.函数的次模性(submodular)

  对于函数次模性的理解,举个例子,当我们在饿了的时候,吃一碗饭得到的满足感,是比饱腹的时候得到的更多,函数次模性数学解释如下:
在这里插入图片描述

图1 函数的次模性

  图中的 R ( ) R() R()函数,我们可以看作是一个收益函数,因为在原文中的解释相对稍微复杂,我就用另一个例子来说明。图1中的A和B看作是选好的种子集, R ( ) R() R()可以看作是A,B种子集在网络中影响到的非种子结点的数量!次模性的意思就是,当种子集A比B小的时候,新的种子结点S加入到种子集A和B中, R ( A ∪ R(A\cup R(A{s} ) − R ( A ) )-R(A) )R(A)获得边际收益更大!

二.CELF 算法伪码解读

在这里插入图片描述

图2 CELF算法伪码

  CELF算法的说明:因为算法最主要的是“篮筐处”,我对“篮筐”里面的伪码,做出如下逐行解释:(如果你已经熟悉伪码可以不用看)

  第一行:输入网络结构 g ( V , E ) g(V,E) g(V,E),网络结构 V V V是点的集合, E E E是边的集合;R是收益函数;c是成本函数;B是预算;type就是网络节点成本的类型,原文中有两种类型,UC统一成本(常数),CB非统一成本(会变化的)。

  第二行:最开始种子结点集A为空集;对于每一个V中的结点s,初始化它的边际收益 δ s \delta_{s} δs为无穷大。

  第三行:循环条件为,当把种子结点S加入到种子集A中的时候,成本函数的值c小于等于预算B,然后可以继续循环。循环为后置循环,意思是先循环再判断是否满足循环条件。

  第四行:进入循环体内,对于每一个非种子结点s,我们给它打上flase标签。

  第五行:永久循环,除非第八行运行条件成立退出。

  第六、七行:根据种子结点的成本类型为UC或者CB并进行以边际收益 δ s \delta_{s} δs为选则依据的结点选择(选择边际收益最大的)。

  第八行: 如果找出来的最大边际收益 δ s \delta_{s} δs结点的标签为ture,则加入种子集A,并结束循环,进行下一轮选择。

  第九行:如果找出来的最大边际收益结点的标签为flase,则重新计算边际收益,并改标签为ture。

次模性在CELF中的体现解析
  在第二轮选择种子结点的时候,并没有全部计算所有结点的边际收益(可能计算了部分)

  因为:
在这里插入图片描述

图3 论文截图处“蓝色框部分”给出了解释

  因为第一轮边际收益计算后,排序在顶端的点依然在顶端,只有可能当他们的边际收益很接近的时候,可能在第K(k>1)轮需要多计算几次。另外,如果结点之间的边际收益相隔大,那么之后的计算完全没必要感觉,直接依靠第一轮的边际收益排序来选择就好了!

  这就是相比于贪婪算法时间节省的地方,第一轮时间复杂度是一样的,后面的选择轮数就不需要再去遍历估计那些没有被选为种子结点的结点的边际收益,此处正是次模性的体现(领会)
   该解析如果还是看得不明白,可以参考另一位作者写的,虽然简陋,希望能一起结合论文看,能让你明白!
https://blog.csdn.net/s1102379635/article/details/8524447

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

CELF(Cost-Effective Lazy Forward selection)具有成本效益的惰性前向选择算法 的相关文章

  • 枚举方法详解

    package test1 public enum Day SUNDAY MONDAY TUESDAY WEDNESDAY THURSDAY FRIDAY SATURDAY NOVALUE public static Day toDay S
  • Promise限制并发请求数量

    所谓并发请求 xff0c 就是指在一个时间点多个请求同时执行 当并发的请求超过一定数量时 xff0c 会造成网络堵塞 xff0c 服务器压力大崩溃或者其他高并发问题 xff0c 此时需要限制并发请求的数量 假如等待请求接口1000个 xff
  • 部署安装cobbler,实现批量安装CentOS7、Ubuntu17.04、Ubuntu18.04(快捷版)

    文章目录 一 部署安装cobbler1 编辑cobbler配置文件2 持续安装所需文件3 配置tftp4 安装pykickstart5 设置密码6 cobbler管理DHCP7 编辑启动应用服务脚本 二 镜像导入以及自动化文件必读须知1 C
  • IDEA中找不到maven插件Plugin‘ ‘ not found 解决

    1 lt artifactId gt maven compiler plugin lt artifactId gt lt version gt 3 8 0 lt version gt 等 报红 1 1首先要找设置 File Settings
  • 树莓派 安装 Ubuntu MATE18

    Ubuntu MATE18 树莓派 pi 64 raspberrypi span class token punctuation span span class token operator span sudo service cups s
  • Munkres 分配算法

    匈牙利方法 xff08 或 Kuhn 算法 xff09 是由4个基本步骤组成的迭代过程 该方法使用 最小行集 覆盖 操纵 成本矩阵的零点 xff0c 当所需的 最小行集 等于给定成本矩阵的维数时 xff0c 过程终止 Munkres 算法是
  • SORT 多目标跟踪算法笔记

    SORT 是一种简单的在线实时多目标跟踪算法 文章要点为 xff1a 以 IoU 作为前后帧间目标关系度量指标 xff1b 利用卡尔曼滤波器预测当前位置 xff1b 通过匈牙利算法关联检测框到目标 xff1b 应用试探期甄别虚检 xff1b
  • ros:kcf算法+行人检测 = 让机器人自动识别并追踪行人

    实现目标 xff1a 机器人检测到有人走过来 xff0c 迎上去并开始追踪 追踪算法使用kcf算法 xff0c 关于kcf追踪的ros库在github地址 https github com TianyeAlex tracker kcf ro
  • 人物交互(human object interaction)论文汇总-2019年

    1 Relation Parsing Neural Network for Human Object Interaction Detection 1 1 总述 提出一种关系解析神经网络RPNN xff0c 由两部分组成 xff1a 物体 身
  • ROS nodelet 使用详解

    本文以nodelet tutorial math为例来了解nodelet的原理及使用方法 xff0c 理论知识参考http blog csdn net zyh821351004 article details 52143309 代码地址 x
  • MPU6050

    简介 xff1a MPU6050是InvenSense 公司的 MPU6050 作为主芯片 xff0c 能同时检测三轴加速度 三轴陀螺仪 三轴角速度 的运动数据以及温度数据 利用 MPU6050 芯片内部的 DMP 模块 xff08 Dig
  • 字符串切割函数strtok、strtok_s、strtok_r的区别

    strtok函数 头文件 xff1a include lt string h gt 函数原型 xff1a char strtok char str const char delimiters 参数 xff1a str xff1a 待分割的字
  • VMware 虚拟机怎么识别不了ISO文件

    1 安装 a class baidu highlight href https www baidu com s wd 61 E8 99 9A E6 8B 9F E5 85 89 E9 A9 B1 amp tn 61 44039180 cpr
  • hadoop集群查看路径

    管理界面 xff1a http master 8088 HDFS 主界面 xff1a http master 50070 HDFS 文件界面 xff1a http master 50070 explorer html
  • Ubuntu20.04 通过VNC实现远程桌面连接

    前提 xff1a 工控机上预留至少三个以太网口 xff0c 一个接路由器 xff0c 一个接上位机 一 通过无线进行远程连接 1 了解被连接电脑的信息并设置无线连接的网络地址 优先连接无线网络 xff1a 网络地址 xff1a 192 16
  • 结束也是开始

    到昨天为止 精通ORACLE 10G 备份与恢复 算是告一段落了 xff0c 接下来准备学习一下性能调优方面的 xff0c 然后再回过来复习一下 精通ORACLE 10G 备份与恢复
  • TX2小结之CAN通信

    TX2上有2个CAN控制器 xff0c CAN控制器需要通过CAN收发器连接到物理总线上 具体参阅原理图和相关技术参考手册 下载地址 xff1a https developer nvidia com embedded downloads 1
  • ROS中启用CAN

    1 源码安装canopen 从官网下载canopen至Ubuntu xff0c 下载地址 xff1a https github com ros industrial ros canopen tree kinetic devel 终端输入 x
  • ROS节点中的CAN命令

    前言 xff1a 由于在使用TX2的过程中 xff0c 需要使用CAN通讯的方式使我的机器人底盘与TX2进行命令收发 xff0c 而我的其他传感器都建立在ROS框架下 xff0c 为了以后能使数据交互我希望把底盘数据也放到我的ROS框架里面
  • ROS学习总结十一:Gazebo物理仿真环境搭建二:自己搭建一个机器人在gazebo中运动。

    之前使用的是shenlan的源码实现了一系列的功能 xff0c 那么根据之前所学习是否可以使用一个自己的机器人实现gazebo仿真 这里我们尝试一下 xff1a 1 按照之前的方式我们给自己的机器人添加碰撞属性以及惯性属性 xff0c 机器

随机推荐

  • ROS学习总结十六:订阅一个话题同时发布一个话题(subscriber and publisher)

    在使用ROS的时候 xff0c 我们会用到很多节点 xff0c 例如之前的gazebo仿真 hector建图 键盘控制等 xff0c 这些节点的消息传递主要靠的是话题与订阅 在很多程序中 xff0c 我们可能需要订阅一些数据 xff0c 同
  • 从ORB_SLAM中发布ROS位姿话题(stereo)

    之前调试了ORB SLAM2的gazebo仿真 xff0c 现在需要在ROS中使用到ORB SLAM2的位姿 xff0c 但是ORB SLAM2本身是没有位姿的ROS话题输出的 xff0c 参考了github上相关问题的探讨 xff1a G
  • 1.3如何配置launch与lua文件

    第一步 了解bag文件 播放bag文件需要在bag的文件夹内启动五个终端 1 第一个终端执行roscore 2 第二个终端执行rosbag info rslidar outdoor gps bag了解bag中topic的名称与类型 3 第三
  • ROS学习总结十七:自定义消息的使用

    在初学ROS时 xff0c 一般都是使用的ROS标准库 xff0c 包括激光电云laserscan 位姿posestamp等 这些库基本满足了我们的日常使用 xff0c 但是在开发时 xff0c 难免会遇到一些情况使用标准库不太合适 xff
  • [stm32]UART串口利用空闲中断接收一帧不定长数据

    查阅网上的方法有很多 xff0c 这里记录一下自己用的一种方式 xff0c 默认开启UART串口中断 xff0c cubemx生成工程代码 1 定义发送和接收全局数组 xff0c 用于缓存数据 RX frame size xff1a 接收到
  • JavaScript入门笔记(一)

    目录 一 JavaScript xff08 一 xff09 特点 xff08 二 xff09 作用 xff08 三 xff09 网页中插入JavaScript脚本的方法 1 行内式 2 嵌入式 3 链接式 一 JavaScript xff0
  • 面向对象学习笔记(一)——C++构造函数后加冒号

    目录 一 初始化常量数据成员和引用数据成员 二 调用拥有一组参数的基类的构造函数 构造函数后加冒号是初始化表达式 xff0c 有四种情况下应该使用初始化表达式来初始化成员 xff1a 1 xff1a 初始化const成员 xff1b 2 x
  • XML入门笔记(二)——关于ASP网站中文乱码问题

    目录 问题的发现 问题原因 原因 常用编码 解决方法 1 UTF 8编码打开 xff0c 插入如下代码 xff1a 2 GB2312编码打开 xff0c 插入如下代码 xff1a 问题的发现 在编写 ASP 代码 xff0c 利用服务器端完
  • 和×××的历史qq

    2002 12 04 17 45 42 去看小娜没有啊 没事给我来个电话 2002 12 05 22 40 46 单身浪人 老子在上海呢 通过服务器中转 2003 05 30 05 05 43 xff09 2003 05 30 06 36
  • hexo注意事项和常用命令

    hexo注意事项和常用命令 我的博客网站 xff1a Gitee xff1a 一丈青 gitee io GitHub xff1a 一丈青 1zhangqing github io 自己手写front matter就是写 然后回车就能出现写f
  • cmake-debug和release模式

    一般在工程中 xff0c 自动构建可能会编译两个版本的发布包 xff0c 一个debug版本 xff0c 一个release版本 那么通过cmake怎样来实现呢 xff1f 本文就以这个需求为例 xff0c 来介绍cmake中的逻辑控制 目
  • CSDN,你在忽悠谁?——社区用户数量大曝光

    根据 http hi csdn net 提供的好友搜索功能 xff0c 按地区搜索结果得出 xff0c csdn 社区用户数量是国内 66964 xff0c 国外用户总数不超过 1 千 详细清单请点击 根据 csdn 官方提供的数据 htt
  • vb.net中使用GetPrivateProfileString访问INI文件,解决中文路径问题

    在vb net2005 43 winxp中 xff0c 我使用GetPrivateProfileString读取一个ini文件 xff0c 如果文件路径中含有中文 xff0c 就会遇到一个奇怪的问题 xff1a 第一次读取正常 xff0c
  • CSDN史上最大的非法集资案

    短短 12 小时内发生了什么 xff1f 263231 分 xff0c 417 人次 xff0c 押宝游戏 疯狂大倒分 成为了 CSDN 历史上最大的非法集资 非法集资怎么操作的 xff1f 谁是幕后黑手 xff1f 集资的目的是什么 xf
  • 小帅和七个男友 ---第二章 一株含羞草

    第二章 一株含羞草 升入初三 xff0c 中考对我们这所国家重点中学来说 xff0c 只相当于一场普通的模拟考试 学习并不紧张 xff0c 我们还是该玩的玩 xff0c 该吃的吃 转瞬间就远去的椅子 xff0c 激起了我少女的情怀 我越来越
  • 20号你会黑屏吗?来验证一下你的正版XP和Office

    相当一部分企业都担心自己的电脑到时候会黑屏 这些企业并不是拿不出那几千块买套正版 xff0c 是没有习惯 其他社区也就罢了 xff0c 作为csdn xff0c 以软件开发人员集中的社区 xff0c 对使用正版软件这么抵触 xff0c 是不
  • 搜狗输入法 VS 拼音加加

    用了16年计算机 xff0c 一共用过四个输入法 xff1a 五笔 xff08 牌子忘记了 xff09 xff0c 智能ABC xff0c 拼音加加 xff0c 搜狗 放弃五笔的原因很简单 xff1a 我要学拼音 xff01 一说到高考 x
  • 苹果应用商店支持人民币信用卡(已验证,有图有真相)

    今日打开i4上的app store xff0c 惊奇发现货币单位已从 变为 xffe5 惊讶万分 xff0c 于是测试一下 xff0c 随机找了一个25元的航班追踪应用 屏幕弹出登录界面后 xff0c 输入appleid xff0c 随后出
  • 2011年终总结-DIY 苹果手机铃声

    一首 月亮之上 红遍中国南北 xff0c 只要这铃声响起 xff0c 100个人得有10个人掏出手机看看 xff0c 当之无愧的山寨歌王 当IPhone变成街机 xff0c 出厂铃声数量不多 xff0c 铃声总是撞车 xff0c DIY个性
  • CELF(Cost-Effective Lazy Forward selection)具有成本效益的惰性前向选择算法

    CELF Cost Effective Lazy Forward selection 算法解析 引言 xff1a 在社交网络影响力最大化问题的求解过程中 xff0c 我们往往需要去选择一些目标种子结点作为信息初始传播的源头 贪婪算法在传播效