用于输出信息的方法和装置与流程

文档序号:19385523发布日期:2019-12-11 00:55阅读:319来源:国知局
用于输出信息的方法和装置与流程

本申请实施例涉及计算机技术领域,具体涉及用于输出信息的方法和装置。



背景技术:

随着互联网的爆炸式发展,与用户联系人、社交关系相关的业务越来越多,随之而来无论是好友关系拓展、用户群组划分等业务需求都需要对用户社交关系进行挖掘。当前互联网用户个人社交关系信息分散,同时缺乏有效手段对用户个人社交关系进行深度挖掘,统一通讯录中蕴含了丰富的用户社交关系,对统一通讯录建模并进行数据挖掘势在必行。

当前的社交关系挖掘方法大多通过向量空间模型构造用户的特征向量,再计算两个用户之间的相似度。还有一些方法利用一度好友进行关系拓展。现有的社交关系挖掘技术存在以下一些问题:向量空间模型仅仅计算两个用户之间的相似度,没有考虑社交关系的传递性。如朋友圈等对社交关系的挖掘仅仅限于一度好友,没有做更深的分析,导致推荐的好友与用户实际上并无社交关系,关系挖掘的结果出现大量噪音信息。



技术实现要素:

本申请实施例提出了用于输出信息的方法和装置。

第一方面,本申请实施例提供了一种用于输出信息的方法,包括:获取关联信息集合,其中,关联信息包括用户标识、联系人的标识、联系人的信息;根据关联信息集合中的关联信息中的用户标识和联系人的标识生成无向图,其中,无向图中的边用于表征用户标识与联系人的标识之间的关联关系;将目标用户的用户标识对应的顶点确定为无向图的起始顶点,遍历无向图中的顶点,从无向图中确定出与起始顶点之间的最短路径长度小于预定检索深度,且对应的联系人的标识对应的联系人的信息满足预设条件的顶点作为候选顶点;输出候选顶点对应的联系人的标识。

在一些实施例中,遍历无向图中的顶点,从无向图中确定出与起始顶点之间的最短路径长度小于预定检索深度,且对应的联系人的标识对应的联系人的信息满足预设条件的顶点作为候选顶点,包括:将起始顶点作为栈顶元素放入预定的栈中;基于栈顶元素,执行如下检索步骤:访问栈的栈顶元素对应的顶点,如果栈的栈顶元素对应的顶点与起始顶点之间的最短路径长度小于预定检索深度,从栈的栈顶元素对应的顶点的至少一个未被访问的邻接顶点中选取预定分页大小的邻接顶点压入栈中,若栈的栈顶元素对应的顶点对应的联系人的标识对应的联系人的信息满足预设条件,则将栈的栈顶元素对应的顶点作为候选顶点;如果栈的栈顶元素对应的顶点与起始顶点之间的最短路径长度大于等于预定检索深度,或者栈的栈顶元素对应的顶点不存在未被访问的邻接顶点,则将栈的栈顶元素从栈的栈顶弹出;若栈非空,则将后压入栈中的邻接顶点作为栈顶元素,继续执行检索步骤。

在一些实施例中,栈的大小与预定检索深度、预定分页大小二者之积成正比。

在一些实施例中,遍历无向图中的顶点,从无向图中确定出与起始顶点之间的最短路径长度小于预定检索深度,且对应的联系人的标识对应的联系人的信息满足预设条件的顶点作为候选顶点,包括:将起始顶点作为队首元素放入预定的队列中;基于队首元素,执行如下广度检索步骤:访问队列的队首元素对应的顶点,如果队列的队首元素对应的顶点与起始顶点之间的最短路径长度小于预定检索深度,则将队列的队首元素对应的顶点的未被访问的邻接顶点插入队列的队尾,若队列的队首元素对应的顶点对应的联系人的标识对应的联系人的信息满足预设条件,则将队首元素对应的顶点作为候选顶点;若队列非空,将队首元素从队列中移出以及基于更新后的队列的队首元素,继续执行广度检索步骤。

在一些实施例中,输出候选顶点对应的联系人的标识,包括:响应于确定出候选顶点的数量大于预定值,按照候选顶点与起始顶点之间的最短路径长度由小到大的顺序输出各候选顶点对应的联系人的标识。

