一种即时通信网络用户数的估计方法和系统与流程

文档序号:21360395发布日期:2020-07-04 04:33阅读:234来源:国知局
一种即时通信网络用户数的估计方法和系统与流程

本发明涉及一种通信网络节点估计技术领域,具体涉及一种即时通信网络用户数的估计方法和系统。



背景技术:

即时通讯(instantmessaging,简称im)是一个实时通信系统,允许两人或多人使用网络实时的传递文字消息、文件、语音与视频交流。即时通讯提供了越来越丰富的通讯服务功能,即时通讯平台包含qq、微信、msn、skype、messenger等平台,同一平台上的所有用户构成一个即时通信网络。随着internet技术的发展,即时通信网络的规模发展很快,很多平台用户已经以数亿计。尽管不计其数的网站和其他报告经常提供这样多种不同来源的数字,这些数字通常是基于平台本身的报告或流量分析,不能保证准确。

对于大规模网络节点数的估计,第一种方法是从网络中随机抽取用户,然后用标记和重新捕获的方法来估计网络的节点数,这种方法要求用户必须进行简单随机抽样,也就是必须保证每次抽样时,每个节点被选中的概率是相同的。而这对于即时通信网络是做不到的,尤其是对当用户根本就没有网络的控制权时,在用户不知道网络中有哪些用户的情况下,不可能做到以相同的概率选取网络中的每一用户。

第二种方法是通过采用极大似然估计法估计网络节点总数,该方法的计算效率较低,而且需要能够等概率地访问到每一个节点。

第三种方法是类似利用随机抽取得到节点的编号的规律来估计节点总数,则要求节点按照一定的规律进行编号,这在日常生活中,对于不受自己控制的网络,节点编号未必能够获取,而且有些节点还未必一定有编号,再有该方法的一个前提也是假定任意编号节点在被俘获的概率是相等的。

以上几个方法都要求用户能够随机的抽取网络的任意节点,这对于目前多数即时通信网络是做不到的,因为任一用户往往只有部分朋友节点可以进行通信,用户只能接触到少数几个节点,不可能随时随机访问到网络的任意节点。



技术实现要素:

为了克服现有技术存在的缺陷与不足,本发明提供一种即时通信网络用户数的估计方法和系统,本发明在没有即时通信网络控制权的前提下,仅利用用户所处网络节点附近的局部信息,实现对即时通信网络用户数的估计。

为了达到上述目的,本发明采用以下技术方案:

本发明提供一种即时通信网络用户数的估计方法,包括下述步骤:

在即时通信网络中任选一个用户v0,作为随机游走的入口,同时任意选取用户v0的一个好友用户v1,作为返回观测点;

初始化模拟变量值;

进行k轮随机游走,每轮随机游走均从用户v0出发,到首次从好友用户v1沿v1到用户v0的边返回用户v0结束,每轮随机游走记录数据;

计算网络用户总数的两个不同估计值

判断两个不同估计值的相对偏差是否达到预设值,若达到预设值,则结束随机游走,将估计值作为网络用户总数的估计。

作为优选的技术方案,所述初始化模拟变量值,所述模拟变量值包括已进行模拟次数t、模拟相对误差要求rel和模拟轮数k。

作为优选的技术方案,所述每轮随机游走记录数据,所述数据表示为:(setps,nr),其中,steps表示首次从好友用户v1沿v1到用户v0的边返回v0所需的步数,nr表示随机游走过程中好友用户v1总共返回v0的次数。

作为优选的技术方案,所述进行k轮随机游走,每一轮随机游走的具体步骤为:

s1:令u=v0作为当前用户,初始化计数器,包括返回次数计数器nr=0,步数计数器steps=0,用户u生成包含游走当前位置u、返回次数nr及游走步数steps三个量的令牌token;

s2:获取当前用户u的好友数du以及当前用户u所有好友的好友数dv,计算自用户u到用户v的转移概率p(u,v),具体计算公式为:

其中,u~v表示u、v相邻;

随机选取用户u的任一好友用户v,作为下一步到达位置节点,同时步数计数器增加1,即steps=steps+1,更新令牌token中步数计数器steps的值,更新后的令牌token发给好友用户v,或者由网络爬虫携带更新后的令牌token来到用户v;

