用于处理图的系统和方法与流程

文档序号:11530758阅读:158来源:国知局
用于处理图的系统和方法与流程

本公开针对用于数据分析的系统和方法。更特别地,其针对用于从具有许多互连节点的表示图的数据集中组织并提取信息的系统和方法。



背景技术:

本节介绍了可以对有助于本文中公开的系统和方法的更好理解有帮助的各方面。因此,应据此来阅读本节的叙述且不应理解或解释为关于什么在现有技术中或什么不在现有技术中的许可。

可访问数据量的最近激增(部分地由于在线交互的快速增加)已引导许多研究、商业和销售团体以图形方式描绘信息。虽然图形模型(例如,社交网络模型、呼叫数据模型等)可以提供原始数据之间的关系或互连的直观视图,但根据图来确定各种实体(例如,订户、群组、人、物体、机器、数据等)如何与其它实体相交互或相联系通常涉及到执行非常多的计算。由于许多图形模型可以包括被更多连接互连的数目巨大的节点(或实体),所以需要一种用于减少用于从图形模型所表示的数据中挖掘相关信息的时间和计算努力的可缩放系统和方法。



技术实现要素:

提供了用于组织和处理表示被许多边互连的许多节点的图中的信息的系统和方法。阵列e按照节点的确定顺序列出了针对图中具有至少一个相邻节点的节点的相邻节点。基于节点的确定顺序,将在阵列e中针对各节点所列出的最后相邻节点在阵列e中的位置列为阵列v中的相应条目。在各种方面中,阵列e和阵列v被生成并用来确定用于图的相关信息,包括图的一个或多个给定节点的度或相邻节点。相信本申请中公开的系统和方法将在各种环境和应用中适用,诸如在用于确定用于图的节点的相对排序的系统中。

在一个方面,一种用于处理具有被m个边互连的n个节点的图的系统和方法包括,使用处理器生成阵列e,其具有m个条目,该m个条目用于列出针对图中具有至少一个相邻节点的n个节点中的各节点的相邻节点,其中针对图中具有至少一个相邻节点的各节点,按照分配给图的n个节点的确定顺序,在阵列e中列出相邻节点。所述系统和方法还包括使用处理器来生成阵列v,其具有n个条目,该n个条目按照确定顺序与图中的n个节点对应,并且填充图中与具有在阵列e中列出的至少一个相邻节点的节点对应的阵列v的条目,以分别地指示在阵列e中针对相应节点所列出的最后相邻节点在阵列e中的位置。

在一个方面,所述系统和方法包括利用填充到阵列v中的紧邻在先条目的值,来填充阵列v的条目中与所述图中不具有任何相邻节点的节点相对应的的至少一个条目。

在一个方面,所述系统和方法包括利用零值来填充阵列v的条目中与图中不具有任何相邻节点的节点相对应的至少一个条目。

在一个方面,所述系统和方法包括根据阵列v的一个或多个已填充条目来确定图的n个节点中的给定节点i的度。在一个方面,根据阵列v的一个或多个已填充条目来确定给定节点i的度还包括根据阵列v将值v[i]-v[i-1]计算为给定节点i的度。

在一个方面,所述系统和方法包括基于v[i]-v[i-1]=0的确定,来根据阵列v确定给定节点i不具有任何相邻节点。

在一个方面,所述系统和方法包括基于v[i]-v[i-1]>=1的确定,来根据阵列v确定图中的给定节点i具有至少一个相邻节点。

在一个方面,所述系统和方法包括通过计算阵列e中从e[v[i-1]+1]开始直至且包括e[v[i]]的条目,来使用阵列v和阵列e来确定图的n个节点的给定节点i的相邻节点。

在一个方面,所述系统和方法包括通过搜索阵列e中从e[v[i-1]+1]直至且包括e[v[i]]的条目,来确定图的n个节点中的第一给定节点是否是图的n个节点中的给定节点i的相邻节点。

在一个方面,所述系统和方法包括利用阵列e和阵列v来确定用于图的n个节点中的一个或多个节点的相对排序。

参考附图,根据本文中的以下详细描述,这些及其它实施例将变得显而易见。

附图说明

图1图示出根据本公开的一方面的互连节点的图形模型的示例。

图2图示出图1中所示的互连节点的相邻节点和度。

图3图示出根据本公开的各种方面的用于处理具有n个节点和m个互连的图的流程图的示例。

图4图示出根据本公开的一方面的用于基于分配顺序来指示相邻节点的阵列e。