第二方面,本申请实施例提供了一种用于输出信息的装置,包括:获取单元,被配置成获取关联信息集合,其中,关联信息包括用户标识、联系人的标识、联系人的信息;生成单元,被配置成根据关联信息集合中的关联信息中的用户标识和联系人的标识生成无向图,其中,无向图中的边用于表征用户标识与联系人的标识之间的关联关系;遍历单元,被配置成将目标用户的用户标识对应的顶点确定为无向图的起始顶点,遍历无向图中的顶点,从无向图中确定出与起始顶点之间的最短路径长度小于预定检索深度,且对应的联系人的标识对应的联系人的信息满足预设条件的顶点作为候选顶点;输出单元,被配置成输出候选顶点对应的联系人的标识。

在一些实施例中,遍历单元进一步被配置成:将起始顶点作为栈顶元素放入预定的栈中;基于栈顶元素,执行如下检索步骤:访问栈的栈顶元素对应的顶点,如果栈的栈顶元素对应的顶点与起始顶点之间的最短路径长度小于预定检索深度,从栈的栈顶元素对应的顶点的至少一个未被访问的邻接顶点中选取预定分页大小的邻接顶点压入栈中,若栈的栈顶元素对应的顶点对应的联系人的标识对应的联系人的信息满足预设条件,则将栈的栈顶元素对应的顶点作为候选顶点;如果栈的栈顶元素对应的顶点与起始顶点之间的最短路径长度大于等于预定检索深度,或者栈的栈顶元素对应的顶点不存在未被访问的邻接顶点,则将栈的栈顶元素从栈的栈顶弹出;若栈非空,则将后压入栈中的邻接顶点作为栈顶元素,继续执行检索步骤。

在一些实施例中,栈的大小与预定检索深度、预定分页大小二者之积成正比。

在一些实施例中,遍历单元进一步被配置成:将起始顶点作为队首元素放入预定的队列中;基于队首元素,执行如下广度检索步骤:访问队列的队首元素对应的顶点,如果队列的队首元素对应的顶点与起始顶点之间的最短路径长度小于预定检索深度,则将队列的队首元素对应的顶点的未被访问的邻接顶点插入队列的队尾,若队列的队首元素对应的顶点对应的联系人的标识对应的联系人的信息满足预设条件,则将队首元素对应的顶点作为候选顶点;若队列非空,将队首元素从队列中移出以及基于更新后的队列的队首元素,继续执行广度检索步骤。

在一些实施例中,输出单元进一步被配置成:响应于确定出候选顶点的数量大于预定值,按照候选顶点与起始顶点之间的最短路径长度由小到大的顺序输出各候选顶点对应的联系人的标识。

第三方面,本申请实施例提供了一种电子设备,包括:一个或多个处理器;存储装置,其上存储有一个或多个程序,当一个或多个程序被一个或多个处理器执行,使得一个或多个处理器实现如第一方面中任一的方法。

第四方面,本申请实施例提供了一种计算机可读介质,其上存储有计算机程序,其中,程序被处理器执行时实现如第一方面中任一的方法。

本申请实施例提供的用于输出信息的方法和装置,通过将关联信息转换成无向图。再遍历无向图中的顶点以查找到对应的联系人的信息符合预定条件的顶点。从而提高了用户关系挖掘的效率。

附图说明

通过阅读参照以下附图所作的对非限制性实施例所作的详细描述,本申请的其它特征、目的和优点将会变得更明显:

图1是本申请的一个实施例可以应用于其中的示例性系统架构图;

图2是根据本申请的用于输出信息的方法的一个实施例的流程图;

图3是根据本申请的用于输出信息的方法的一个应用场景的示意图;

图4是根据本申请的用于输出信息的方法的又一个实施例的流程图;

图4是根据本申请的用于输出信息的方法的又一个实施例的流程图;

图5a、5b是根据本申请的用于输出信息的方法的又一个应用场景的示意图;

图6是根据本申请的用于输出信息的装置的一个实施例的结构示意图;

图7是适于用来实现本申请实施例的电子设备的计算机系统的结构示意图。

具体实施方式

下面结合附图和实施例对本申请作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释相关发明,而非对该发明的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与有关发明相关的部分。

需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。下面将参考附图并结合实施例来详细说明本申请。

图1示出了可以应用本申请的用于输出信息的方法或用于输出信息的装置的实施例的示例性系统架构100。

