一种网络图中的节点推荐方法和服务器与流程

文档序号:17757397发布日期:2019-05-24 21:24阅读:269来源:国知局
一种网络图中的节点推荐方法和服务器与流程

本发明涉及计算机技术领域,尤其涉及一种网络图中的节点推荐方法和服务器。



背景技术:

在大规模社交网络上,每个用户可以用一个节点来表示,通过节点之间的连边可以表示用户之间的关联性。例如,可以确定出社交网络中人与人之间的关系链。

现有技术提供一种分布式图处理框架,例如基于随机游走算法进行社交网络分析,随机游走算法可以应用到多种算法,比如个性化网页排名(personalizedpagerank,ppr)。现有技术提供的随机游走算法的实现方式中,在随机游走的每一步只选取一个节点,例如从当前节点v的邻居集合n(v)里根据对应边的概率选取一个节点u作为下一步的随机游走节点,判断当前节点v的停止条件,若随机游走的停止概率是α,其中0<α<1,按照该停止概率如果不停止,则继续选择随机游走节点,以扩展随机游走路径。若按照该停止概率停止,返回当前的随机游走路径,并停止整个计算过程。

基于现有技术的随机游走算法,一条长度为k的路径,需要随机游走k步。随机游走的停止概率是α,k的期望值是1/α。在很多业务场景中,α取值通常足够小,所以路径也会比较长,这就会导致比较多的计算量。另外在大规模社交网络中,计算每个点开始的随机游走,需要对网络图进行遍历,具有相当大的计算量,特别是在分布式的并行计算框架中,网络图的遍历还具有较高的通信代价。基于现有技术的随机游走算法进行社交关系的推荐,存在推荐效率低的问题。



技术实现要素:

本发明实施例提供了一种网络图中的节点推荐方法和服务器,用于提高随机游走算法的运行速度,增加业务数据的实时性,提高推荐效率。

本发明实施例提供以下技术方案:

一方面,本发明实施例提供一种网络图中的节点推荐方法,包括:

从推荐服务器中预先存储的网络图上获取到第一节点,所述网络图包括有n个节点,所述n个节点中存在通过边连接的相邻节点,所述n的取值为正整数,所述第一节点属于所述n个节点;

根据所述网络图获取以所述第一节点作为起点的第一随机游走路径,并确定所述第一随机游走路径的末端点为第二节点;

根据所述网络图获取所述第二节点对应的短路径集合,所述第二节点对应的短路径集合包括:以所述第二节点作为起点的m个短路径,所述m个短路径中的每个短路径包括:与所述第二节点通过边连接的相邻节点、路径概率和停止标志,所述m个短路径的路径概率之和等于1,所述m的取值为正整数;

从所述第二节点对应的短路径集合中随机地以所述路径概率选择出第一短路径,并将所述第一短路径拼接到所述第一随机游走路径的末端从而得到第二随机游走路径,所述第一短路径属于所述m个短路径;

当根据所述第一短路径的停止标志确定所述第二随机游走路径停止时,确定所述第二随机游走路径的末端点为第三节点,并向所述第一节点推荐所述第三节点。

另一方面,本发明实施例还提供一种推荐服务器,包括:

节点确定模块,用于从推荐服务器中预先存储的网络图上获取到第一节点,所述网络图包括有n个节点,所述n个节点中存在通过边连接的相邻节点,所述n的取值为正整数,所述第一节点属于所述n个节点;

末端点确定模块,用于根据所述网络图获取以所述第一节点作为起点的第一随机游走路径,并确定所述第一随机游走路径的末端点为第二节点;

短路径集合获取模块,用于根据所述网络图获取所述第二节点对应的短路径集合,所述第二节点对应的短路径集合包括:以所述第二节点作为起点的m个短路径,所述m个短路径中的每个短路径包括:与所述第二节点通过边连接的相邻节点、路径概率和停止标志,所述m个短路径的路径概率之和等于1,所述m的取值为正整数;

路径拼接模块,用于从所述第二节点对应的短路径集合中随机地以所述路径概率选择出第一短路径,并将所述第一短路径拼接到所述第一随机游走路径的末端从而得到第二随机游走路径,所述第一短路径属于所述m个短路径;

推荐模块,用于当根据所述第一短路径的停止标志确定所述第二随机游走路径停止时,确定所述第二随机游走路径的末端点为第三节点,并向所述第一节点推荐所述第三节点。

在前述方面中,推荐服务器的组成模块还可以执行前述一方面以及各种可能的实现方式中所描述的步骤,详见前述对前述一方面以及各种可能的实现方式中的说明。

另一方面,本发明实施例提供一种推荐服务器,该推荐服务器包括:处理器、存储器;存储器用于存储指令;处理器用于执行存储器中的指令,使得推荐服务器执行如前述一方面中任一项的方法。

另一方面,本发明实施例提供了一种计算机可读存储介质,所述计算机可读存储介质中存储有指令,当其在计算机上运行时,使得计算机执行上述各方面所述的方法。

在本发明实施例中,首先从推荐服务器中预先存储的网络图上获取到第一节点;根据网络图获取以第一节点作为起点的第一随机游走路径,并确定第一随机游走路径的末端点为第二节点;根据网络图获取第二节点对应的短路径集合,第二节点对应的短路径集合包括:以第二节点作为起点的m个短路径,m个短路径中的每个短路径包括:与第二节点通过边连接的相邻节点、路径概率和停止标志,m个短路径的路径概率之和等于1;从第二节点对应的短路径集合中随机地以路径概率选择出第一短路径,并将第一短路径拼接到第一随机游走路径的末端从而得到第二随机游走路径;当根据第一短路径的停止标志确定第二随机游走路径停止时,确定第二随机游走路径的末端点为第三节点,并向第一节点推荐第三节点。由于本发明实施例中从一个短路径集合里选择第一短路径,拼接在第一随机游走路径的末端点,从而可以生成第二随机游走路径,本发明实施例中生成的第二随机游走路径包括第一随机游走路径以及第一短路径。因此本申请实施例中可以有效地减少了生成随机游走路径的计算,提高随机游走算法的运行速度,增加业务数据的实时性,提高推荐效率。

附图说明

为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域的技术人员来讲,还可以根据这些附图获得其他的附图。