图5a、5b图示出基于图1的节点的不同类型互连的用于阵列e的替换实施例。

图6图示出根据本公开的一方面的指示阵列e的相邻节点的位置的阵列v。

图7图示出用于实现本公开的各种方面的设备的示例。

具体实施方式

下面参考附图来描述本公开的各种方面,其中在整个附图的描述中类似的附图标记指代类似元件。本描述和附图仅仅举例说明本公开的原理。将认识到的是本领域的技术人员将能够发明各种布置,其虽然未在本文中明确地描述或示出,但体现本公开的原理并被包括在本公开精神和范围内。

如本文中所使用的术语“或”指的是非排他性或,除非另外指明(例如,“否则”或“或者在替换方案中”)。此外,如本文中所使用的用来描述元件之间的关系的单词应被宽泛地理解成包括中介元件的直接关系或存在,除非另外指明。例如,当元件被称为被“连接”或“耦合”到另一元件时,该元件可以被直接地连接或耦合到该另一元件或者可以存在中间元件。相反地,当将元件称为“直接地连接”或“直接地耦合”到另一元件时,不存在中间元件。同样地,应以类似的方式解释诸如“之间”、“邻近”等单词。

本公开描述了用于将多个互连节点的图处理成可以用来确定并提取关于图的实体和互连的各种类型信息的数据集的各方面。本文中公开的各方面适用于具有任何数目的节点和互连的图,并且特别适合于包括许多节点和互连(例如,数千个、数百万个或者数十亿个节点或互连)的图。

图1图示出包括四个互连节点(或顶点)1101、1102、1103和1104(共同地称为节点110)的图100的大大简化的示例。图100的节点1101、1102、1103和1104经由单向路径或边1151、1152、1153和1154(共同地称为边115)直接地或间接地互连。虽然在图100中描绘了仅几个节点110和边115以便帮助理解本公开的原理,但将认识到的是实际上图可以包括大量的(例如,数千个、数百万或数十亿)节点110或边115。另外,图100可以是整个图,或者可以是较大图的子集。

在各种实施例中,图100的节点110可以表示一个或多个类型的实体(例如,订户、群体、人、物体、机器、数据等),并且边115可以表示图100的各种实体之间的关系。以某些示例来说,在一个非限制性实施例中,图100可以是电信服务提供商的呼叫数据记录的模型。在这种情况下,节点110可以表示电信服务提供商的用户或订户(或用户设备),并且单向边115可以表示从订阅用户(或用户设备)中的特定的一些到其它订阅用户(或用户设备)的呼叫。在另一非限制性实施例中,图100可以是由因特网服务或搜索提供商收集或生成的网络数据的模型。在这种情况下,节点110可以表示例如在一个或多个服务器中托管的不同网页(或网站),并且单向边115可以表示从一个网页(或网站)到另一网页(或网站)的超文本标记链接。

在另一非限制性实施例中,图100可以对社交网络提供商的社交网络数据进行建模。在这种情况下,节点110可以表示社交网络的各种用户或订户,并且单向边115可以表示一个订户与其它订户之间的社交(或其它)关系。虽然可以参考图100的特定示例来举例说明本公开的各种示例,但将理解的是本公开不限于图、实体或互连的特定实施例。

相对于图(诸如图100)具有基本兴趣的一个常见计算查询是给定节点是否是另一给定节点的相邻节点(并且反之亦然)。一般地,如果可以在不穿过任何中间节点的情况下从第二节点到达第一节点,则第一节点是第二节点的邻点。因此,从图1的简单示例可以看到节点1101具有单个相邻节点,即节点1102,因为节点1102是可以在不穿过任何中间节点的情况下直接地从节点1101到达(经由单向边1151)的唯一节点。同样地,在图1中可以看到的是节点1102具有两个相邻节点,即节点1103和节点1104,并且最后节点1103具有一个相邻节点,即节点1104。

为了明了且完整,应注意的是如在图1的示例中描绘的节点1104不具有任何相邻节点,因为不能从1104到达图100的其它节点。另外,虽然节点1102是节点1101的相邻节点,但相反情况不成立;节点1101不是节点1102的相邻节点,因为从节点1102不能到达节点1101。应注意的是在其它实施例中,图的两个节点(诸如图100的节点1101和1102)将是彼此的相邻节点,如果两个节点被经由例如双向边或者通过两个相对的单向边直接互连的话,如本领域的技术人员将认识到的。