如图1所示,系统架构100可以包括终端设备101、102、103,网络104和服务器105。网络104用以在终端设备101、102、103和服务器105之间提供通信链路的介质。网络104可以包括各种连接类型,例如有线、无线通信链路或者光纤电缆等等。

用户可以使用终端设备101、102、103通过网络104与服务器105交互,以接收或发送消息等。终端设备101、102、103上可以安装有各种通讯客户端应用,例如交友类应用、通讯录类应用、网页浏览器应用、购物类应用、搜索类应用、即时通信工具、邮箱客户端、社交平台软件等。

终端设备101、102、103可以是硬件,也可以是软件。当终端设备101、102、103为硬件时,可以是具有显示屏并且支持用户之间的关联信息浏览的各种电子设备,包括但不限于智能手机、平板电脑、电子书阅读器、mp3播放器(movingpictureexpertsgroupaudiolayeriii,动态影像专家压缩标准音频层面3)、mp4(movingpictureexpertsgroupaudiolayeriv,动态影像专家压缩标准音频层面4)播放器、膝上型便携计算机和台式计算机等等。当终端设备101、102、103为软件时,可以安装在上述所列举的电子设备中。其可以实现成多个软件或软件模块(例如用来提供分布式服务),也可以实现成单个软件或软件模块。在此不做具体限定。

服务器105可以是提供各种服务的服务器,例如对终端设备101、102、103上显示的关联信息提供支持的后台关联信息服务器。后台关联信息服务器可以对接收到的关联信息和查询请求等数据进行分析等处理,并将处理结果(例如符合查询条件的联系人信息)反馈给终端设备。

需要说明的是,服务器可以是硬件,也可以是软件。当服务器为硬件时,可以实现成多个服务器组成的分布式服务器集群,也可以实现成单个服务器。当服务器为软件时,可以实现成多个软件或软件模块(例如用来提供分布式服务的多个软件或软件模块),也可以实现成单个软件或软件模块。在此不做具体限定。

需要说明的是,本申请实施例所提供的用于输出信息的方法一般由服务器105执行,相应地,用于输出信息的装置一般设置于服务器105中。

应该理解,图1中的终端设备、网络和服务器的数目仅仅是示意性的。根据实现需要,可以具有任意数目的终端设备、网络和服务器。

继续参考图2,示出了根据本申请的用于输出信息的方法的一个实施例的流程200。该用于输出信息的方法,包括以下步骤:

步骤201,获取关联信息集合。

在本实施例中,用于输出信息的方法的执行主体(例如图1所示的服务器)可以通过有线连接方式或者无线连接方式从用户利用其进行关联信息浏览的终端接收关联信息集合。其中,关联信息用于表征用户之间的关联关系。关联信息包括用户标识、联系人的标识、联系人的信息。终端上安装有各种社交类应用,对于每种社交类应用,该应用中记录了用户自己的用户标识,还记录了该用户所关注的、加为好友的、或存储在通讯录中的联系人的标识,以及与联系人的标识对应的联系人的信息。每个联系人的应用中记录了自己的用户标识及其它的联系人的标识。联系人的信息中可包括该联系人的一些属性信息,包括但不限于以下至少一项:性别、年龄、职业、工作单位、爱好等个人信息。关联信息可以例如{用户标识:a;联系人的标识:b、c、d;联系人的信息:联系人b:男性、20-25岁、保险销售;联系人c:男性、20-25岁、物业修理;联系人d:女性、40-45岁、英语老师}。

步骤202,根据关联信息集合中的关联信息中的用户标识和联系人的标识生成无向图。

在本实施例中,无向图中的顶点用于表征用户标识或联系人的标识。用户标识b本身是用户标识,又是用户标识a的联系人的标识。无向图中的边用于表征用户标识与联系人的标识之间的关联关系。如图3所示,用户标识a的联系人的标识是b。联系人的标识b对应多个联系人的标识,其中联系人的标识c又对应于联系人的标识d。该无向图可以是无权的无向图,则路径长度为从起点到终点所经过的顶点数量。该无向图还可以是有权的无向图,则路径长度为从起点到终点所经过的边的权重之和。无向图的边的权重可设为统一值,例如1。无向图的边的权重还可以设置为不同的值。例如,可将与起始顶点相邻的边的权重设置为2,可将与起始顶点不相邻的边的权重设置为1。