好友用户v收到令牌token或者网络爬虫来到好友用户v后,依据用户节点信息进行判断,并执行相应的操作,具体为:

若好友用户v≠v0,则令u=v,更新令牌token中对应u值,然后返回继续进行步骤s2;

若好友用户v=v0且令牌中u≠v1,则令返回次数计数器nr=nr+1,u=v,更新令牌token中返回次数计数器nr及u值,然后返回继续进行步骤s2;

若好友用户v=v0且令牌中u=v1,则令nr=nr+1,更新令牌token中nr值,本次模拟结束,记录令牌token中steps及nr中的值,得到向量(setps,nr);

循环进行k轮随机游走,用户v0收集到k组数据(setpsi,nri),其中stepsi表示第i轮总共所需的步数,nri是第i轮中总共返回v0的次数。

作为优选的技术方案,所述计算网络用户总数的两个不同估计值具体步骤为:

令t=t+k,表示总共模拟的轮数,计算

计算

以及

得到网络节点总数n的两个不同估计值:

其中,

作为优选的技术方案,所述判断两个不同估计值的相对偏差是否达到预设值,具体判断步骤为:

计算

若|flag|>rel,则继续进行随机游走,若|flag|≤rel,则结束随机游走,将估计值作为网络用户总数的估计。

本发明还提供一种即时通信网络用户数的估计系统,包括:即时通信网络用户选取模块、模拟变量值初始化模块、随机游走模块、估计值计算模块和网络用户总数估计输出模块;

所述即时通信网络用户选取模块用于选取用户v0作为随机游走的入口,以及选取用户v0的一个好友用户v1作为返回观测点;

所述模拟变量值初始化模块用于初始化模拟变量值;

所述随机游走模块用于进行k轮随机游走,每轮随机游走均从用户v0出发,到首次从好友用户v1沿v1到用户v0的边返回用户v0结束,每轮随机游走记录数据;

所述估计值计算模块用于计算网络用户总数的两个不同估计值

所述网络用户总数估计输出模块用于在判定两个不同估计值的相对偏差达到预设值时,结束随机游走后将估计值作为网络用户总数的估计。

本发明与现有技术相比,具有如下优点和有益效果:

(1)本发明只需要获取邻居节点的节点度信息,当随机游走到达某一用户对应节点时,仅需知道该用户的好友数以及其每一个好友的好友数,该用户自己的好友数容易获悉,其好友的好友数也可通过与好友简单通信来获取,不需要全网的控制权,仅需利用少量的网络接口即可实现对即时通信网络用户数的估计。

(2)本发明利用设定的相对误差的大小,可以动态控制估计的精度。

附图说明

图1为本实施例即时通信网络用户数的估计方法的流程示意图;

图2为本实施例每一轮随机游走的流程示意图。

具体实施方式

为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。

实施例

如图1所示,在本实施例中,提供一种即时通信网络用户数的估计方法,将即时通信抽象为一个无向图,每一用户抽象为一个网络节点,若两用户已加为好友,则该两节点间有一条边,基于多数即时通信平台好友都是双向的,由此同一平台上的所有用户网络就抽象为一个无向图,而对网络的用户总数的估计就转化为无向图的节点数的估计;

利用带权图(网络)上随机游走的来估计网络节点总数的方法,在该方法中,对网络的任意一条边,若其端点为u、v,对应该边的权值为其中,du为节点u的度(与该节点相连的边总数,也就是对应用户的好友数)。在该图上执行随机游走的时,自任一节点u出发,下一步到达节点v的概率(常称为转移概率)为:

其中u~v表示u、v相邻。

在任意连通的带权图中,对任一选定的节点v0,自v0出发首次返回v0平均所需的步数为:

其中n为网络的节点总数,另一方面,若v1为v0的一个相邻节点,则自v0出发后,首次自节点v1沿v1到v0这条边返回v0平均所需的步数为

根据公式(2)和(3),可以得到节点总数n的两个估计

在本实施例中,即时通信网络用户数的估计方法具体步骤为:

步骤1:初始准备:

1.1从即时通信网络中任选一个用户(也就是网络的一个节点,记为v0),要求该用户的好友数大于等于2,也就是对应节点的节点度d0≥2,并以该用户作为随机游走的入口。同时任意选取用户v0的一个好友(也就是节点v0的任意一个邻居节点,记为v1),作为返回观测点;