相对于图(诸如图100)感兴趣的另一常见计算查询是给定节点的度的确定。一般地,节点的度是从该节点到其它节点的边(或路径)的数目。因此,在图1的示例中,节点1101的度是一,因为从节点1101到图的另一节点存在单个直接路径或边1151。同样地,节点1102的度是二,因为从节点1102到图的其它节点存在两个直接路径1152和1153。节点1103的度是一,因为从节点1103至图的另一节点存在单个直接路径1154。最后,节点1104的度是零,因为不存在从节点1104至图的其它节点的路径。

图2图示出概括用于图1的图100的节点110中的每一个的度和相邻节点的表格200。虽然要计算图1的简化示例相对更容易,但例如响应于动态查询而计算和确定包括许多节点(例如,数百万或数十亿)或者甚至更多的互连(例如,数千万或数百亿)的图中的相邻节点或度是要求大量时间和资源(例如,处理器速度、存储器等)的非微不足道的计算密集型任务。即使大型或分布式现代计算机也面临在存储器中从具有超过十亿个节点、100亿个边以及辅助信息(诸如边权重)的图中高效地组织和处理期望信息的挑战。

一直存在开发用于发系统和方法的算法和数据结构以在甚至更大的图中有效地处理信息的挑战和需要。本公开描述了用于组织和处理图中的信息的系统和方法,其可以提供许多优点,诸如与图中的边的数目成比例地降低存储器尺寸要求,允许关于节点、邻点和图结构的高效查询以及提供通过图的高效的多次迭代。

图3示出了根据本公开的各方面的用于构造许多数据集以便组织和处理在具有n个节点和m个边的图中的信息的示例性过程300。还结合图1的图100来描述过程300的特定应用,其包括四个节点(n=4)和四个边(m=4)。

在一个方面,过程300包括用于确定或分配用于n节点图的n个节点的顺序的步骤305。可以用许多方式来确定分配给图的节点的顺序。在一个实施例中,可以对图的n个节点中的每一个分配从一至n的唯一顺序。本实施例是针对图1的图100(n=4)图示出的,其中节点1101被指定为第一节点或节点“1”,节点1102被指定为第二节点或节点“2”,节点1103被指定为第三节点或节点“3”,并且节点1104被指定为最后节点或节点“4”。在图2的表格200中还图示出分配的顺序。

在其它实施例中,可以用其它适当手段来确定(或预先确定)分配的顺序,诸如通过基于节点所表示的实体的一个或多个属性值,来将n个节点按字典顺序排序。例如,假设图的节点表示网页且单向边表示从一个网页至其它网页的链路,可以基于各网页的唯一统一资源位置(“url”)、网页的名称(或标题)或各网页的任何其它类型的属性(或类似属性)的值,来为每个节点(或网页)指定分配顺序。

虽然可以采用任何适当的方法以便确定用于节点的顺序,但出于下面将更加显而易见的原因,可以优选的是分配顺序中的第一节点是具有相邻节点的一个节点(诸如图100中的节点1101),其与不具有相邻节点的节点(诸如图100的节点1104)相对。然而,如下面进一步描述的,这既不是必需的,也不是针对过程300的限制。

在步骤310中,过程包括生成具有条目的阵列e[11,2,…,m],这些条目按照在步骤305中确定的节点顺序指示用于图中具有相邻节点的节点的相邻节点。由于根据本方面的阵列e仅包括针对图中具有相邻节点的节点的条目,所以阵列e具有对应于在图中表示的m个边的m个条目。

图4图示出作为在步骤310中生成用于图1的图100的阵列e的示例的阵列400。如在图4中看到的,阵列400包括对应于图100的边的数目(m=4)的四个条目,即,1151、1152、1153和1154。阵列400的条目按照在步骤305中确定的节点顺序指示用于图100中具有至少一个相邻节点(即节点1101、1102和1103)的节点中每一节点的相邻节点。应注意的是,对于不具有相邻节点(例如,图100的节点1104)的节点而言,在阵列400中未记录条目。

可以基于在步骤305中确定的节点顺序,将阵列400的条目排序。因此,在阵列400的第一位置上,指定顺序中的第一节点(节点“1”)(即节点1101)的相邻节点被输入到阵列400。由于节点1101具有仅一个相邻节点,即节点1102,所以指示节点1102的单个条目被置于阵列400的第一索引条目(e[1]=“1102”)中。