步骤203,将目标用户的用户标识对应的顶点确定为无向图的起始顶点,遍历无向图中的顶点,从无向图中确定出与起始顶点之间的最短路径长度小于预定检索深度,且对应的联系人的标识对应的联系人的信息满足预设条件的顶点作为候选顶点。

在本实施例中,目标用户是本申请指定的用户。例如,为了查找出金融诈骗团伙,将已经确定出的嫌疑人确定为目标用户,查找该嫌疑人的社会关系中是否存在金融诈骗共犯。对于有权的无向图,从起始顶点出发,沿图的边到达另一顶点所经过的路径中,各边上权重之和最小的一条路径为与起始顶点之间的最短路径。最短路径长度为各边上权重之和。各边的权重可以为统一的预定值。对于无权的无向图,从起始顶点出发,沿图的边到达另一顶点所经过的路径中,经过的顶点最少的路径为最短路径。最短路径长度为经过的顶点数量。可采用深度遍历法,或者广度遍历法或者常见的最短路径检索法,依次遍历无向图中的顶点。将每次访问的顶点对应的联系人的信息与预设的条件进行匹配以查找到相应的联系人。预设条件指的是某些特征。例如,年纪在40-45岁的男性老师。可设定查找深度,例如,6度。则可找出6度关系内符合预设条件的顶点对应的联系人。

在本实施例的一些可选的实现方式中,遍历无向图中的顶点,从无向图中确定出与起始顶点之间的最短路径长度小于预定检索深度,且对应的联系人的标识对应的联系人的信息满足预设条件的顶点作为候选顶点,包括以下步骤:

步骤2031,将起始顶点作为队首元素放入预定的队列中。基于队列结构进行广度优先搜索。先把起始顶点放入预定的空的队列中,此时起始顶点是队列的队首元素。

步骤2032,基于队首元素,执行如下广度检索步骤:访问队列的队首元素对应的顶点。如果队列的队首元素对应的顶点与起始顶点之间的最短路径长度小于预定检索深度,则将队列的队首元素对应的顶点的未被访问的邻接顶点插入队列的队尾。若队列的队首元素对应的顶点对应的联系人的标识对应的联系人的信息满足预设条件,则将队首元素对应的顶点作为候选顶点。访问队列的队首元素对应的顶点,即读取队列的队首元素对应的顶点的信息,例如,邻接顶点、顶点对应的联系人的标识、顶点对应的联系人的信息等。每次访问后将顶点标记为已经访问。其主要原理是:

·将顶点s放到队列中,并且将顶点s标记为已访问

·重复直到队列为空

1.移除最近添加的顶点v

2.将v未被访问的邻接点添加到队列中

3.标记他们为已经访问

步骤2033,若队列非空,将队首元素从队列中移出以及基于更新后的队列的队首元素,继续执行广度检索步骤。被访问过的顶点会从队列中移出。广度优先是以距离递增的方式来搜索路径的。

步骤204,输出候选顶点对应的联系人的标识。

在本实施例中,这里的输出可包括在服务端连接的屏幕上显示,也可包括输出到内存、硬盘等存储介质。即,将查询结果输出。

在本实施例的一些可选的实现方式中,输出候选顶点对应的联系人的标识,包括:响应于确定出候选顶点的数量大于预定值,按照候选顶点与起始顶点之间的最短路径长度由小到大的顺序输出各候选顶点对应的联系人的标识。最短路径长度反应了关联度。即,优选输出关联度更高的联系人的标识。例如图3所示,对用户标识a进行6度关联检索时,可找到b、c、d、e、f、g6个联系人的标识。将直接与用户标识a相关联并满足预定条件的联系人的标识b优先输出。然后再输出关联度为2、3、4、5、6的联系人的标识b、c、d、e、f、g。同一关联度的联系人的标识可能有多个。如果候选顶点对应的联系人的标识过多,则可按照关联度由高到低的顺序输出预定数目的候选顶点对应的联系人的标识。

继续参见图3,图3是根据本实施例的用于输出信息的方法的应用场景的一个示意图。在图3的应用场景中,服务器获取到各用户的关联信息集合301。用户a与联系人b相关联,用户b与用户c相关联……用户f与g相关联。基于关联信息集合301生成无向图302。无向图302中每个顶点表示用户标识或联系人的标识。将用户a的标识对应的顶点303作为无向图的起始顶点,遍历该无向图中的顶点,查找检索深度为6,联系人的标识对应的联系人的信息满足预设条件的顶点作为候选顶点。从无向图302中查找到候选顶点304。输出候选顶点304对应的用户g的标识。