图1为本发明实施例提供的一种网络图中的节点推荐方法的流程方框示意图;

图2为本发明实施例提供的短路径集合的生成流程示意图;

图3为本发明实施例提供的随机游走算法的执行流程示意图;

图4为本发明实施例提供的短路径的存储数据结构示意图;

图5为本发明实施例提供的短路径集合的生成算法示意图;

图6为本发明实施例提供的基于短路径集合产生以v为起点的随机游走算法的流程示意图;

图7-a为本发明实施例提供的一种推荐服务器的组成结构示意图;

图7-b为本发明实施例提供的另一种推荐服务器的组成结构示意图;

图7-c为本发明实施例提供的另一种推荐服务器的组成结构示意图;

图8为本发明实施例提供的网络图中的节点推荐方法应用于服务器的组成结构示意图。

具体实施方式

本发明实施例提供了一种网络图中的节点推荐方法和服务器,用于提高随机游走算法的运行速度,增加业务数据的实时性,提高推荐效率。

为使得本发明的发明目的、特征、优点能够更加的明显和易懂,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,下面所描述的实施例仅仅是本发明一部分实施例,而非全部实施例。基于本发明中的实施例,本领域的技术人员所获得的所有其他实施例,都属于本发明保护的范围。

本发明的说明书和权利要求书及上述附图中的术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,以便包含一系列单元的过程、方法、系统、产品或设备不必限于那些单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它单元。

以下分别进行详细说明。

本发明网络图中的节点推荐方法的一个实施例,具体可以应用于网络图中向一个节点推荐另一个节点的场景中,例如社交场景中的好友推荐,游戏场景中的师徒推荐等,本发明实施例中的网络图可以预先存储在推荐服务器中。请参阅图1所示,本发明一个实施例提供的网络图中的节点推荐方法,可以包括如下步骤:

101、从推荐服务器中预先存储的网络图上获取到第一节点,网络图包括有n个节点,n个节点中存在通过边连接的相邻节点,n的取值为正整数,第一节点属于n个节点。

在本发明实施例中,推荐服务器中预先存储网络图,该网络图包括有n个节点,n个节点中存在通过边连接的相邻节点,即在网络图中有的相邻节点之间通过边连接起来,有的相邻节点之前没有边连接。本发明实施例中的网络图可以是有向网络图,或者无向网络图。以有向网络图为例,举例说明如下,在游戏社交网络中,玩家s给玩家t赠送游戏金币,玩家s和玩家t之间具有赠送游戏金币的关系,因此两个玩家分别对应的节点之间通过边连接起来。在本发明的一些实施例中,在有向网络图中的边还可以具有权重,该权重也可以称为边概率。例如,a(s,t)可计算为玩家s给玩家t送了a(s,t)个游戏金币,a(s,t)可以表示相邻节点之间的边的权重。以无向网络图为例,每个用户用于无向网络图中的一个节点来表示,两个用户之间存在社交关系时,这两个节点之间可以建立有边,该边不具有方向性。

在本发明实施例中,第一节点属于网络图中的某一个节点,该第一节点可以作为随机游走的起点。

例如网络图也可以简称为图,图g=(v,e,p),网络图可以是社交网络结构图g,其中v是节点集合,e是边集合,p是边概率映射函数。如果节点u到节点v有边,则(u,v)在e中,p(u,v)是这条边上的概率值。网络图中的相邻节点指的是节点u以及该节点的好友节点,例如如果说节点v是节点u的好友,则网络结构图g中存在一条边(u,v)∈e。节点u的邻居节点集合指的是节点u的好友节点构成的好友集合,节点u的好友节点的集合表示为n(u),那么,节点v的邻居节点的边概率满足如下关系:

∑v∈n(u)p(u,v)=1。

102、根据网络图获取以第一节点作为起点的第一随机游走路径,并确定第一随机游走路径的末端点为第二节点。

在本申请实施例中,第一节点作为起点,从网络图中获取到第一随机游走路径,在初始状态时第一随机游走路径的起点和终点都是同一个节点,初始状态时第一随机游走路径的长度为0,随着随机游走算法的计算,第一随机游走路径的长度不断扩展,假设在步骤102的当前随机游走环节中第一随机游走路径的末端点为第二节点。

在本发明实施例中通过蒙特卡罗的方法(monte-carlomethod)进行随机游走,蒙特卡罗的方法也称统计模拟方法,被提出的一种以概率统计理论为指导的一类非常重要的数值计算方法,蒙特卡罗的方法使用随机数(或伪随机数)来解决确定性算法,随机数是实现蒙特卡罗模拟的基本工具,因此首先需要确定一个停止概率。

在本发明实施例中,随机游走(randomwalk)也称随机漫步,随机游走是指基于过去的表现,无法预测将来的发展步骤和方向。核心概念是指任何无规则行走者所带的守恒量都各自对应着一个扩散运输定律,接近于布朗运动,是布朗运动理想的数学状态,本发明实施例中通过随机游走路径来评估两个节点之间的关联关系。本申请实施例中,一条随机游走是社交网络中的一条路径,起点和终点可以是网络图中的任意点。其产生方式是从起点开始,以边上的概率随机地选择邻居节点,直至路径停止为止。随机游走路径的停止条件可以有多种,例如停止条件可以是路径长度的限制,或者以预置的停止概率α随机地停止,其中0<α<1。

在本申请实施例中,随机游走路径是一条包括至少一个节点的路径,例如路径p=<v1,v2,…,vk>:社交网络的一条路径是一个点序列v1,v2,…,vk,满足对于任意的(vi,vi+1)∈e都是网络图上的一条边,其中1≤i<k。随机游走路径具有一个路径长度,例如一条路径p=<v1,v2,…,vk>的长度是p中边的数量,也就是k-1,表示为len(p)=k-1。

在本发明的一些实施例中,步骤102确定第一随机游走路径的末端点为第二节点之后,本发明实施例提供的网络图中的节点推荐方法在执行后续的步骤103之前,还可以包括如下步骤:

根据网络图获取第二节点的邻居节点集合;

确定邻居节点集合的节点个数是否大于预设的短路径数量上限;

当邻居节点集合的节点个数大于短路径数量上限时,触发执行如下步骤103:根据网络图获取第二节点对应的短路径集合。