继续,指定顺序中的第二节点(节点“2”)(节点1102)的相邻节点被输入到阵列400中。由于节点1102具有两个相邻节点,节点1103和1104,指示节点1102的两个相邻节点的两个条目(e[2]="1103",e[3]="1104")被置于阵列400的第二和第三索引位置上。在这里应注意的是,在阵列400的第二和第三位置上指示这两个相邻节点的顺序不一定需要按照如阵列400中所示的指定顺序,而是可以如下面进一步描述的那样,在搜索相邻节点时提供某些效率。

接下来,从阵列400的下一可用位置开始输入指定顺序中的第三节点(节点“3”)(节点1103)的相邻节点。由于节点1103具有单个相邻节点,即节点1104,所以指示相邻节点的单个条目(e[4]="1104")被置于阵列400的第四位置上。

由于在步骤305的指定节点顺序中已填充了阵列400的所有条目,或者更特别地指定顺序中的最后一个剩余节点(节点“4”)(节点1104)不具有任何相邻节点,所以阵列400的生成完成。

应注意的是,前文的描述原则上并不根据图中的互连的数目或类型而改变,尽管阵列e所指示的相邻节点(和条目的数目)可以改变。例如,图5a图示出可以在步骤310中针对图1的图100生成的阵列e的替换实施例,假设图100的边115中的每一个是双向边(等价于两个相对单向边)而不是图1中所示的单向边。同样地,图5b图示出可以在步骤310中生成的阵列e的另一实施例,假设除图1中已描绘的单向边之后在图100中还存在从节点1101至节点1102的附加并行单向边。

返回至图3的过程300,步骤315包括生成具有n个条目的阵列v[1,2,...,n],其中各n个条目中的每一个按照步骤305的指定顺序对应于图100的n个节点中的相应各节点,并且其中该条目指示针对图中具有相邻节点的各节点在阵列e中列出的相邻节点中的最后一个相邻节点的位置。利用阵列v的紧邻在先条目的值或者用零(如果此类在先条目不存在的话)来填充用于图中不具有相邻节点(或者在阵列e中不具有条目)的节点的各条目。

图6图示出作为在步骤315中生成用于图1的图100的阵列v的示例的阵列600。为了帮助理解,在图6中还再次地描绘了图4的阵列400(阵列e)。如在图6中看到的,阵列600包括对应于图100的节点的数目(n=4)的四个条目。阵列600中的四个条目中的每一个与图100的各节点相对应,并被按照在步骤305中指定的相同节点顺序填充,即节点“1”、节点“2”、节点“3”以及节点“4”。

因此,阵列600的第一条目(v[1])对应于节点1101,因为节点1101按照步骤305中确定的节点顺序被指定为第一节点或节点“1”。由于在阵列e中针对节点1101的相邻节点列表的最后相邻节点的终止位置是阵列400中的第一位置(e[1]),所以“1”被记录到用于节点1101的阵列600的第一条目(v[1]=“1”)中。

接下来,阵列600的第二条目(v[2])对应于节点1102,因为节点1102按照步骤305中确定的节点顺序被指定为第二节点或节点“2”。由于阵列e中的节点1102的相邻节点列表中的最后相邻节点的终止位置对应于阵列400中的第三位置(e[3]),所以“3”被填充到用于阵列600中的节点1102的第二条目(v[2]=“3”)。

接下来,阵列600的第三条目(v[3])对应于节点1103,因为节点1103按照步骤305中确定的节点顺序被指定为第三节点或节点“3”。由于节点1103的相邻节点列表在阵列600中以第四位置(e[4])中列出的最后相邻节点结束,所以“4”被记录到用于阵列600中的节点1103的第三条目(v[3]=“4”)。

接下来,阵列600的最后且第四条目(v[4])对应于节点1104,因为节点1104按照步骤305中确定的节点顺序被指定为最后节点或节点“4”。由于节点1104在步骤310中被确定为不具有任何相邻节点且因此不具有在阵列400中列出的相邻节点,所以在对应于节点1104的条目中使用或重复阵列600中的紧邻在先条目的值。因此,由于在先条目v[3]具有“4”的值,所以“4”也被记录到用于阵列600中的节点1104的第四条目(v[4]=“4”)中。

如果在步骤305中的节点顺序的确定期间,不具有相邻节点的节点(例如,图100的节点1104)被指定为是节点顺序中的第一节点,则在步骤315开始时可能出现特殊情况。在这种情况下,由于到目前为止在步骤315中的阵列v中将不存在在先条目,而且由于在步骤310中的阵列400中也将未列出相邻节点,所以可以在步骤315中在阵列600的第一位置(v[1]=“0”)上填充零,并且填充阵列600的其余条目的过程如上所述地在步骤315中继续。