本申请的上述实施例提供的方法通过将关联信息转换成无向图,便于查找用户之间的关联关系,从而提高了用户关系挖掘的效率。

进一步参考图4,其示出了用于输出信息的方法的又一个实施例的流程400。该用于输出信息的方法的流程400,包括以下步骤:

步骤401,获取关联信息集合。

步骤402,根据关联信息集合中的关联信息中的用户标识和联系人的标识生成无向图。

步骤401、402与步骤201和202基本相同,因此不再赘述。

步骤403,将目标用户的用户标识对应的顶点确定为无向图的起始顶点,将起始顶点作为栈顶元素放入预定的栈中。

在本实施例中,基于栈结构,采用深度优先搜索方式遍历无向图中的顶点。栈(stack)又名堆栈,它是一种运算受限的线性表。其限制是仅允许在表的一端进行插入和删除运算。这一端被称为栈顶,相对地,把另一端称为栈底。向一个栈插入新元素又称作进栈、入栈或压栈,它是把新元素放到栈顶元素的上面,使之成为新的栈顶元素;从一个栈删除元素又称作出栈或退栈,它是把栈顶元素删除掉,使其相邻的元素成为新的栈顶元素。如图5a所示,目标用户的用户标识对就应于起始顶点a1。将起始顶点a1作为栈顶元素放入栈中,如图5b所示的第一列。该栈在放入a1之前是空栈,放入a1之后a1是栈的栈顶元素。

步骤404,基于栈顶元素,执行如下检索步骤:

在本实施例中,图5a中圆形表示顶点,顶点间的连接线表示边,矩形框表示一个分页,分页大小指的是一次压入栈的顶点的数量。此例中假设检索路径最大值l=2,分页大小p=2,则运行时栈结构中最多只要容纳5个顶点元素即可。图5b展示了检索过程中栈结构的状态变化(这里只列出了前16个状态)。然后执行如下子步骤。

步骤4041,访问栈的栈顶元素对应的顶点。读取栈的栈顶元素对应的顶点的信息,例如,邻接顶点、顶点对应的联系人的标识、顶点对应的联系人的信息等。每次访问后将顶点标记为已经访问。如图5a和5b所示,栈顶点元素a1为起始顶点,因此它与起始顶点之间的最短路径长度为0,小于预定检索深度2。

步骤4042,如果栈的栈顶元素对应的顶点与起始顶点之间的最短路径长度小于预定检索深度,从栈的栈顶元素对应的顶点的至少一个未被访问的邻接顶点中选取预定分页大小的邻接顶点压入栈中。从a1对应的无向图中的顶点b1、b2、b3、b4中选取2个邻接顶点(预定分页大小为2,图5a是每个方框内包括两个顶点表示分页大小为2,每次选择2个未被访问过的邻接顶点)压入栈中。可预先将各顶点进行连续编号,然后按照预定顺序选取顶点。如图5b中的第二列,向栈中压入了b1和b2,其中后压入的b2是栈顶元素。由于b2与a1之间的最短路径长度1小于预定检索深度2,则可执行步骤405。

步骤4043,若栈的栈顶元素对应的顶点对应的联系人的标识对应的联系人的信息满足预设条件,则将栈的栈顶元素对应的顶点作为候选顶点。例如,判断b2对应的联系人的信息是否满足预设条件,若满足则将栈的栈顶元素b2对应的顶点作为候选顶点。

步骤4044,如果栈的栈顶元素对应的顶点与起始顶点之间的最短路径长度大于等于预定检索深度,或者栈的栈顶元素对应的顶点不存在未被访问的邻接顶点,则将栈的栈顶元素从栈的栈顶弹出。如图5b中第3列所示,c6与起始顶点之间的最短路径长度为2,等于预定检索深度。将c6从栈中弹出,得到第4列。此时,c5为栈顶元素。继续执行步骤4041-4043。

步骤405,若栈非空,则将后压入栈中的邻接顶点作为栈顶元素,继续执行检索步骤。

