使用数据结构处理搜索查询的制作方法

文档序号:13767302阅读:203来源:国知局
存在很多网络典型地包括非常大量的互连节点的情形。例如,计算机网络是充当互连节点的互连路由器的大的网络。图1是典型的计算机网络的小部分的示意图。网络被显示出包括呈多个路由器形式的多个节点(Ni),所述路由器被布置成在多个物理计算机设备之间取路径(如示出的例如在路由器Ni的情况下,所述路由器被显示为与移动设备2、PC4和平板设备6相关联)。路由器被显示为通过连接Ci互连。在物理网络的上下文中,连接Ci可以以任何已知的方式、有线地或无线地被实现。在另一示例中,通信网路、例如社交网络包括大量互连的用户。在该情况下,每个节点是用户,所述用户可以使用计算机设备注册或登录到特定网络中。在节点是用户的上下文中,用户之间的连接不必属于网络中的单独的物理连接,而是表示与连接的两端中的任一端处的节点相关联的用户之间的关系。作为示例,两个用户如果在彼此的联系人列表中则被视为已连接。要在这样的网络中实施的任务是实施搜索以查找两个节点之间的分离,即节点之间的路径或距离。例如,在计算机网络的情况下,所期望的是查找跨网络的最有效的路线。作为另一示例,当用户搜索通过朋友认识的熟人的名字时,熟人可以作为与用户具有最短路径长度的搜索结果之一被查找。类似地,用户可能希望知道什么联系人链允许他到达网络中的另一用户。用于在图中查找给定节点对之间的最短路径的先前的方法已使用了分析技术。现有的分析方法可以广义地被分类成精确的和近似的。精确的方法、例如那些基于Dijkstra遍历的方法对于在具有数亿顶点(或“节点”)的图上实施在线查询来说是过慢的,数亿是当今社交网络的典型大小。在近似的方法中,针对该问题的一系列可缩放算法是所谓的基于地标(landmark)的(或基于草图的)方法。在该系列技术中,地标节点的固定集合(在多种著作中也被称为草图、支点或信标)被选择并且从每个顶点到地标中的一些或全部的距离被预先计算。对到地标的距离的了解与用于查找距离的三角不等式定理一起典型地允许任意两个顶点之间的近似距离以O(k)时间(其中k是地标的数量)和O(kn)空间(其中n是网络中顶点的数量)被计算。这些估计于是可以被按原样被使用,或者进一步被用作图遍历或路由策略的组件以便获得精确的最短路径。基于地标的算法已被证明在实际中向上扩展到具有数百万或者甚至数十亿边的图以可接受的准确度和每次查询低于一秒的响应时间而表现良好。存在基本的基于地标的技术的多种修改,例如,其允许计算最短路径本身(而不仅是距离),所述最短路径支持对互连节点的图的动态改变和/或所述最短路径使用地标近似作为引导以加速搜索精确的最短路径。这些修改已被证明提供良好的精确度,而同时将查询时间(甚至针对非常大的图)保持在微秒的量级上。基于地标的方法的精确度可以通过使用更多的地标来提高。然而,这导致存储器和磁盘空间的使用的线性增加而仅仅轻微地减小近似错误。技术实现要素:下面提供了对基于地标技术的修改,所有其它内容对于给定的应用全部等同,该修改可适合于针对至少相当的精度获得更期望的资源使用(例如,存储器使用)和/或查询时间,或者对于至少相当的资源使用和/或查询时间获得更期望的精度。根据本文描述的一个方面,提供了生成数据结构的方法,数据结构存储在计算机存储器中,用于执行搜索查询以确定互连节点网络中的节点之间的间距。节点可表示任何物理点或逻辑点。例如,节点可表示路由器、用户或不同网络类型中的拓扑图的顶点。间距可指代节点之间的距离(利用适合于网络类型的度量来表示,例如,节点之间的跳跃的数量或者遍历路径所花费的时间)。间距可以可选地或者另外地是实际的路径,该实际的距离包括用于跟随路径的一组指针。该方法可包括:从网络中选择一组地标节点;以及对于该组中的至少两个地标节点,生成每个地标节点的路径树,该路径树指示地标节点与多个节点中的每个节点之间的间距。例如,路径树可包括形成从每个选定的地标到多个节点中的每个节点的路径的指针。在另一示例中,路径树可包括形成从多个节点中的每个节点到每个选定地标的路径的指针或者从多个节点中的每个节点到至少两个地标节点中的每个节点的路径的指针。可利用任何适合的选择策略来选择地标。所述生成可被配置为将每个所述节点可出现在其中的路径树的数量限制为不多于预定数量的路径树。换言之,路径树的生成可被配置为特定的节点可出现在不多于预定数量的路径树中。如果节点包含在路径树中,则节点出现在路径树中。预定数量在生成路径树之前被设定。根据本文公开的另一方面,还提供一种处理搜索查询以提供搜索结果的方法。该方法可包括:在计算机设备处接收数字消息形式的搜索查询,所述查询识别互连节点网络中的源节点和目标节点,至少一个互连节点是地标节点。节点可表示任何物理或逻辑点。例如,节点可表示路由器、用户或不同网络类型的拓扑图中的顶点。间距可以是实际的距离(利用适合于网络类型的度量来表示)。该间距可替选地或者另外地是实际路径,其包括用于跟随路径的一组指针。该方法还可包括在计算机设备处接收用于生成搜索结果的应用。该应用可执行如下操作:访问数据结构,在所述数据结构中已经存储了每个地标节点以及路径树,所述路径树指示所述地标节点与多个节点中的每个节点之间的间距,特定节点出现于其中的路径树的数量限制为不多于预定数量的路径树;识别在它们的路径树中具有源节点和目标节点中的至少一个的地标节点;以及确定与那些地标节点中的至少一个地标节点的路径树有关的搜索结果。提供该概述以便以在下面的发明详述中进一步描述的简化形式来介绍概念的选择。该概述不意在确定权利要求主题的关键特征或重要特征,也不意在用于限制权利要求主题的范围。权利要求主题也不限于解决任意或全部特定缺点或者提供本文提到的任意特定优点的实现方式。附图说明图1是网络的一部分的图;图2是用于实施搜索的系统的框图;图3说明预先计算过程;图4说明多个连接的节点和地标;图5A到5C描绘多种最短路径树;图6A到6C描绘多种被剪枝的地标树;图7示出搜索查询;图8A和8B说明搜索结果中的循环;图9A到9D说明多种网络的近似误差;以及图10说明图9的平均查询时间。具体实施方式图2是用于处理搜索查询的系统的示意性框图。所述系统包括实现两个组件的计算机设备20。第一组件22是数据结构,所述数据结构是保存如进一步在本文中所描述的图的形式的数据的存储器或其它形式的计算机存储。第二组件是处理功能24,所述处理功能24存取数据结构22并且将其用于处理搜索查询。在运行中,数字消息的形式的查询26被计算机设备20接收并且计算机设备20运行以生成结果28。结果可以由用户结果功能30以若干不同方式使用。例如,用户结果功能30可以是搜索功能,所述搜索功能连同结果28一起接收其它输入并且生成搜索结果给用户。替代地,用户结果功能30可以是显示器,所述显示器直接显示结果28给用户。每个组件22、24可以由处理器和存储器实现。将容易地被理解的是,单个处理器和单个存储器可以被用于提供两种组件,或者组件可以由单独的过程和单独的存储器提供。在第一组件中,由处理器22a所执行的代码生成并且维护数据结构22,并且在第二组件中由处理器所执行的代码如稍后将更完整地描述的那样处理搜索查询。组件22、24中的每个可以在网络中的服务器上被实现。查询26由计算机设备20从用户接收。用户可以将查询输入到物理设备之一中,利用所述物理设备用户与任何已知的输入装置相关联。查询以数字消息的形式经由任意的传输机制被提供给计算机设备20。例如,当用户与客户端终端相关联时,查询可以通过互联网被提供给服务器,其中在所述服务器上实现计算机设备20。替代地,查询可以在客户端终端上本地地被处理。如将在下面变得更清楚的那样,查询包括源节点的标识符,所述源节点一般是与用户输入查询相关联的节点,并且包括目标节点,所述目标节点将是搜索的对象。搜索查询可以涉及任意互连节点网络。例如,搜索查询可以被用以查找计算机网络中的两个路由器之间的路径和/或距离。搜索查询可以被用以查找通信网络中的用户之间的最小数量的社交连接。搜索查询可以被用以查找两个物理位置(例如地图中)之间的最短距离。当前所描述的技术不受限于搜索查询或网络类型的这些形式中的任何一个并且可以施加到互连节点的系统(逻辑或物理),其中针对所述系统寻找两个节点之间的间距。在描述多种实施例之前,基于地标的距离估计技术将首先被描述。两个顶点s,t之间的长度的路径ps,tV被定义为序列ps,t=(s,u1,u2,1/4,ul-1,t)其中并且路径ps,t的长度被标记为|ps,t|。两个路径的连接:ps,t=(s,1/4,t)以及;pt,v=(t,1/4,v)是所组合的路径ps,v=ps,t+pt,v=(s,1/4,t,1/4,v)源节点和目标节点s,t之间的距离d(s,t)被定义为s和t之间的最短路径的长度。图中的最短路径距离d(s,t)是一种度量并且满足三角不等式:对于任意s,t,uVd(s,t)d(s,u)+d(u,t)如果存在穿过u的最短路径ps,t则最短路径距离d(s,t)的上界变成等式。图的直径是图中的最短路径的最大长度。社交网络的直径是小的。在该上下文中,小相对于网络的尺寸被使用。直径与用于对用户查询作出响应的最大时间相关并且因此直径的减小对应于最大时间的减小。顶点的中心度是用以指图内的顶点的重要性的若干度量的一般的术语。中介中心度对应于穿过给定顶点的最短路径的平均比例。接近中心度测量顶点到图中的所有其它顶点的平均距离。如果节点u位于从s到t的实际最短路径上或附近,则最短距离的上界通常是真实距离d(s,t)的良好的近似。这形成所有基于地标的近似算法的核心思想。现在解释已知的地标基础(Landmarks-Basic)、地标最低公共祖先(Landmarks-LCA)和地标广度优先搜索(Landmarks-BFS)距离估计技术。相同的预先计算算法被应用于Landmarks-Basic、Landmarks-LCA和Landmarks-BFS中的每个。在该算法中,从每个地标到每个节点的距离被预先计算。这种算法的已知示例作为算法1被提供。在Landmarks-Basic中,地标节点u被固定并且从该节点到图中的每个其它顶点v(或节点)的距离d(u,v)被预先计算。针对任意两个源节点和目标节点s,t之间的距离d(s,t)的上界近似通过使用如下公式被获得:dUapprox.(s,t)=d(s,u)+d(u,t)选择k个地标的集合U={u1,u2,...uk}改进的dUapprox(s,t)的近似可以被计算:dUapprox.(s,t)=minduapprox.(s,t)原理上,三角不等式还允许计算距离上的下界。下界距离也可以被用以计算距离。接下来,上述的算法被称为LANDMARK-BASIC。已知的Landmarks-Basic算法下面作为算法2被提供。对于未加权图来说,Landmarks-Basic算法使用O(km)时间来通过使用k次广度优先搜索(下面所描述的BFS)遍历来预先计算距离并且使用O(kn)空间来存储距离。每个查询在O(k)时间内被应答。Landmarks-Basic算法方法仅允许近似距离的计算,但是不提供取回路径本身的方式。Landmarks-LCA算法通过也针对地标节点u预先计算全部最短路径树(SPT)来提供取回路径本身的方式。这使得能够稍后还原针对任意源节点和目标节点s,t的实际最短路径πs,u和πu,t。最终近似通过使用连结合并两个路径并且移除出现在得到结果的路径中的任意循环而被计算。稍后讨论移除循环。除了实施基本的基于地标的近似之外,SPT的可用性允许很多顶点对的距离上的上界估计被改进。已知的Landmarks-LCA算法下面作为算法3被提供。Landmarks-Basic和Landmarks-LCA都典型地与k个不同地标的集合一起被使用:所述方法单独地被应用于每个地标并且最合适的结果被返回。最后描述Landmarks-BFS算法。在该算法中,最短路径树被预先计算(与Landmarks-LCA算法类似)。然而,近似通过收集位于从源s到目标t到所有地标的所有最短路径上的所有节点而被计算并且然后在得到的子图上运行标准广度优先(或Dijkstra)搜索。这识别不位于地标节点的最短路径树中的任何一个中的顶点之间的任意连接(又叫作“边”)。这些识别的连接可用于精确地计算有效路径。已知的Landmarks-BFS算法下面作为算法4被提供。传统的基于地标的方法使用针对每个地标节点u的最短路径树(SPT)的计算。SPT可以通过保留顶点V的集合的每个节点的父指针pu[v]而被存储,所述父指针表明从v到u的最短路径上的跟随节点v的节点。SPT可以以如本领域技术一般技术人员所已知的其它形式被存储。例如,替代于存储树中的从子节点到父节点的指针,可以存储树中的从父节点到子节点的指针。对于Landmarks-Basic方法来说,仅从节点v到地标u的距离du[v]需要被保存。然而,在两种情况下,为存储所预先计算的针对每个地标的数据所需的空间与图中的节点n的数量成比例。对于k个地标来说,这导致所需的总存储器O(kn)。传统的基于地标的方法的复杂度可以通过修剪需要被存储的最短路径树的大小而被减小。正式地,针对地标节点的所剪枝的地标树(PLT)是节点/顶点集合V中的节点子集上的具有地标节点作为根的最短路径树。已知用于剪枝地标树的多种策略。例如,在一种已知的策略中,树基于深度被限制。这意味着当树在被建立时,远离大于某一固定值的地标的全部节点被从树中丢弃。这导致节点不相等地被地标覆盖并且甚至可能导致一些节点完全未被连接到任何地标。下面描述用于修剪最短路径树的大小的策略。特别地,实施预先计算,在所述预先计算中对节点而不是仅仅对地标施加限制。预先计算被施加到包含多个顶点以及多个顶点之间的连接的图上。顶点是(如上面所描述的)互连网络中的节点。顶点可以表示物理位置、人/用户和路由器中的至少一个。两个顶点之间的连接表示(如上面所描述的)两个顶点之间的物理和/或抽象链接。例如,连接(或“边”)可以表示道路,其中图表示地图。连接可以表示人们、例如同事之间的链接,其中图表示人们之间的社交链接。连接可以表示网络中的路由器之间的有线的或无线的链接。顶点包括地标节点(下面被称为“地标”)和非地标节点。地标通过为本领域一般技术人员已知的合适的选择方案从顶点中被选择。对于每个地标,生成将节点的不同链链接在一起(例如通过使用指针)的路径树。下面,路径树的生成被配置用于将节点出现于其中的路径树的数量限制为不大于固定数量r。更正式地,对于顶点集V中的每个节点来说,与节点相关联的地标集L(v)的大小被限制为固定的数量r。固定的数量r在路径树的预先计算之前被设定。频繁地接近节点的地标趋于提供良好的近似。因此,对树进行剪枝是有用的,使得每个节点v仅存在于其r个最近的地标的最短路径树(SPT)中。这可以通过使用下面的修改的广度优先搜索(BFS)算法(被称为PLT-Precompute)来实现。PLT-Precompute是被应用以提供用于稍后处理两个节点之间的搜索查询的数据结构的算法。一旦被生成,路径树被存储在合适的存储介质中。在实施例中,存储介质也可以针对每个地标节点存储到至少一个其它地标节点的间距的指示。可以存储每个地标节点和每个其它地标节点之间的间距的指示。存储介质也可以存储(稍后在本文中所描述的)见证节点的细节。见证节点可以被选择用于确定至少两个地标节点之间的近似间距。见证节点和至少两个地标中的每个之间的间距被确定并且可以被存储在存储介质中。如果见证节点和至少两个地标中的每个之间的间距不被存储,则这可以在搜索查询的执行期间被重新计算。存储介质也可以包括与如下节点之间的连接相关的信息:所述节点存在于互连的网络(或图)中但是不存在于所生成的路径树中的任何一个中。如果广度优先搜索稍后在数据结构上被执行,则该信息可以被使用。存储介质可以形成分布式存储器体系结构的一部分或形成单个设备的一部分。限制每个节点可能出现在其中的路径树的数量包括限制每个节点出现在仅仅与相应的节点最近的地标节点的路径树中。当路径是最短路径树时,其可以以链接(例如父或子链接)的形式被提供和/或被存储。每个链接可以识别网络中的相邻节点。间距指示可以仅包括路径树中的地标和节点之间的距离。间距指示可以包括路径树中的地标和节点之间的距离和路径两者。PLT预先计算算法的具体示例被给定。PLT预先计算与普通的BFS相类似,因为PLT预先计算基于在队列上迭代。该队列包含元组(u;v;d),其中u是地标,v是在针对地标u的SPT中要被处理的下一节点,并且d是从u到v的距离。PLT预先计算算法参照图3被说明。在301处,利用集合对队列初始化。该集合对应于“并行地”在所有地标中实施BFS。与普通的BFS的不同是每个节点可以被最多r个不同的地标访问。这通过保持追踪针对每个节点的关联的地标集合L(v)来实现:L(v)={u:pu[v]≠(nil)}当节点已被r个地标访问时,不允许所述节点的另外的遍历,其中r在预先计算之前被设定。在302处,队列被出队,直到所述队列被清空。这对应于将满足初始距离标准的每个节点与地标相关联(即,距离在第一实例中是零)。在303处,距离增加一个单元并且地标被重新入队。单元依赖于要被实施的查询的类型和数据被处理的格式来确定。应理解的是,单元可以表示距离范围(例如当处理地图中的最短路径时)。步骤302和303于是有序重复直到步骤304,步骤304存在针对每个节点v的结果集合L(v),其包含节点v的min(r;k')个最近的地标,其中k'是节点v的连接组件中的地标的数量。在305处,预先计算过程结束。PLT-Precompute算法的示例算法下面作为算法5被提供。图4至6说明上面所描述的PLT预先计算算法和已知的用于地标的SPT预先计算算法之间的不同。在图4中示出有多个顶点。顶点包括地标u1、u2和u3以及节点(不是地标)v1到v7。在网络中的顶点之间存在多个连接,使得存在到每个顶点的路径。连接在图4中通过在圆形的节点和地标之间伸展的直线来表示。图5A描绘以u1为根的最短路径树。在该情况下,所有节点与通过到u1的最短路径距离与地标u1相关联。最短路径被确定且存储在计算机设备中的存储器结构中。不形成以u1为根的最短路径树的部分的连接被表示为图5A中的短划线,而形成以u1为根的最短路径树的部分的连接表示为实线箭头。图5B描绘了在u2处取路的最短路径树。在该情况下,所有的节点通过到u2的最短路径距离与地标u1相关联。最短路径被确定且存储在计算机设备的存储器结构中。不形成以u2为根的最短路径树的部分的连接被表示为图5B中的短划线,而形成以u2为根的最短路径树的部分的连接表示为实线箭头。图5C描绘了在u3处取路的最短路径树。在该情况下,所有的节点通过到u3的最短路径距离与地标u1相关联。最短路径被确定且存储在计算机设备的存储器结构中。不形成以u3为根的最短路径树的部分的连接被表示为图5C中的短划线,而形成以u3为根的最短路径树的部分的连接表示为实线箭头。图6A至6C分别描绘了根据上文结合图3针对地标节点u1,u2,u3所描述的实施例的剪枝后的地标树。如累积地所示,在这些图中,没有单个节点与多于2个地标相关联(即,每个节点为r=2个地标)。这些剪枝后的地标树被确定且存储在计算机设备的存储器结构中。不形成地标节点u1,u2,u3的剪枝后的地标树r的部分的连接表示为图6A至6C中的短划线,而形成相应的剪枝后的地标树的部分的连接表示为实线箭头。下面提供了表明算法5(PLT-Precompute)对于每个节点选择最近地标的集合L(v)的证据。集合|L(v)|的大小等于min(r;k’),其中k’是v的连接组件中的地标的数量。首先,使地标集合为U={u1;:::;uk}。在不失一般性的情况下,地标之间的排序被假设(例如,地标u1将被视为在u2之前,表示为u1←u2)并且地标按该特定顺序在算法的10至14行上被首先推入队列中。开始,队列Q包含形式为(u;u;0)的k个元组,根据地标排序来排序。在16行的k次迭代之后,那些元组从队列中去除,而形式(u;x;1)的多个元素入队,其中距离值是1并且地标再次按正确顺序。以此方式继续,对于出队距离-1的元素,具有距离值2的一些新节点元素被推入地标的正确顺序。该过程重复,距离在每次迭代时增加。因此,易于看到下式必须成立:引理1:仅当d1<d2或者(d1=d2且u←l)时,元组(u;x;d1)能够在(l;y;d2)之前入队。为证明这点,考虑某节点当在v的连接组件中存在k’个地标时,其中k’≤r,算法5的18行上的条件会仅在已经与全部地标相关联之后对于一些节点变成假。因此,对于每个地标将执行组件的全遍历,并且L(v)将包含它们中的全部k’(如果k’=0,则可能为零)。证据的其余部分假设在与v相同的连接组件中存在至少r+1个地标。假设在完成算法后,地标(来自相同的连接组件不在L(v)中。换言之,pu[v]-nil。于是,存在至少r个其它地标{l1;:::;lr},使得对于每个地标li,任一地标li比节点u更接近节点v,或者在相同距离处,但是在节点u之前(即,li←u)。考虑两种情况。在第一情况下,存在节点v的近邻w,使得pu[w]≠nil。在该情况下,元组(u;w;’)必须已经在某点处添加到队列Q中(因为执行19行暗示22行也被执行)。在某稍后的时刻,该元组在16行出队且包括v在内的全部近邻w迭代。由于(u;v;‘)没有入队,所以在该时刻c[v]=r。这意味着,对于r个其它地标li,元组(li;v;‘)已经入队。于是,根据引理1,那些地标或者比u更靠近v或者在相同距离处,但是在前面。在第二情况下,v的近邻没有一个在它们的地标集合中具有u。考虑最短路径πv;u=(v;w1;w2;:::;u)。如从算法5的12行所知的,并且u不是集合L(v)的元素,沿着该路径必须存在节点wj,使得u不是集合L(wj)的元素,而是重复第一情况的逻辑,得出结论是存在比u更接近wj(或者在相同距离处,但是在前面)的r个不同的地标li。但是如果d(wj;li)≤d(wj;u),则d(v;li)≤d(v;wj)+d(wj;li)≤d(v;wj)+d(wj;u)=d(v;u)。因此,地标li中的任何地标也或者比u更接近v,或者在相同距离处但是在前面。如果u不是集合L(v)的元素,则存在r个比u更接近v的其它地标。仍表明,在PLT算法完成后,对于全部的节点v,|L(v)|=r。如果假设这对于某些v不为真,即L(v)<r,则线18上的条件对于v而言永不为假。因此,如果任何地标u曾经与v的近邻w相关联,则地标u也已经与v相关联,即,L(w)CL(v)且L(w)<r。该逻辑可以递归地重复,直到最终得出结论,对于相同连接组件中的任何其它节点w,L(w)CL(v)而且UwL(w)CL(v)。集合UwL(w)包含了来自连接组件的全部地标。如所假设的,它们多于r个,r<|∪wL(w)|≤|L(v)|这是矛盾的。因此,对于全部的节点v,|L(v)|=r。一旦剪枝后的树被预先计算出且以适当的形式存储,则剪枝后的树可用于处理搜索查询。在该情况下,计算机设备接收标识由上述的图形表示的互连节点网络中的源节点与目标节点的数字消息形式的搜索查询。计算机设备执行适合于将响应提供给该搜索查询的操作。例如,计算机设备可首先访问上述数据结构,其中对于每个地标节点存储路径树。地标节点的路径树指示地标节点与互连网络中的多个节点中的每个节点之间的间距。所述多个节点中的每个节点出现于不多于预定数量的路径树中。从访问的数据结构,标识出具有在其路径树中具有源节点和目标节点汇总的至少一个的地标。所标识的地标中的至少一个用于确定与搜索查询有关的搜索结果。可利用两个标识的地标来提供搜索结果。地标之间的距离可以被存储以近似源和目标之间的间距。搜索结果可在被提供给搜索查询的发起者之前进行修正。一种修正是去除循环(如下面所述)。通过检测任何节点是否在搜索结果中出现至少两次以及修正搜索结果而使得每个节点仅出现一次,即使得节点在所确定的路径中不被再次访问,能够去除循环。可选地或者另外地,搜索结果可被修正以考虑到存在于互连网络中但是不存在于任何路径树中的节点之间的连接(诸如在执行的搜索算法中包括了广度优先搜索算法,如下文关于PLT-BFS所描述的)。互连节点中的至少一个可以是如上所述的见证节点。计算机设备可以识别与至少两个标识的地标相关联的见证节点。关联可以是见证节点与每个所述标识地标之间的间距的指示或者可以仅为每个标识的地标的标记的指示。通过根据有效地将见证节点用作地标的指示将搜索结果提供给所标识的地标。搜索结果可呈现给搜索查询的发起者,诸如用户。如上所述,地标基本近似技术是基于简单三角不等式的。将相同的算法直接应用于剪枝后地标树不确保对于任何一对节点(s;t),两个节点都将共享任何共有的地标(即,源节点s和目标节点t两者将属于相同地标的最短路径树)。为解决该问题,在最短路径距离近似以及在所讨论的地标u,v之间的预先计算距离d(u;v)中使用一对地标u∈L(s)和v∈L(t)。特别地,两个节点s与t之间的距离dapprox(s;t)能够利用如下等式来近似:dapprox(s;t)≈d(s;u)+d(u;v)+d(v;t):为获得良好近似,全部地标对(u;v)∈L(s)xL(t)迭代并且选出产生最小近似的对地标。该方法在本文中称为PLT-Basic。如果在源节点s与目标节点t之间存在共同的地标,则对于那些地标该方法产生了与Landmarks-Basic算法相同的结果。示例的PLT-Basic算法作为算法6提供于下文。PLT-Basic算法与图7相关地示出。在701处,处理开始。在702处,计算机设备接收搜索查询。搜索查询呈数字消息的形式并且标识互连节点网络中的源节点和目标节点。至少一个互连节点是地标节点。在703处,根据搜索查询而访问上文结合图3所提到的预先计算的数据结构。在预先计算的数据结构中,每个地标节点已经存储有路径树。路径树是一组链接,每个链接标识网络中的相邻节点。网络中的每个节点在不多于预定数量的网络节点的路径树中。在704处,在其路径树中具有源节点和目标节点中的至少一个的地标被标识出。如果在其路径树中具有源节点和目标节点两者的至少一个地标在704处被标识出,则处理进行到705。在705处,搜索结果是根据与至少一个地标的路径树中的源节点和目标节点中的每个相关联的距离来提供的。如果在704处仅标识出在其路径树中仅具有源节点和目标节点中的一个的地标,则处理进行到706。在706处,搜索结果是根据与来自标识出的地标的源节点和目标节点相关联的距离以及根据两个标识的地标之间的预先计算距离来提供的。路径树可以是最短路径树。这意指每个节点受限制,或者以其它受约束而仅出现在最近地标的路径树中。距节点最近的地标是那些具有与所述节点的最小间距的地标。该过程能够利用从图6A到6C的剪枝后的地标树来示出。假设节点v5与v4之间的距离需要被估计。当使用地标u1和u2时,得到的近似最短路径被计算为(v5;u1)+(u1;v1;u2)+(u2;v4),其具有长度4。两个节点v5和v4也均存在于以u3为根的地标树中。因此,PLT-Basic算法也将找到路径(v5;v6;u3)+(u3;v3;v4),其也具有长度4。PLT-Basic算法能够得到包括循环的路径。当确定最短路径时再次访问特定节点时,存在循环。这图示在图8A和图8B中。在各图中,互连节点网络中的连接由在节点间延伸的短划线来表示,而箭头形成了由地标基本算法确定的路径。在图8A中,从节点v2到节点v4的最短路径在经由节点v2传到地标u2之前从节点v2传到地标u1。从地标u2,最短路径传到v4。因此,在该情况下,节点v2被再次访问,得到循环,即,v2→u1→v2。在图8B中,源节点v5邻近目标节点v6和地标u1。结果,当利用PLT基本算法找到从源节点到目标节点的最短路径时,算法返回了路径:v5→u1→v5→v6。结果,节点v5被再次访问,得到循环,即v5→u1→v5。为减轻该效应,PLT-Basic算法可以修正以实现循环消除技术(称为PLT-CE算法)。PLT-CE方法能够视为先前的Landmarks-LCA方法的剪枝版本。在PLT-CE算法中,实际的路径(而不仅仅是距离)被预先计算出且存储在数据结构中。循环随后可利用堆栈和设定的数据结构消除以便去除环路(如下文提供的示例算法7中所示)。算法7中的Path-To子例程与Landmarks-LCA算法(算法3)中的Path-To子例程相同并且返回从源节点s到属于源节点s与目标节点t之间的路径的最近节点q的最短路径树pu中的最短路径。下面论述高效地获得地标之间的多条路径(Path-Between函数)的问题。如果PLT-Basic和PLT-CE算法被应用以确定图6A至6C的地标节点u1与节点v3之间的距离,则在各情况下返回距离3。然而,真正的最短路径(u1;v2;v3)是距离2。该路径在使用PLT-Basic和PLT-CE算法时未能被挑选出,因为节点v2与v3之间的边不存在于所使用的PLT中的任一个中。这能够利用类似于Landmarks-BFS算法解决该问题的方式的方法来解决。更特别地,之前的Landmarks-BFS算法通过在由源节点和目的地节点诱导的子图形上以及从这些节点到全部地标的路径上运行广度优先搜索(BFS)来处理该问题。该方法利用捷径(存在于图形中但是不存在于地标树中的边)。该方法因此使用互连节点图形本身。运行BFS的另一益处在于,其总是运行不包含循环的路径。示例的修改后的BFS(PLT-BFS)算法呈现为算法8。算法8是操作于剪枝后地标树上的Landmarks-BFS的适配后版本。这次,诱导的图构建于由从源节点s和目的地节点t到其已知的地标L(s)和L(t)的全部最短路径构成的一组顶点以及在地标间路径{πu,v|u∈L(s),v∈L(t)}上的全部节点之上。所描述的全部三个算法(PLT-Basic,PLT-CE,PLT-BFS)使用每对地标之间的间距的预先计算。间距可存储为实际的距离和/或最短的路径。用于获得最短路径的直接方法是从每个地标运行BFS以及节省到全部其它地标的距离。然而,该过程使用k个地标O(k(m+n))时间,其中n是图形中节点的数量并且M是图形中边的数量。如之前所述,边是互连节点网络中的两个节点之间的连接(或者是物理的或者是逻辑的)。地标间最短路径距离的近似能够通过已经在PLT-Precompute算法期间采集的数据来计算。基本上,思路是对于每对地标u∈U和v∈U找到见证节点w[u;v],使得见证节点w[u;v]存在于用于u和v的剪枝后地标树中。在数学表示法中,这可表达为{u,v}CL(w[u,v])。地标之间的距离的近似则能够通过该见证节点计算为du[w[u,v]]+dv[w[u,v]]。换言之,见证节点有效地充当了由全图形的地标节点和见证节点构成的子图形中的地标。地标之间的近似路径能够利用见证节点来恢复。示例的路径间地标算法被提供作为下面的算法9。算法9首先使用算法来确定用于计算见证节点程序的见证节点。这在对于一对地标存在多个见证节点时是有用的,因为算法能够被配置为返回最小化距离近似的见证节点。当该程序结束时,即,当见证节点w[u,v]被计算时,地标之间的近似最短路径能够利用函数Path-Between来获得。通过使用Path-Between韩素,算法9使用地标u与见证节点w[u,v]之间的距离以及地标v与见证节点w[u,v]之间的距离来计算地标u与v之间的距离(如上所述)。对传统地标算法的提议修改双重地影响了它们的运行时复杂度。一方面,剪枝后地标树的计算使得每个节点和每个边被访问多达r次并且因此剪枝后的树能够在O(r(m+n))时间内构建。这相比于常规的基于地标的方法中计算全SPT的O(k(m+n))复杂度更高效。另一方面,预先计算对地标之间的距离的需要将附加的O(r2n)项引入预先计算所花费的时间。原始方法的每个查询的时间与地标数量成线性关系O(k)。在提出的方法中,查询时间不取决于地标的总数,而是O(r2),因为搜索是在一对地标上执行的。因此,每当r2≈k时,在预先计算和查询时间两方面新方法与先前的方法相当。在空间复杂度方面,除了用于存储地标间见证节点或距离的O(k2)空间之外,新的方法使用O(rn)空间来保持地标数据。使用来自不同时间的四个现实的社交网络图形的数据来测试当前的数据结构和搜索查询;提供者1,提供者2,提供者3和提供者4。这些网络被选择以表示具有从网络大小方面看具有四个不同数量级的量值的网络。下面提供每个网络的简要描述。提供者1数据集包含了计算机科学出版物的书目信息。每个顶点对应于作者。如果两个作者具有共同作者的至少一个出版物,则两个作者由边连接。提供者2是较大的社交联网网站。提供者2数据集是图形,其中每个用户对应于顶点并且每个用户间连接是边。提供者3是允许用户彼此追随的微博站点,从而形成网络。虽然最初网络是有向的,在下面的边中方向被忽略。提供者4是较大的用于对等通信的社交网络。如果两个用户处于彼此的联系人列表中,则这两个用户由边连接。这些数据集的性质概述在表1中。表显示出顶点的数量|V|,边的数量|E|,顶点d之间的平均距离(在样本顶点对上计算)、近似直径Δ、最大连接祖坟中的顶点的分数|S|/|V|,以及执行图中的BFS遍历的平均时间tBFS。表1:数据集在每个实验中,从每个图形中随机选择500对顶点(s;t),并且通过应用BFS算法,对于每对预先计算源节点s与目标节点t之间的真实距离。锁提出的距离近似算法(PLT-Basic,PLT-CE和PLT-BFS)随后应用于这些对,并且确定平均近似误差和查询执行时间。近似误差计算为(l’-l)/l,其中l是近似,并且l’是实际距离。查询执行时间是指用于计算一对顶点的距离近似的平均时间。全部实验在具有8IntelXeonE7-2860处理器和1024GBRAM的服务器上的ScientificLinux版本6.3下运行。在全部的实验中仅使用计算资源的小部分。所描述的方法以Java实现。图和中间数据存储在磁盘上并且通过存储器映射来访问。由于提议的方法集中于使用比先前技术更大数量的地标,所以考虑可缩放选择策略。下面的比较使用两个策略:随机选择和最高程度选择。这些策略对于本领域普通技术人员而言是已知的。在随机选择中,相同的节点用于具有相等地标集大小的实验中,从而使结果更有可比性。图9A至9D代表性地呈现出对于提供者1、提供者2、提供者3和提供者4图形的近似误差。对于不同的地标选择策略(行)、算法(列)、每节点地标数量(条颜色)和地标数量(x轴)呈现误差值。每个图形中的黑色短划线是每个PLT算法的参考基准。LandmarkBasic被用作PLT-Basic的基准,Landmark-LCA用作PLT-CE的基准,并且Landmark-BFS被用作PLT-BFS的地标。每个基准算法使用100个地标。地标选择策略是近似品质的重要因素,尤其是对于PLT-Basic和PLT-CE算法。然而,对于PLT-BFS方法,随机选择的地标提供了能够与最高程度方法相比的精度,有时甚至比它们表现更佳,如提供者3图形的情况。可能期望的是,每节点较高数量r个地标导致近似误差的一致的减小。所获得的结果还确认,不同算法的精度在很大程度上取决于构建的图形本身的内部性质。虽然在提供者1图形上PLT-BFS方法能够在几乎所有情况下都返回确切值(近似误差小于0.01),但是对于提供者4图形获得的最低误差在相同方法情况下仍高达0.09。查询时间被计算为每个图形中的500个随机查询之中的平均值。总测量时间除去了将索引装载到主存储器所需的时间,但是由于可能不是全部数据都立即装载到RAM中,所以测量时间的部分还可以包括装载部分索引文件的时间。图10呈现了结果。关于该特定实施例,以下值得注意。时刻对每个节点r的地标数量具有二次相关性,这是期望的。查询时间主要取决于算法和图形的选择。在大多数情况下,PLT-Basic和PLT-CE方法的平均查询时间对于20个地标/节点不超过9毫秒并且对于5个地标/节点少于1毫秒。不同于这两种方法,PLT-BFS的性能在很大程度上取决于数据集和地标选择策略。例如,使用20个地标/节点以及最高程度策略,结果从提供者1图形上的9毫秒变成提供者3图形上的4.2秒。处理时间基本上无关于地标的数量及其选择策略。表2包含了在针对每个数据集中的每个节点的多个地标的不同值进行剪枝地标树计算期间获得的时间值。对1000个最高程度的地标采集数据。计算剪枝地标树所花费的时间取决于图形的大小。例如,对于20个地标/节点,其范围从提供者1的大约21秒到提供者4的几乎45个小时。表2:具有最高程度选择策略的1000个地标的预处理时间所提出的方法的益处涉及到存储器节约。虽然之前的方法使用(kn)空间来存储k个完整的地标树,但是对于剪枝后地标树的要求是O(rn+k2),每当k<<n上,其显著小。所描述的性质能够在表3中观察到,表3显示出索引结构所占用的磁盘空间的总量。对于小的r值,提供者1和提供者2的大小主要取决于地标的总数量。对于较大的提供者3和提供者4图形,该效果减弱。表3的最后一列显示出使用100个全地标最短路径树的基准方案。要存储树,使用紧凑表示,其中对于每个节点r(地标id,节点id),保持配对。节点利用32位数字来标识。然而,本领域普通技术人员已知的是,其他表示法(例如,使用更多位或更少位)可用于标识每个节点。标识节点的方式可根据图形中节点的总数来选择。关于先前有关的工作,本系统允许在存储器和磁盘空间使用减少的情况下实现相当的或改进的精度和类似查询时间。例如,当与基准100地标方法相比时,具有k=1000个最高程度地标且每节点r=20个地标的提出的方法在所有测试图形上显示出精度方面的始终改善的性能并且使用少2-2.5倍的磁盘空间。在k=100且r=5的情况下,PLT方法在精度方面表现仅略差,而每次查询使用了少5倍的空间以及少3倍的时间。该方法是针对无向无加权图形的情况,但是类似于之前的方法,这些方法能够由本领域普通技术人员直接通用化来支持加权和有向图形。另外,剪枝后地标树能够在边插入和删除下动态地更新。表3:总PLT索引存储器使用用于找到两个节点之间的最短路径的算法能够用于多个不同的应用。例如,它们可以用于对拓扑图的路径寻找算法,用于作者的引用拓扑图中,以及用于两个对象之间的连接的任意确定。在上述PLT实施例中,已经利用地标节点与其路径树中的节点之间的间距获得搜索结果。在该上下文中,术语间距包括距离和路径长度中至少一者。距离能够利用任何适合的度量来表示,诸如例如与某物理距离有关的跳跃的数量或量值。路径长度能够利用相邻节点链来表示。相邻节点中的每个节点的指示能够被提供路径长度。一般地,本文描述的任意功能能够利用软件、固件、硬件(例如,固定逻辑电路系统)或者这些实现方式的组合来实现。本文所使用的术语“模块”、“功能”、“组件”和“逻辑”通常表示软件、固件、硬件或它们的组合。在软件实现方式的情况下,模块、功能或逻辑表示当在处理器(例如,一个或多个CPU)上执行时实施规定任务的程序代码。程序代码能够存储在一个或多个计算机可读存储器设备中。本文所描述的技术的特征是平台无关的,意指该技术可实现在具有各种处理器的各种商业计算平台之上。例如,计算机设备还可包括使得用户终端的硬件执行操作的实体(例如,软件),例如处理器功能块,等等。例如,计算机设备可包括计算机可读介质,其可配置为保持使得用户终端、更具体地用户终端的操作系统和关联硬件执行操作的指令。因此,指令起到配置操作系统和关联的硬件来执行操作并且以此方式实现操作系统和关联硬件的变换而实施功能的作用。指令可由计算机可读介质经由各种不同的配置而提供给用户终端。计算机可读介质的一种这样的配置是信号承载介质并且因此被配置为将指令(例如,作为载波)发送到计算设备,诸如经由网络。计算机可读介质还可配置为计算机可读存储介质并且因此不是信号承载介质。计算机可读存储介质的示例包括随机存取存储器(RAM)、只读存储器(ROM)、光盘、闪速存储器、硬盘存储器以及其它可使用磁、光和其它技术来存储指令和其它数据的其它存储器设备。虽然以特定于结构特征和/或方法行为的语言描述了主题,但是应当理解在随附的权利要求中限定的主题不一定限于上文描述的具体特征或行为。相反,上述的特定特征和行为被公开作为实现权利要求的示例形式。当前第1页1 2 3 
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1