其中,在确定是否生成短路径集合之前,获取短路径数量上限γ,则每个短路径集合中路径的个数小于γ。如果第二节点的邻居节点集合的节点个数大于短路径数量上限时,满足γ的条件,此时可以执行后续步骤103来生成短路径集合。另外,如果有的节点具有较多的邻居节点,则该节点的邻居节点集合大小可能就已经超过γ。本发明实施例中可以采用混合的方式,让邻居节点集合和短路径集合并存,一起在随机游走生成中发挥作用。

进一步的,在本发明的一些实施例中,前述的确定邻居节点集合的节点个数是否大于预设的短路径数量上限之后,本发明实施例提供的方法还可以包括如下步骤:

当邻居节点集合的节点个数大于短路径数量上限时,从邻居节点集合中随机地选择出第五节点,将第五节点拼接到第一随机游走路径的末端从而得到第四随机游走路径;

以预设的停止概率在第四随机游走路径上进行随机游走;

当第四随机游走路径停止时,向第一节点推荐第五节点。

其中,当邻居节点集合的节点个数大于短路径数量上限时,此时不再执行后续步骤103,而是从邻居节点集合中随机地选择出第五节点,将第五节点拼接到第一随机游走路径的末端从而得到第四随机游走路径,接下来进行第四随机游走路径上进行随机游走,当第四随机游走路径停止时,向第一节点推荐第五节点。若第四随机游走路径没有停止,此时仍需要从第四随机游走路径的末端点的邻居节点集合中随机地选择邻居节点进行路径扩展。例如,如果节点u的邻居节点集合大小已经超过γ,则不继续生成u的短路径集合d(u)。在生成随机游走的时候,访问到节点u,需要检查u是否存在短路径集合d(u),如果u有短路径集合d(u),则从d(u)里随机选择一条路径。如果u没有短路径集合,则从邻居节点集合n(u)中随机选择一个节点,并且以α的停止概率停止掉这条路径。

103、根据网络图获取第二节点对应的短路径集合,第二节点对应的短路径集合包括:以第二节点作为起点的m个短路径,m个短路径中的每个短路径包括:与第二节点通过边连接的相邻节点、路径概率和停止标志,m个短路径的路径概率之和等于1,m的取值为正整数。

在本发明实施例中,在获取到第一随机游走路径的末端点是第二节点之后,根据网络图获取到该第二节点对应的短路径集合。本发明实施例中网络图中每个节点对应的短路径集合可以提前计算完成之后存储在推荐服务器的内存中,在确定出随机游走路径的末端点之后,直接从内存中获取到该末端点对应的短路径集合。

在本发明实施例中,第二节点对应的短路径集合也可以称为多步路径集合,是以第二节点为起点的短路径或者多步路径的集合。在后续实施例中以短路径集合来确定出短路径,并添加到第一随机游走路径的末端。

在本发明实施例中,第二节点对应的短路径集合包括:以第二节点作为起点的m个短路径,m个短路径中的每个短路径包括:与第二节点通过边连接的相邻节点、路径概率和停止标志,m个短路径的路径概率之和等于1,m的取值为正整数。

其中,在网络图中与第二节点有边连接的邻居节点为m个时,短路径集合中就可以包括有m个短路径。对于m个短路径中的每个短路径都具有如下三个要素:与第二节点通过边连接的相邻节点、路径概率和停止标志,其中,在短路径集合d(u)中,每条路径p=<u,v1,v2,…,vt>,并且每条短路径带有一个路径概率,以及一个停止标志,如果p是一条停止的短路径,则m(p)=1;否则,p是一条未停止的短路径,也就是m(p)=0。本发明实施例中短路径集合包含了停止的和未停止的路径集合,因此为了区分,加上了停止标志。当把停止的短路径,拼到了随机游走路径的末端,则拼接之后的随机游走停止。另一方面,如果把未停止的短路径,拼接到了随机游走路径的末端,则拼接后的随机游走路径未停止,可以继续扩展,继续进行随机游走路径的扩展。

在本申请实施例中,短路径集合和随机游走路径可以是完整的路径,也可以只存储路径的起点和末端点。如果只存储了完整路径,则短路径集合中的短路径长度还需要满足如下关系:

m个短路径中的最大路径长度为第一长度阈值;

以第二节点作为起点的路径长度小于或等于第一长度阈值的短路径属于第二节点对应的短路径集合;

m个短路径的路径长度之和小于预设的短路径数量上限。

其中,设置m个短路径中的最大路径长度为第一长度阈值,例如第一长度阈值为s(u),那么只要以第二节点作为起点的路径长度小于或等于第一长度阈值的短路径,必然会属于第二节点对应的短路径集合。另外,设置短路径数量上限,例如短路径数量上限为γ。社交网络上的一个节点u的短路径集合d(u)包含了所有以u为起点的长度最多为s(u)的路径。其中,s(u)的取值与上限γ有关,使得d(u)的路径大小之和不超过γ。举例说明,对d(u)里的所有路径的长度(或者大小)进行求和。比如,如果d(u)里有3条路径,长度分别是3,2,4,那么所有路径的大小之和就是3+2+4=9,γ的取值必然大于9。

进一步的,在本申请的一些实施例中,m个短路径中停止标志为未停止的短路径的路径长度等于第一长度阈值;

m个短路径中停止标志为停止的短路径的路径长度小于或等于第一长度阈值。

其中,短路径用p来表示,如果p∈d(u),并且p是一条未停止的路径,也就是m(p)=0,当本发明实施例使用d(u)来生成随机游走路径的时候,如果随机挑选到了未停止路径,则可以继续做下一步的路径生成,如果p是一条停止的路径,则m(p)=1,此时无需再进行随机游走路径的扩展,输出该停止的路径。

接下来对本申请实施例中短路径集合的生成方式进行举例说明,可以理解的是,短路径集合的生成方式不局限于后续的举例,也可以采用基于后续举例进行同等的适当公式变形以生成短路径集合,只要满足上述短路径集合要求的生成方式都是可行的。举例说明如下,本发明实施例先给定社交网络的一个节点u,为了生成短路径集合d(u),则需要计算从u为起点的所有长度不超过s(u)的路径,使得d(u)的路径大小之和不超过γ,s(u)表示短路径的最大长度,γ表示短路径数量上限。