在本实施例中,对于图5b中第二列的栈顶元素b2,其有4个邻接顶点c5、c6、c7、c8。从c5、c6、c7、c8先选取2个邻接顶点c5和c6压入栈中,如图5b中第三列所示。此时c6为栈顶元素。继续执行步骤4041-4043。c6与起始顶点之间的最短路径长度为2,等于预定检索深度,将执行步骤4044。

步骤406,若栈为空,则输出候选顶点对应的联系人的标识。

在本实施例中,遍历图5a中各顶点,将其放入图5b所示的栈中。如果栈为空,说明遍历结束,输出确定出的至少一个候选顶点对应的联系人的标识。

在本实施例的一些可选的实现方式中,栈的大小与预定检索深度l、预定分页大小p二者之积成正比。如果预定检索深度、预定分页大小固定,则栈的大小可固定。引入分页机制后,算法空间复杂度降为o(l*p),这是一个确定可控的值,不会因超级结点而暴增,使得运行时内存开销完全可控。这里的参数p是与具体问题无关的,仅需根据运行时内存资源进行调整。

从图4中可以看出,与图2对应的实施例相比,本实施例中的用于输出信息的方法的流程400突出了以分页的方式进行深度搜索的步骤。由此,本实施例描述的方案可以减少内存开销,从而使得深度检索过程中几乎不受内存资源限制,提高了关联关系检索能力。

进一步参考图6,作为对上述各图所示方法的实现,本申请提供了一种用于输出信息的装置的一个实施例,该装置实施例与图2所示的方法实施例相对应,该装置具体可以应用于各种电子设备中。

如图6所示,本实施例的用于输出信息的装置600包括:获取单元601、生成单元602、遍历单元603和输出单元604。其中,获取单元601被配置成获取关联信息集合,其中,关联信息包括用户标识、联系人的标识、联系人的信息。生成单元602被配置成根据关联信息集合中的关联信息中的用户标识和联系人的标识生成无向图,其中,无向图中的边用于表征用户标识与联系人的标识之间的关联关系。遍历单元603被配置成将目标用户的用户标识对应的顶点确定为无向图的起始顶点,遍历无向图中的顶点,从无向图中确定出与起始顶点之间的最短路径长度小于预定检索深度,且对应的联系人的标识对应的联系人的信息满足预设条件的顶点作为候选顶点。输出单元604被配置成输出候选顶点对应的联系人的标识。

在本实施例中,用于输出信息的装置600的获取单元601、生成单元602、遍历单元603和输出单元604的具体处理可以参考图2对应实施例中的步骤201、步骤202、步骤203、步骤204。

在本实施例的一些可选的实现方式中,遍历单元603进一步被配置成:将起始顶点作为栈顶元素放入预定的栈中。基于栈顶元素,执行如下检索步骤:访问栈的栈顶元素对应的顶点。如果栈的栈顶元素对应的顶点与起始顶点之间的最短路径长度小于预定检索深度。从栈的栈顶元素对应的顶点的至少一个未被访问的邻接顶点中选取预定分页大小的邻接顶点压入栈中。若栈的栈顶元素对应的顶点对应的联系人的标识对应的联系人的信息满足预设条件,则将栈的栈顶元素对应的顶点作为候选顶点。如果栈的栈顶元素对应的顶点与起始顶点之间的最短路径长度大于等于预定检索深度,或者栈的栈顶元素对应的顶点不存在未被访问的邻接顶点,则将栈的栈顶元素从栈的栈顶弹出。若栈非空,则将后压入栈中的邻接顶点作为栈顶元素,继续执行检索步骤。

在本实施例的一些可选的实现方式中,栈的大小与预定检索深度、预定分页大小二者之积成正比。

在本实施例的一些可选的实现方式中,遍历单元603进一步被配置成:将起始顶点作为队首元素放入预定的队列中。基于队首元素,执行如下广度检索步骤:访问队列的队首元素对应的顶点。如果队列的队首元素对应的顶点与起始顶点之间的最短路径长度小于预定检索深度,则将队列的队首元素对应的顶点的未被访问的邻接顶点插入队列的队尾。若队列的队首元素对应的顶点对应的联系人的标识对应的联系人的信息满足预设条件,则将队首元素对应的顶点作为候选顶点。若队列非空,将队首元素从队列中移出以及基于更新后的队列的队首元素,继续执行广度检索步骤。