在步骤315中针对图的各节点已填充阵列v的所有各条目之后,阵列v完成。

在步骤320和步骤322中,根据本文中公开的过程针对图构造的阵列e和阵列v被用于确定关于图的信息。

在一个实施例中,在步骤320中使用阵列v来计算图中的各种节点的节点度。可以通过计算针对i≥2的v[i]-v[i-1]和针对i=1的v[i],而根据阵列v来确定用于n节点图中的、按照步骤305的指定顺序的特定节点i(i∈1…n)的节点度。

结合图6的阵列600(阵列v)继续图1的图100的示例,在步骤320中,可以根据阵列600(例如,响应于查询)而将用于节点1101(i=1)的节点度确定为1(一),因为v[1]=“1”。可以在步骤320中根据阵列600将用于节点1102(i=2)的节点度确定为2(二),因为v[2]-v[1]=3-1=“2”。可以在步骤320中根据阵列600将用于节点1103(i=3)的节点度确定为1(一),因为v[3]-v[2]=4-3=“1”。最后,可以在步骤320中根据图6的阵列600将用于节点1104(i=4)的节点度确定为0(零),因为v[4]-v[3]=4-4=“0”。可以看到的是,使用阵列v计算的节点度与用于如图2中所示的图中的每个节点的节点度准确地匹配。

在另一实施例中,可以在步骤322中使用阵列v和/或阵列e来确定(例如,响应于查询)给定节点的相邻节点。例如,可以将n节点图中在步骤320中被确定为具有零度的、按照步骤305的指定顺序的给定节点i(i∈1…n)高效地识别为不具有相邻节点的节点。

替换地,针对n节点图中在步骤320中被确定为具有大于零的度(或者另外已知为具有大于零的度)的、按照步骤305的指定顺序的给定节点i(i∈1…n),可以根据阵列e将用于此类节点的相邻节点确定为针对i>=2的从e[v[i-1]+1]开始直至且包括e[v[i]]的条目以及针对i=1的从e[1]开始(即,阵列e中的第一条目)直至且包括条目e[v[i]]的条目。

例如,针对图100的节点1101的相邻节点接收到查询。使用图6的阵列600(阵列v)和阵列400(阵列e),可以在步骤322中将节点1101(节点“1”)(i=1)的相邻节点确定为从e[1]开始直至且包括e[v[1]]的阵列e中的所有节点。从阵列v,可以看到v[1]=“1”。因此,节点“1”的相邻节点是从e[1]开始直至且包括e[1]列出的节点,或者简单地e[1]=节点“2”(节点1102)。

举第二示例来说,假设查询是针对图100的节点1102(或节点“2”)的相邻节点。再次使用图6的阵列600(阵列v)和阵列400(阵列e),可以在步骤322中将节点“2”(i=2)的相邻节点确定为从条目e[v[1]+1]开始直至且包括条目e[v[2]]的阵列e中的节点。从阵列v,可以确定v[1]=“1”且v[2]=“3”。从阵列e,可以看到从e[2]开始直至且包括e[3]的阵列e中列出的连续相邻节点是节点“3”和节点“4”(或节点1103和节点1104)。因此,节点“3”和“4”被确定为节点“2”的相邻节点。

这种方法还可以用来确定第一节点是否是第二节点的相邻节点(或者等价地是否存在从第二节点至第一节点的直接路径或边)。假设例如接收到用以确定节点“1”是否是节点“2”的相邻节点(或者是否存在从节点“2”至节点“1”的有向边)的查询。由于在如在步骤322中确定的从e[2](节点“3”)开始直至且包括e[3](节点“4”)的条目中未列出节点“1”,所以可以推断节点“1”不是节点“2”的相邻节点。

本文中公开的系统和方法的各种方面可以得到用于处理图、特别是用于处理包括数千个或数百万个节点或边的大型图的许多优点。例如,可以用使用阵列v计算的常数来确定图的各种给定节点的度。在其它实施例中,还可以根据阵列v来高效地确定其它确定,诸如图的节点的最大节点度或图的节点的度的分布。此外,确定图的给定节点是否是图的另一给定节点的相邻节点(可以在时间量log2δ内实现的二元运算,其中δ是图的最大节点度)或者确定图的给定节点的相邻节点可以通过仅检查阵列e的条目的聚焦且相关的子集(与条目的较大或全部集合相反)来实现。