如图2所示,为本发明实施例提供的短路径集合的生成流程示意图。在本申请的一些实施例中,步骤103根据网络图获取第二节点对应的短路径集合,包括:

步骤1、根据网络图获取第二节点的邻居节点集合,并根据第二节点的邻居节点集合确定初始化的未停止路径集合,未停止路径集合包括:第一二元组,第一二元组包括:第一路径和第一路径对应的边概率。

其中,首先基于网络图获取第二节点的邻居节点集合,例如第二节点用节点u表示,可以获取节点u的好友集合作为邻居节点集合,节点u的好友节点的集合表示为n(u,那么邻居节点集合中的邻居节点满足如下关系:

∑v∈n(u)p(u,v)=1。

在未停止路径集合中包括有二元组,例如包括第一二元组,该第一二元组包括:第一路径和第一路径对应的边概率,其中第一路径表示的是未停止路径集合中的任意一个路径。初始化一个未停止路径集合f(u)为节点u的邻居集合,f(u)的初始集合里每个路径p的概率p(p)是对应的边概率。

步骤2、根据初始化的未停止路径集合确定初始化的停止路径集合。

其中,停止路径集合用b(u)表示,初始化一个停止路径集合b(u)=f(u)

步骤3、根据第二节点的邻居节点集合的节点个数确定初始化的路径数量计数器。

其中,路径数量计数器用c来表示,路径数量计数器也可以称为所有路径个数计数器,或者简称计数器,初始化短路径集合的所有路径个数计数器c=2|n(u)|,其中,n(u)是u的邻居节点集合,|n(u)|表示邻居节点集合的节点个数。

步骤4、判断路径数量计数器是否大于预置的短路径数量上限,当路径数量计数器大于预置的短路径数量上限时,触发执行后续的步骤9;当路径数量计数器小于或等于预置的短路径数量上限时,触发执行后的步骤5。

其中,短路径数量上限用γ表示,判断出c>γ,跳到步骤9,判断出c≤γ,跳到步骤5。

步骤5、确定第一路径的末端点为第六节点,从第六节点的邻居节点集合中获取到第七节点,并将第七节点拼接到第一路径的末端从而得到第二路径,并根据第一路径对应的边概率和预设的停止概率确定第二路径的路径概率,将第二路径和第二路径的路径概率构成的第二二元组加入到第一临时路径集合中。

其中,c≤γ时执行步骤5,初始状态时调取一个空列表a(u)作为第一临时路径集合,对于未停止路径集合中的第一路径,假设第一路径的末端点为第六节点,根据网络图可以从第六节点的邻居节点集合中获取到第七节点,并将第七节点拼接到第一路径的末端从而得到第二路径。然后可以根据第一路径对应的边概率和预设的停止概率确定第二路径的路径概率,例如预设的停止概率为α,第二路径的路径概率通过第一路径对应的边概率和预设的停止概率确定,第二路径和第二路径的路径概率构成的第二二元组,再将第二二元组加入到第一临时路径集合中。

举例说明如下,对f(u)里的每一条路径<p,p(p)>,取p的末端点x。把x的邻居集合n(x)里的每一个节点y分别加到p的末端,形成新的路径p’,设置p(p′)=p(p)·p(x,y)·(1-α),并且把<p′,p(p′)>加入到第一临时路径集合a(u)里。若有两个y分别为y1和y2,那么需要形成两个路径p’。

步骤6、从第一临时路径集合中查找起点和末端点都相同的t个第三路径,并将t个第三路径各自对应的路径概率进行合并,将第三路径和t个路径概率之和构成的第三二元组加入到第二临时路径集合中,t为正整数。

其中,通过步骤5的方式生成第一临时路径集合之后,在第一临时路径集合中查找起点和末端点都相同的路径,将起点和末端点都相同的路径都称为第三路径,假设在第一临时路径集合中共有t个第三路径,每个第三路径都对应有一个路径概率,将这些路径概率合并为一个概率,即t个路径概率之和,将第三路径和t个路径概率之和构成第三二元组,初始状态时调取一个空列表a’(u)作为第二临时路径集合,第三二元组加入到第二临时路径集合中。

步骤7、使用第二临时路径集合替换未停止路径集合,以及将第二临时路径集合中的第三二元组加入到停止路径集合中。

其中,第二临时路径集合为a’(u),用a’(u)替换f(u),同时把a’(u)里的二元组加入到b(u)中。

步骤8、将第二临时路径集合的路径长度之和加入到路径数量计数器中,使用扩充后的路径数量计数器触发执行前述的步骤4。

其中,扩展初始化的路径数量计数器,将第二临时路径集合的路径长度之和加入到路径数量计数器中,使用扩充后的路径数量计数器从新执行前述的步骤4。

步骤9、根据第一二元组和预设的停止概率生成第一三元组,第一三元组包括:第一路径、第一路径对应的路径概率、取值为第一数值的停止标志;将第一三元组加入到第二节点对应的短路径集合中。

其中,把f(u)里的每个二元组<p,p(p)>,形成一个三元组z1=<p,p(p)·(1-α),0>,并把z1加入d(u)中。

步骤10、根据停止路径集合中的第三二元组和预设的停止概率生成第二三元组,第二三元组包括:第三路径、第三路径对应的路径概率、取值为第二值的停止标志;将第二三元组加入到第二节点对应的短路径集合中。

其中,把b(u)里的每个二元组<p,p(p)>,形成一个三元组z2=<p,p(p)·α,1>,并把z2加入d(u)中。

步骤11、在通过步骤9和步骤10得到第二节点对应的短路径集合之后,输出第二节点对应的短路径集合。

其中,步骤9和步骤10中都可以扩充第二节点对应的短路径集合d(u),最后输出该第二节点对应的短路径集合。

需要说明的是,在上述步骤1至步骤11的实施例中,步骤5至步骤9是个循环结构,步骤4是判断分支,只有在路径数量计数器大于预置的短路径数量上限时,触发执行后续的步骤9,通过步骤9和步骤10可以扩充第二节点对应的短路径集合,生成了第二节点对应的短路径集合。不限定的是,本发明实施例中网络图中的其它节点对应的短路径集合也可以按照此方式来生成,从而可以得到网络图中每个节点对应的短路径集合,在随机游走算法中可以通过从短路径集合中直接拼接短路径到随机游走路径上,从而实现了快速的随机游走。

104、从第二节点对应的短路径集合中随机地以路径概率选择出第一短路径,并将第一短路径拼接到第一随机游走路径的末端从而得到第二随机游走路径,第一短路径属于m个短路径。

在本申请实施例中,第二节点对应的短路径集合中包括有m条短路径,且每个短路径有设置有相应的路径概率和停止标志,接下来从第二节点对应的短路径集合中随机地以路径概率选择出第一短路径,则选择出的第一短路径属于m个短路径。然后将第一短路径拼接到第一随机游走路径的末端从而得到第二随机游走路径,也就是说,本发明实施例中生成的第二随机游走路径包括第一随机游走路径以及第一短路径。本发明实施例中计算随机游走路径,可以从短路径集合里选择一条路径,拼接到当前计算的随机游走路径的末端,而不需要针对单个节点再进行随机游走,减少了生成随机游走路径的计算量,提高了随机游走算法的执行效率。

在本申请实施例中,在生成第二随机游走路径之后,根据第一短路径的停止标志判断是否执行步骤105,当确定第二随机游走路径停止时执行后续步骤105。

105、当根据第一短路径的停止标志确定第二随机游走路径停止时,确定第二随机游走路径的末端点为第三节点,并向第一节点推荐第三节点。

在本申请实施例中,第二节点对应的短路径集合中包括有m条短路径,且每个短路径有设置有相应的路径概率和停止标志,对于当前生成的第二随机游走路径,该第二随机游走路径的末端为第一短路径,获取到该第一短路径的停止标志,若该停止标志的取值为第一值(例如取值为0),则表示把停止的短路径拼到了第二随机游走路径的末端,则拼接之后的第二随机游走路径停止。若该停止标志的取值为第二值(例如取值为1),则表示把未停止的短路径拼接到了第二随机游走路径的末端,则拼接后的第二随机游走路径未停止,可以继续扩展,继续对第二随机游走路径进行扩展。

在本发明的一些实施例中,在步骤104将第一短路径拼接到第一随机游走路径的末端从而得到第二随机游走路径之后,本发明实施例提供的网络图中的节点推荐方法除了执行前述的步骤105,还可以包括如下步骤:

a1、当根据第一短路径的停止标志确定第二随机游走路径未停止时,确定第二随机游走路径的末端点为第三节点,并根据网络图获取第三节点对应的短路径集合;

a2、从第三节点对应的短路径集合中选择出第二短路径,并将第二短路径拼接到第二随机游走路径的末端从而得到第三随机游走路径;

a3、当根据第二短路径的停止标志确定第三随机游走路径停止时,确定第三随机游走路径的末端点为第四节点,并向第一节点推荐第四节点。

在生成第二随机游走路径之后,根据第一短路径的停止标志判断是否执行步骤105,当确定第二随机游走路径没有停止时执行前述的步骤a1至步骤a3。其中,本发明实施例中网络图中每个节点对应的短路径集合可以提前计算完成之后存储在推荐服务器的内存中,在确定出随机游走路径的末端点之后,直接从内存中获取到该末端点对应的短路径集合。当第二随机游走路径未停止时,根据网络图获取第三节点对应的短路径集合,则第三节点对应的短路径集合包括:以第三节点作为起点的q个短路径,q个短路径中的每个短路径包括:与第三节点通过边连接的相邻节点、路径概率和停止标志,q个短路径的路径概率之和等于1。接下来从第三节点对应的短路径集合中选择出第二短路径,并将第二短路径拼接到第二随机游走路径的末端从而得到第三随机游走路径,最后判断第三随机游走路径是否停止,当根据第二短路径的停止标志确定第三随机游走路径停止时,确定第三随机游走路径的末端点为第四节点,并向第一节点推荐第四节点。

需要说明的是,当根据第一短路径的停止标志确定第二随机游走路径未停止时,需要执行步骤a1至步骤a3的路径扩展方案,当根据第二短路径的停止标志确定第三随机游走路径停止时不再继续进行路径扩展,当根据第二短路径的停止标志确定第三随机游走路径没有停止时,仍需要反复执行步骤a1至a3,直至当前的随机游走路径停止,此时根据停止的当前随机游走路径的末端点向第一节点进行节点推荐。

通过以上实施例对本发明实施例的描述可知,首先从推荐服务器中预先存储的网络图上获取到第一节点;根据网络图获取以第一节点作为起点的第一随机游走路径,并确定第一随机游走路径的末端点为第二节点;根据网络图获取第二节点对应的短路径集合,第二节点对应的短路径集合包括:以第二节点作为起点的m个短路径,m个短路径中的每个短路径包括:与第二节点通过边连接的相邻节点、路径概率和停止标志,m个短路径的路径概率之和等于1;从第二节点对应的短路径集合中随机地以路径概率选择出第一短路径,并将第一短路径拼接到第一随机游走路径的末端从而得到第二随机游走路径;当根据第一短路径的停止标志确定第二随机游走路径停止时,确定第二随机游走路径的末端点为第三节点,并向第一节点推荐第三节点。由于本发明实施例中从一个短路径集合里选择第一短路径,拼接在第一随机游走路径的末端点,从而可以生成第二随机游走路径,本发明实施例中生成的第二随机游走路径包括第一随机游走路径以及第一短路径。因此本申请实施例中可以有效地减少了生成随机游走路径的计算,提高随机游走算法的运行速度,增加业务数据的实时性,提高推荐效率。

为便于更好的理解和实施本发明实施例的上述方案,下面举例相应的应用场景来进行具体说明。

本发明实施例提出了一个基于多步路径的随机游走计算方法。具体来说,本发明实施例先为每个好友数量少的节点,好友数量少的节点,就是网络图中与这个节点连接的邻居节点个数少,计算一个完整的短路径集合。因此,当一条随机游走路径访问到了这些节点,可以直接从多步路径集合中选取,有效地缩短了计算轮数。根据幂法则(powerlaw)定律,在大部分社交网络中,好友数量少的节点占据了绝大部分,因此本申请实施例可以显著地减少计算代价。

本发明实施例中采用短路径来加快随机游走。与现有技术方案不一样,随机游走路径的末端点从一个短路径集合里选择一条短路径,拼接在随机游走路径的末端。因此本发明实施例可以有效地减少随机游走计算的轮数,减少了生成随机游走路径的计算量,加快计算速度。

本发明实施例提供的随机游走算法可以应用到游戏社交网络的各种推荐中,比如游戏领域中的好友推荐和师徒推荐。在这些推荐场景中,本发明实施例通过从每个用户开始在游戏社交网络上做一定数量的随机游走,基于这些随机游走对游走访问到的其他用户做排序。例如,使用随机游走访问到节点的次数作为排序依据。根据这些排序结果,本发明实施例可以得到最后的推荐结果。

如图3所示,为本发明实施例提供的随机游走算法的执行流程示意图。主要包括如下三个流程:

s01、设置短路径集合的路径数量上限γ;

s02、对每个节点u,计算u的短路径集合d(u);

s03、基于短路径集合d(u),计算以节点u为起点的随机游走路径。

接下来,本发明实施例先介绍短路径集合的定义和特点,然后介绍如何设置短路径集合的路径数量上限γ。在这之后,本发明实施例阐述生成短路径集合的算法。最后,本发明实施例将介绍基于短路径集合生成随机游走路径的算法。

首先说明短路径集合,社交网络上的一个节点u的短路径集合d(u)包含了所有以u为起点的长度最多为s(u)的路径。其中,s(u)的取值与上限有关,使得d(u)的路径大小之和不超过γ。

在短路径集合d(u)中,每条路径p=<u,v1,v2,…,vt>的长度为t≤s(u),并且带有一个概率p(p)∈[0,1],以及一个停止标志m(p)。如果p是一条停止的路径,则m(p)=1;否则,p是一条未停止的路径,也就是m(p)=0。图4为本发明实施例提供的短路径的存储数据结构示意图,短路径集合里的一条路径的数据结构可以包括:路径p、p的概率和停止标志。

因此,本发明实施例可以用数学表达式来表示短路径集合d(v1)为

d(v1)={<p,p(p),m(p)>|p=<v1,v2,...,vt〉,t≤s(v1),(v1,vi+1)∈e,1≤i≤t}。

其中,e是网络图的边集合。

本发明实施例用短路径集合来加快随机游走的生成,则短路径集合d(u)满足以下几个特点:

1、如果p∈d(u),并且p是一条未停止的路径,也就是m(p)=0,则len(p)=s(u)。d(u)中未停止的路径的长度等于d(u)中最长路径的长度。因此,当本发明实施例使用d(u)来生成随机游走路径的时候,如果随机挑选到了未停止路径,则可以继续做下一步的路径生成。

2、对于任何一条从u开始的路径p,如果len(p)≤s(u),则p一定出现在d(u)中。也就是说,d(u)包含了所有从u开始的长度不超过s(u)的路径。

3、d(u)里所有路径的概率和等于1,也就是∑<p,p(p),m(p)〉∈d(u)p(p)=1。d(u)包含了从u开始的长度不超过s(u)的随机游走路径的所有情况。

接下来说明短路径集合的路径数量上限γ的设置。如果短路径集合过大,则会造成内存耗尽。但是如果短路径集合太小,可能起不到加快计算速度的效果,反而会带来额外的计算量。本发明实施例设计一种启发式方式来设置γ的大小。

节点u的短路径集合的存储代价可以估算为

m(u)=∑<p,p(p),m(p)>∈d(u)len(p)≤γ。

其中,用m来表示可用的内存存储空间,因此本发明实施例中存在如下关系:

m(u)·|v|≤m,

其中,|v|是短路径集合中的节点数量,v是节点集合。

本发明实施例可以设置短路径集合的路径数量上限满足如下关系:

接下来说明生成短路径集合的过程,图5为本发明实施例提供的短路径集合的生成算法示意图,给定社交网络的一个节点u,为了生成短路径集合d(u),则需要计算从u为起点的所有长度不超过s(u)的路径,使得d(u)的路径大小之和不超过γ。计算d(u)的步骤如下:

s11、初始化一个未停止路径集合f(u)为u的邻居集合,f(u)满足如下关系:f(u)={<p=<v>,p(p)=p(u,v)>|v∈n(u)}。

其中,f(u)的初始集合里每个路径p的概率p(p)是对应边的概率。

s12、初始化一个停止路径集合b(u)=f(u)。

s13、初始化短路径集合的所有路径个数计数器c=2|n(u)|。

s14、如果c>γ,跳到步骤s11。

s15、如果c≤γ,调取列表a(u),在初始状态时创建空列表a(u)。

s16、对f(u)里的每一条路径<p,p(p)>,取p的末端点x。把x的邻居集合n(x)里的每一个节点y分别加到p的末端,形成新的路径p’,则该新的路径p’可以包括原来的路径p以及添加的邻居集合n(x)里的节点y。设置p(p′)=p(p)·p(x,y)·(1-α),并且把<p′,p(p′)>加入到临时路径集合a(u)里。

s17、把a(u)里具有相同起点和终点的二元组,<p,p1>,<p,p2>,…,<p,pt>,合并为一个<p,p1+p2+…+pt>,其中t>0,最终得到新的集合a′(u)。二元组<p,p1>表示一条路径p以及这条路径的生成概率p1。

s18、用a′(u)替换f(u)。

s19、把a′(u)里的二元组加入到b(u)中。

s20、增加c为c+∑<p,p(p)>∈a′(u)len(p),跳到步骤s14。

s21、把f(u)里的每个二元组<p,p(p)>,形成一个三元组z1=<p,p(p)·(1-α),0>,并把z1加入d(u)中。

s22、把b(u)里的每个二元组<p,p(p)>,形成一个三元组z2=<p,p(p)·α,1>,并把z2加入d(u)中。

s23、返回d(u),并结束程序。

在上述计算流程中,本发明实施例枚举了一个节点的所有邻居来生成路径,可以证明得到以下结论:如果d(u)里路径的最大长度是s(u),则以u为起点的长度不超过s(u)的路径一定出现在d(u)中。d(u)所有路径的概率之和为1。

接下来说明生成随机游走路径的过程,图6为本发明实施例提供的基于短路径集合产生以v为起点的随机游走算法的流程示意图。基于上述的每个节点u的短路径集合d(u),一个起点为v的随机游走生成算法具有以下几个步骤:

s31、初始化路径p为只包含v的单节点路径,也就是p=<v>。

s32、取出p的最后一个节点,也就是末端点x。

s33、从x的短路径集合d(x)里随机地以p(p’)的概率选择一个三元组<p’,p(p’),m(p’)>。

s34、把p’拼接到p的末端。

s35、如果p’是一条未停止路径,也就是m(p’)=0,则跳到步骤s32,继续扩展路径。

s36、否则,返回路径p,并停止这个过程。

需要说明的是,在本申请的上述实施例中,短路径集合和随机游走路径,除了可以是完整的路径,也可以只存储路径的起点和末端点。如果只存储两个节点来表示路径,短路径集合大小的上限γ的设置只需考虑集合内的路径数量,而不用考虑路径长度。在扩展路径时,只需要保留起点,并且把新的节点替换掉末端点。

另外,如果有的节点具有较多的好友,则该节点的好友集合大小可能就已经超过γ。为了解决这个问题,可以采用混合的方式,也就是让好友集合和短路径集合并存,一起在随机游走生成中发挥作用。好友集合也可以看成是短路径集合,只是每个路径的长度是0,也就是做路径的起点和终点都是这个节点。另外,为了把好友集合当成短路径集合,还需要计算停止的和未停止的路径。如果u的好友集合大小已经超过γ,则不继续生成u的短路径集合d(u)。在生成随机游走的时候,访问到节点u,需要检查u是否存在短路径集合d(u)。如果u有短路径集合d(u),则从d(u)里随机选择一条路径。否则,如果u没有短路径集合,则从n(u)中随机选择一个节点,并且以α的概率停止掉这条路径。

通过前述的举例说明可知,本发明实施例可以提高随机游走算法的运行速度,增加业务数据的实时性,减轻计算资源紧张问题。本发明实施例可以提升推荐速度,随机游走可以应用到节点推荐算法,例如personalizedpagerank、node2vec等算法中,本发明实施例可以极大地增加这些算法的效率。本发明实施例还可以提升推荐效率。例如在游戏社交网络上,本发明实施例为每个玩家计算多条随机游走路径,使用随机游走访问到节点的次数来对节点排序,从而生成好友推荐或者师徒推荐的推荐结果。具体来说,如果从玩家a开始计算的随机游走路径中,访问到玩家b的次数比玩家c的次数多,而给玩家a的推荐列表中,玩家b的次序要高于玩家c在推荐列表中的次序。本发明实施例采用相同的实验环境,基于分布式计算系统(spark),采用了100个机器(executors),每个16gb内存,4个核(cores)。两个都是一样的计算任务:为图里的每个节点生成50个随机游走。如果没有采用短路径集合的方案,需要运行20个小时左右;但是如果采用了本发明实施例提供的方案,则只需6个小时左右。

需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明并不受所描述的动作顺序的限制,因为依据本发明,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本发明所必须的。

为便于更好的实施本发明实施例的上述方案,下面还提供用于实施上述方案的相关装置。

请参阅图7-a所示,本发明实施例提供的一种推荐服务器700,可以包括:节点确定模块701、末端点确定模块702、短路径集合获取模块703、路径拼接模块704和推荐模块705,其中,

节点确定模块701,用于从推荐服务器中预先存储的网络图上获取到第一节点,所述网络图包括有n个节点,所述n个节点中存在通过边连接的相邻节点,所述n的取值为正整数,所述第一节点属于所述n个节点;

末端点确定模块702,用于根据所述网络图获取以所述第一节点作为起点的第一随机游走路径,并确定所述第一随机游走路径的末端点为第二节点;

短路径集合获取模块703,用于根据所述网络图获取所述第二节点对应的短路径集合,所述第二节点对应的短路径集合包括:以所述第二节点作为起点的m个短路径,所述m个短路径中的每个短路径包括:与所述第二节点通过边连接的相邻节点、路径概率和停止标志,所述m个短路径的路径概率之和等于1,所述m的取值为正整数;

路径拼接模块704,用于从所述第二节点对应的短路径集合中随机地以所述路径概率选择出第一短路径,并将所述第一短路径拼接到所述第一随机游走路径的末端从而得到第二随机游走路径,所述第一短路径属于所述m个短路径;

推荐模块705,用于当根据所述第一短路径的停止标志确定所述第二随机游走路径停止时,确定所述第二随机游走路径的末端点为第三节点,并向所述第一节点推荐所述第三节点。

在本申请的一些实施例中,所述短路径集合获取模块703,还用于将所述第一短路径拼接到所述第一随机游走路径的末端从而得到第二随机游走路径之后,当根据所述第一短路径的停止标志确定所述第二随机游走路径未停止时,确定所述第二随机游走路径的末端点为第三节点,并根据所述网络图获取所述第三节点对应的短路径集合;

所述路径拼接模块704,还用于从所述第三节点对应的短路径集合中选择出第二短路径,并将所述第二短路径拼接到所述第二随机游走路径的末端从而得到第三随机游走路径;

所述推荐模块705,还用于当根据所述第二短路径的停止标志确定所述第三随机游走路径停止时,确定所述第三随机游走路径的末端点为第四节点,并向所述第一节点推荐所述第四节点。

在本申请的一些实施例中,请参阅图7-b所示,所述推荐服务器700还包括:

邻居节点获取模块706,用于所述末端点确定模块702确定所述第一随机游走路径的末端点为第二节点之后,根据所述网络图获取所述第二节点的邻居节点集合;

节点数确定模块707,用于确定所述邻居节点集合的节点个数是否大于预设的短路径数量上限;当所述邻居节点集合的节点个数大于所述短路径数量上限时,触发执行所述短路径集合获取模块703。

进一步的,在本申请的一些实施例中,请参阅图7一c所示,相对于图7-b所示,所述推荐服务器700还包括:随机游走模块708,其中,

所述邻居节点获取模块706,还用于所述节点数确定模块确定所述邻居节点集合的节点个数是否大于预设的短路径数量上限之后,当所述邻居节点集合的节点个数大于所述短路径数量上限时,从所述邻居节点集合中随机地选择出第五节点,将所述第五节点拼接到所述第一随机游走路径的末端从而得到第四随机游走路径;

所述随机游走模块708,用于以预设的停止概率在所述第四随机游走路径上进行随机游走;

所述推荐模块705,还用于当所述第四随机游走路径停止时,向所述第一节点推荐所述第五节点。

在本申请的一些实施例中,所述m个短路径中的最大路径长度为第一长度阈值;

以所述第二节点作为起点的路径长度小于或等于所述第一长度阈值的短路径属于所述第二节点对应的短路径集合;

所述m个短路径的路径长度之和小于预设的短路径数量上限。

在本申请的一些实施例中,所述m个短路径中停止标志为未停止的短路径的路径长度等于所述第一长度阈值;

所述m个短路径中停止标志为停止的短路径的路径长度小于或等于所述第一长度阈值。

在本申请的一些实施例中,所述短路径集合获取模块703,还用于执行如下步骤1至步骤11,其中,

步骤1、根据所述网络图获取所述第二节点的邻居节点集合,并根据所述第二节点的邻居节点集合确定初始化的未停止路径集合,所述未停止路径集合包括:第一二元组,所述第一二元组包括:第一路径和所述第一路径对应的边概率;

步骤2、根据所述初始化的未停止路径集合确定初始化的停止路径集合;

步骤3、根据所述第二节点的邻居节点集合的节点个数确定初始化的路径数量计数器;

步骤4、判断路径数量计数器是否大于预置的短路径数量上限,当路径数量计数器大于预置的短路径数量上限时,触发执行后续的步骤9;当路径数量计数器小于或等于预置的短路径数量上限时,触发执行后的步骤5;

步骤5、确定所述第一路径的末端点为第六节点,从所述第六节点的邻居节点集合中获取到第七节点,并将所述第七节点拼接到所述第一路径的末端从而得到第二路径,并根据所述第一路径对应的边概率和预设的停止概率确定所述第二路径的路径概率,将所述第二路径和所述第二路径的路径概率构成的第二二元组加入到第一临时路径集合中;

步骤6、从所述第一临时路径集合中查找起点和末端点都相同的t个第三路径,并将所述t个第三路径各自对应的路径概率进行合并,将所述第三路径和t个路径概率之和构成的第三二元组加入到所述第二临时路径集合中,所述t为正整数;

步骤7、使用所述第二临时路径集合替换所述未停止路径集合,以及将所述第二临时路径集合中的第三二元组加入到所述停止路径集合中;

步骤8、将所述第二临时路径集合的路径长度之和加入到所述路径数量计数器中,使用扩充后的路径数量计数器触发执行前述的步骤4;

步骤9、根据所述第一二元组和预设的停止概率生成第一三元组,所述第一三元组包括:所述第一路径、所述第一路径对应的路径概率、取值为第一数值的停止标志;将所述第一三元组加入到第二节点对应的短路径集合中;

步骤10、根据所述停止路径集合中的第三二元组和预设的停止概率生成第二三元组,所述第二三元组包括:所述第三路径、所述第三路径对应的路径概率、取值为第二值的停止标志;将所述第二三元组加入到所述第二节点对应的短路径集合中;

步骤11、在通过步骤9和步骤10得到所述第二节点对应的短路径集合之后,输出所述第二节点对应的短路径集合。

通过以上对本发明实施例的描述可知,首先从推荐服务器中预先存储的网络图上获取到第一节点;根据网络图获取以第一节点作为起点的第一随机游走路径,并确定第一随机游走路径的末端点为第二节点;根据网络图获取第二节点对应的短路径集合,第二节点对应的短路径集合包括:以第二节点作为起点的m个短路径,m个短路径中的每个短路径包括:与第二节点通过边连接的相邻节点、路径概率和停止标志,m个短路径的路径概率之和等于1;从第二节点对应的短路径集合中随机地以路径概率选择出第一短路径,并将第一短路径拼接到第一随机游走路径的末端从而得到第二随机游走路径;当根据第一短路径的停止标志确定第二随机游走路径停止时,确定第二随机游走路径的末端点为第三节点,并向第一节点推荐第三节点。由于本发明实施例中从一个短路径集合里选择第一短路径,拼接在第一随机游走路径的末端点,从而可以生成第二随机游走路径,本发明实施例中生成的第二随机游走路径包括第一随机游走路径以及第一短路径。因此本申请实施例中可以有效地减少了生成随机游走路径的计算,提高随机游走算法的运行速度,增加业务数据的实时性,提高推荐效率。

图8是本发明实施例提供的一种服务器结构示意图,该服务器1100可因配置或性能不同而产生比较大的差异,可以包括一个或一个以上中央处理器(centralprocessingunits,cpu)1122(例如,一个或一个以上处理器)和存储器1132,一个或一个以上存储应用程序1142或数据1144的存储介质1130(例如一个或一个以上海量存储设备)。其中,存储器1132和存储介质1130可以是短暂存储或持久存储。存储在存储介质1130的程序可以包括一个或一个以上模块(图示没标出),每个模块可以包括对服务器中的一系列指令操作。更进一步地,中央处理器1122可以设置为与存储介质1130通信,在服务器1100上执行存储介质1130中的一系列指令操作。

服务器1100还可以包括一个或一个以上电源1126,一个或一个以上有线或无线网络接口1150,一个或一个以上输入输出接口1158,和/或,一个或一个以上操作系统1141,例如windowsservertm,macosxtm,unixtm,linuxtm,freebsdtm等等。

上述实施例中由服务器所执行的网络图中的节点推荐方法步骤可以基于该图8所示的服务器结构。

另外需说明的是,以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。另外,本发明提供的装置实施例附图中,模块之间的连接关系表示它们之间具有通信连接,具体可以实现为一条或多条通信总线或信号线。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。

通过以上的实施方式的描述,所属领域的技术人员可以清楚地了解到本发明可借助软件加必需的通用硬件的方式来实现,当然也可以通过专用硬件包括专用集成电路、专用cpu、专用存储器、专用元器件等来实现。一般情况下,凡由计算机程序完成的功能都可以很容易地用相应的硬件来实现,而且,用来实现同一功能的具体硬件结构也可以是多种多样的,例如模拟电路、数字电路或专用电路等。但是,对本发明而言更多情况下软件程序实现是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在可读取的存储介质中,如计算机的软盘、u盘、移动硬盘、只读存储器(rom,read-onlymemory)、随机存取存储器(ram,randomaccessmemory)、磁碟或者光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。

综上所述,以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照上述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对上述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。

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