在本实施例的一些可选的实现方式中,输出单元604进一步被配置成:响应于确定出候选顶点的数量大于预定值,按照候选顶点与起始顶点之间的最短路径长度由小到大的顺序输出各候选顶点对应的联系人的标识。

下面参考图7,其示出了适于用来实现本申请实施例的电子设备(如图1所示的服务器)的计算机系统700的结构示意图。图7示出的电子设备仅仅是一个示例,不应对本申请实施例的功能和使用范围带来任何限制。

如图7所示,计算机系统700包括中央处理单元(cpu)701,其可以根据存储在只读存储器(rom)702中的程序或者从存储部分708加载到随机访问存储器(ram)703中的程序而执行各种适当的动作和处理。在ram703中,还存储有系统700操作所需的各种程序和数据。cpu701、rom702以及ram703通过总线704彼此相连。输入/输出(i/o)接口705也连接至总线704。

以下部件连接至i/o接口705:包括键盘、鼠标等的输入部分706;包括诸如阴极射线管(crt)、液晶显示器(lcd)等以及扬声器等的输出部分707;包括硬盘等的存储部分708;以及包括诸如lan卡、调制解调器等的网络接口卡的通信部分709。通信部分709经由诸如因特网的网络执行通信处理。驱动器710也根据需要连接至i/o接口705。可拆卸介质711,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器710上,以便于从其上读出的计算机程序根据需要被安装入存储部分708。

特别地,根据本公开的实施例,上文参考流程图描述的过程可以被实现为计算机软件程序。例如,本公开的实施例包括一种计算机程序产品,其包括承载在计算机可读介质上的计算机程序,该计算机程序包含用于执行流程图所示的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信部分709从网络上被下载和安装,和/或从可拆卸介质711被安装。在该计算机程序被中央处理单元(cpu)701执行时,执行本申请的方法中限定的上述功能。需要说明的是,本申请所述的计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质或者是上述两者的任意组合。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子可以包括但不限于:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机访问存储器(ram)、只读存储器(rom)、可擦式可编程只读存储器(eprom或闪存)、光纤、便携式紧凑磁盘只读存储器(cd-rom)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本申请中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。而在本申请中,计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于:无线、电线、光缆、rf等等,或者上述的任意合适的组合。

可以以一种或多种程序设计语言或其组合来编写用于执行本申请的操作的计算机程序代码,所述程序设计语言包括面向对象的程序设计语言—诸如java、smalltalk、c++,还包括常规的过程式程序设计语言—诸如“c”语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络——包括局域网(lan)或广域网(wan)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。

附图中的流程图和框图,图示了按照本申请各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,该模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。

描述于本申请实施例中所涉及到的单元可以通过软件的方式实现,也可以通过硬件的方式来实现。所描述的单元也可以设置在处理器中,例如,可以描述为:一种处理器包括获取单元、生成单元、遍历单元和输出单元。其中,这些单元的名称在某种情况下并不构成对该单元本身的限定,例如,获取单元还可以被描述为“获取关联信息集合的单元”。

作为另一方面,本申请还提供了一种计算机可读介质,该计算机可读介质可以是上述实施例中描述的装置中所包含的;也可以是单独存在,而未装配入该装置中。上述计算机可读介质承载有一个或者多个程序,当上述一个或者多个程序被该装置执行时,使得该装置:获取关联信息集合,其中,关联信息包括用户标识、联系人的标识、联系人的信息;根据关联信息集合中的关联信息中的用户标识和联系人的标识生成无向图,其中,无向图中的边用于表征用户标识与联系人的标识之间的关联关系;将目标用户的用户标识对应的顶点确定为无向图的起始顶点,遍历无向图中的顶点,从无向图中确定出与起始顶点之间的最短路径长度小于预定检索深度,且对应的联系人的标识对应的联系人的信息满足预设条件的顶点作为候选顶点;输出候选顶点对应的联系人的标识。

以上描述仅为本申请的较佳实施例以及对所运用技术原理的说明。本领域技术人员应当理解,本申请中所涉及的发明范围,并不限于上述技术特征的特定组合而成的技术方案,同时也应涵盖在不脱离所述发明构思的情况下,由上述技术特征或其等同特征进行任意组合而形成的其它技术方案。例如上述特征与本申请中公开的(但不限于)具有类似功能的技术特征进行互相替换而形成的技术方案。

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