本文中公开的各种实施例在许多环境中适用。例如,常常期望将图的节点排序(或评分),以确定相对于某个准则比其它节点相对更加显著的节点。在图的节点表示网页(或网站)且将节点互连的边表示从一个网页到另一网页的有向超链接的情况下,可以使用排序算法将图的节点排序,以基于从图的其它节点到图的特定节点的有向边的数目来评估网站的相对流行性。可以将可直接地或间接地从图的许多其它节点到达的节点视为比从通过图的较少(或者可能没有一个)其它节点可到达的另一节点更流行。

类似(或其它)排序考虑可以应用于表示其它类型的信息的图,诸如社交网络图,其中节点可以表示社交网络的用户(或其它实体),并且边可以表示社交网络图的用户(或实体)到其它用户(或实体)的连接(或关系)。

排序算法(诸如由谷歌公司开发的用以对网页(或网站)排序或评分的众所周知的pagerank算法)通常通过从初始排序开始(例如,可以将图的每个节点假设为最初具有相等排序),且然后迭代地调整图的节点的排序直至已调整排序会聚成最终调整排序为止,来将图的节点进行排序。与图的每个各节点相关联的初始排序被均匀地分布到各节点中的每个相邻节点。这导致用于每个各节点的已调整排序,然后通过重复分布步骤以将各节点的已调整排序分布到相邻节点来进一步对其进行调整。当在分布到相邻节点之后针对各节点得到的已调整排序会聚(例如,节点的已调整排序在一定的迭代次数之后并未由于小于预定阈值的迭代或改变而进一步改变)时(通常在一定的迭代次数之后),该排序过程可以以用于各节点的最终排序结束。

因此,在某些实施例中,本文中公开的系统和方法可以补充或者被结合到用于对图的节点排序或评分以例如确定与一个或多个节点相关联的相邻节点或节点度作为排序过程的一部分的系统和方法。本文中公开的系统和方法一般地还可以被结合到或补充用于以类似方式处理图的任何其它系统和方法中。

图7描绘了适合于实现本公开的各种方面(例如,过程300的一个或多个步骤)的计算设备700的高级框图。虽然在单个方框中示出,但在其它实施例中,还可以使用并行和分布式架构来实现设备700。因此,例如,可以使用设备700基于特定实施方式而连续地、并行地或按照不同的顺序执行各种步骤,诸如在过程300的示例中示出的那些。设备700包括与各种输入/输出装置704和存储器706通信互连的处理器702(例如,中央处理单元(“cpu”))。

处理器702可以是任何类型的处理器,诸如通用中央处理单元(“cpu”)或专用微处理器,诸如嵌入式微控制器或数字信号处理器(“dsp”)。输入/输出装置704可以是在处理器702的控制下操作且被配置成向设备700中输入数据或从其输出数据的任何外围装置,诸如网络适配器、数据端口以及各种用户接口装置,诸如键盘、键区、鼠标或显示器。

存储器706可以是适合于存储电子信息的任何类型的存储器,诸如临时性随机存取储器(ram)或非临时性存储器,诸如只读存储器(rom)、硬盘驱动器存储器、紧凑式磁盘驱动存储器、光学存储器等。存储器706可以包括数据(例如,图100、阵列v、阵列e或其它数据)和指令,其在被处理器702执行时可以配置或促使设备700执行或实行上文所述的功能或方面(例如,过程300的一个或多个步骤)。另外,设备700还可以包括通常在计算系统中使用的其它组件,诸如操作系统、队列管理器、设备驱动器或者存储在存储器706中并被处理器702执行的一个或多个网络协议。

虽然在图7中图示出设备700的特定实施例,但还可以使用一个或多个专用集成电路(asic)、现场可编程门阵列(fpga)或硬件或软件的任何其它组合来实现根据本公开的各种方面。例如,可以以各种类型的数据结构(例如,链接表)来存储在本文中公开的图和数据集(例如,阵列v、e),这些类型的数据结构可以被使用软件、硬件或其组合实现的可编程处理器(例如,cpu或fpga)访问和操纵。

虽然已参考特定实施例描述了本文中的各方面,但应理解的是这些实施例仅仅说明本公开的原理和应用。因此要理解的是在不脱离本公开的精神和范围的情况下可以对说明性实施例进行许多修改且可以设计其它布置。

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