1.2初始化模拟变量值:

已进行模拟次数:t=0;

模拟相对误差要求rel=0.5(该值可根据需要调整);

每次的模拟轮数k=10(该值可根据需要调整)。

步骤2:执行k轮随机游走,每轮随机游走都是自用户v0出发,到首次从用户节点v1沿v1到v0这条边返回v0结束。每轮记录两个数据(setps,nr),其中steps是自v0出发后,到本轮模拟结束(也即是首次从节点v1沿v1到v0这条边返回v0)总共所需的步数,nr是这个过程中总共返回v0的次数(此前可能已不经v1返回v0多次)。

如图2所示,每一轮随机游走的具体步骤如下所述,将随机游走执行k轮,得到k组数据。

2.1令u=v0作为当前用户,初始化计数器nr=0,steps=0,具体实现是可以由用户u生成一个包含文本“u=v0,nr=0,steps=0”的令牌token;

2.2获取当前用户u的好友数(也就是节点u的度du)以及它的所有好友的好友数(也就是u的所有邻居节点v的节点度信息dv),并按照公式(1)计算自u到v的转移概率p(u,v);

2.3按照概率p(u,v),随机选取u的任一邻居节点v,作为下一步到达位置节点,同时步数计数器增加1,即steps=steps+1,更新令牌token中文本steps的值,并且将该包含更新后文本的token发给用户v,或者由网络爬虫携带更新后的令牌token来到用户v;

2.4用户v收到令牌token(或者网络爬虫来到用户v)后,按照如下策略执行相应操作:

1)若v≠v0,则令u=v,更新令牌token中对应u值,然后转2.2继续执行;

2)若v=v0且令牌中u≠v1,则令nr=nr+1,u=v,更新令牌token中nr及u值,然后转2.2继续执行;

3)若v=v0且令牌中u=v1,则令nr=nr+1,更新令牌token中nr值,本次模拟结束。记录令牌token中steps及nr中的值,得到向量(setps,nr)。

2.5重复2.1-2.4的过程,总共k轮。经过k轮游走后,用户v0处将收集到k组数据(setpsi,nri),(i=t+1,t+2,…,t+k)。其中stepsi是第i轮总共所需的步数,nri是第i轮中总共返回v0的次数(此前可能已不经v1返回v0多次)。

步骤3:计算网络用户(节点)总数估计值。

3.1令t=t+k,计算

3.2计算

以及

3.3将(6)和(7)的结果代入公式(4)和(5),本实施例得到网络节点总数n的两个不同估计值:

其中

步骤4:判定两个估计的相对偏差是否达到预期要求,由此决定模拟是否可以结束。计算若|flag|>rel,则转步骤2,继续模拟过程;若|flag|≤rel,模拟结束。以(或)作为网络用户(节点)总数n的估计。

当使用发送令牌token的方式来实现随机游走时,需要全体用户都能理解并按照预定的规则生成当前位置到任意相邻位置的转移概率、选择下一节点、更新和转发令牌,以此来实现随机游走策略的模拟;若使用网络爬虫来传递令牌时,网络爬虫就是一个随机游走代理,由它按照预定的规则生成随机游走转移概率、实现随机游走策略以及更新令牌token的值。

本实施例还提供一种即时通信网络用户数的估计系统,包括:即时通信网络用户选取模块、模拟变量值初始化模块、随机游走模块、估计值计算模块和网络用户总数估计输出模块;

在本实施例中,即时通信网络用户选取模块用于选取用户v0作为随机游走的入口,以及选取用户v0的一个好友用户v1作为返回观测点;模拟变量值初始化模块用于初始化模拟变量值;随机游走模块用于进行k轮随机游走,每轮随机游走均从用户v0出发,到首次从好友用户v1沿v1到用户v0的边返回用户v0结束,每轮随机游走记录数据;估计值计算模块用于计算网络用户总数的两个不同估计值网络用户总数估计输出模块用于在判定两个不同估计值的相对偏差达到预设值时,结束随机游走后将估计值作为网络用户总数的估计。

上述实施例为本发明较佳的实施方式,但本发明的实施方式并不受上述实施例的限制,其他的任何未背离本发明的精神实质与原理下所作的改变、修饰、替代、组合、简化,均应为等效的置换方式,都包含在本发明的保护范围之内。

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