CN107004011A - 针对演进图形分配全局边缘id - Google Patents
针对演进图形分配全局边缘id Download PDFInfo
- Publication number
- CN107004011A CN107004011A CN201580063517.8A CN201580063517A CN107004011A CN 107004011 A CN107004011 A CN 107004011A CN 201580063517 A CN201580063517 A CN 201580063517A CN 107004011 A CN107004011 A CN 107004011A
- Authority
- CN
- China
- Prior art keywords
- cell
- evolution
- block
- summit
- calculation block
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/901—Indexing; Data structures therefor; Storage structures
- G06F16/9024—Graphs; Linked lists
Landscapes
- Engineering & Computer Science (AREA)
- Databases & Information Systems (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Image Generation (AREA)
- Stored Programmes (AREA)
Abstract
本文描述了用于针对演进图形分配全局边缘ID的方法、计算系统、以及计算机可读介质。该方法包括针对演进图形选择块大小,并且当将新的顶点被添加到演进图形时,针对演进图形计算块ID。计算块ID包括创建表示演进图形的表,并且当新的顶点被添加到演进图形时,在针对表的新行中的单元格计算块ID之前针对表的新列中的单元格计算块ID。该方法还包括针对演进图形基于源顶点ID、目标顶点ID、以及每个边缘所位于的块的块ID来计算全局边缘ID。该方法还可以包括针对演进图形计算增量页面排序。
Description
相关申请的交叉引用
本申请要求享有于2014年12月23日提交的美国专利申请No.14/581,112的提交日的权益,其通过引用并入本文中。
技术领域
本技术总体上涉及管理图形处理平台的演进图形。更具体地,本技术涉及针对演进图形分配全局边缘ID。
背景技术
在“大数据”时代,许多应用(举例来说,例如,与电子商务、社交网络、以及在线服务有关的应用)使用快速增长的庞大的图形。在许多情况下,这些应用每天必须处理数百万到数十亿的新事件。例如,平均每天在Twitter上产生5.6亿个推文,并且平均每天在Facebook上产生45亿个“喜欢”。作为另一个示例,亚马逊在2013年圣诞季期间每天销售2.82亿件商品。新事件产生新关系,例如用户与产品的关系、朋友关系、以及用户与广告的关系。应用使用以这些新关系为基础的关系数据以用于各种目的。例如,这样的关系数据可以用于做出智能商业决策或者向用户提供快速且准确的建议。
为了使应用能够使用这种关系数据,使用图形分析来处理数据以创建大的图形。这样的图形由大量的顶点和边缘组成。顶点是表示例如不同用户的节点,而边缘是表示将不同用户彼此连接的关系数据的线。在大数据时代,随着数据量增加,这些图形非常快速地增长。然而,用于处理这些类型的图形的当前技术一般涉及具有固定数量的顶点和边缘的静态图形。当前技术不能提供高效方法以随着新的顶点和边缘随时间被添加到图形而对这些图形进行更新。
附图说明
图1是根据一个实施例的示意图,其示出了用于处理关系数据的图;
图2是根据一个实施例的过程流程图,其示出了用于计算全局边缘ID的方法;
图3是根据一个实施例的表,其示出了用于在将块ID分配给增加的行之前将块ID分配给增加的列的技术;
图4是根据一个实施例的表,其示出了用于在将块ID分配给增加的列之前将块ID分配给增加的行的技术;
图5是根据一个实施例的过程流程图,其示出了用于以递归函数计算块ID的方法;
图6A是根据一个实施例的表,其示出了用于基于最后的对角线单元格和源块ID将块ID分配给新添加的列中的单元格的技术;
图6B是具有新添加的行的图6的表;
图7是根据一个实施例的表,其示出了基于本文所描述的计算顺序来进行高速缓存的关键块ID;
图8是根据一个实施例的过程流程图,其示出了用于针对演进图形增量地计算页面排序的方法;
图9是表示本文所描述的用于针对演进图形计算增量页面排序的技术的一个实施例的伪代码的屏幕截图;
图10是表示本文所描述的用于针对演进图形计算增量页面排序的技术的另一个实施例的伪代码的屏幕截图;
图11是示出根据本文所描述的实施例的被配置为针对演进图形提供全局边缘ID分配和/或增量页面排序计算的计算设备的框图;以及
图12是示出根据本文所描述的实施例的被配置为针对演进图形提供全局边缘ID分配和/或增量页面排序计算的计算机可读介质的框图。
在整个公开内容和附图中使用相同的附图标记来指代同样的组件和特征。100系列中的附图标记是指最初出现在图1中的特征;200系列中的数字是指最初出现在图2中的特征;以此类推。
具体实施方式
如上面所描述的,通常使用大的图形将关系数据表示为具有多个相互连接的顶点和边缘。然而,用于处理这些类型的图形的当前技术不能提供高效方式以随着图形随时间演进而对图形进行更新。更具体地,在处理关系数据时,图形分析通常作用于(sourceId,targetId,edgeValue)格式的数据上,其中“sourceId”是源顶点ID,“targetId”是目标顶点ID,而“edgeValue”是边缘的值。全局边缘ID(其被定义为sourceId和targetId的函数)对于高效边缘值存储和关于边缘的快速计算(举例来说,例如,连接具有重叠的顶点的两个图形)两者而言都很重要。在静态图形的情况下,sourceId和targetId二者的上边界是图形中顶点的数量。全局边缘ID可以容易地分配为sourceId×numVertices+targetId。然而,当图形正在演进时,最终的顶点数量在每个处理窗口处是未知的。因此,最终的顶点数不能用于取得全局边缘ID。因此,本文所描述的实施例提供了一种用于针对演进图形根据sourceId和targetId来分配全局边缘ID的方法。
在以下描述和权利要求中,可以使用术语“耦合”和“连接”以及其衍生词。应当理解,这些术语并非旨在作为彼此的同义词。相反,在特定实施例中,“连接”可以用于指示两个或更多个元件彼此直接物理接触或电接触。“耦合”可以表示两个或更多个元件直接物理接触或电接触。然而,“耦合”也可以表示两个或更多个元件并非彼此直接接触,但是仍然彼此协作或交互。
一些实施例可以以硬件、固件、以及软件中的一个或组合来实现。一些实施例还可以被实现为存储在机器可读介质上的指令,该指令可以由计算平台读取并执行以执行本文所描述的操作。机器可读介质可以包括用于以机器(例如,计算机)可读的形式存储或发送信息的任何机制。例如,机器可读介质可以包括只读存储器(ROM);随机存取存储器(RAM);磁盘存储介质;光存储介质;闪速存储器设备;或电、光、声或其它形式的传播信号,例如,载波、红外信号、数字信号、或发送和/或接收信号的接口,以及其它。
实施例是实现方式或示例。说明书中对“实施例”、“一个实施例”、“一些实施例”、“各种实施例”、或“其它实施例”的引用表示结合实施例描述的特定特征、结构或特性包括在本技术的至少一些实施例中,但不一定是本技术的所有实施例。“实施例”、“一个实施例”、或“一些实施例”的各种出现不一定全部指代相同的实施例。可以对来自实施例的元素或方面与另一实施例的元素或方面进行组合。
并非在本文中描述并示出的所有组件、特征、结构、特性等都需要包括在特定的实施例或多个实施例中。例如,如果说明书陈述了“可以”、“可能”、“能够”、或“能”包括组件、特征、结构、或特性,则不一定需要包括特定的组件、特征、结构或特性。如果说明书或权利要求书提及“一”或“一个”元素,则并不表示只有元素中的一个元素。如果说明书或权利要求书提及“附加”元素,则不排除存在附加元素中的多于一个附加元素。
应当注意,虽然已经参考特定实现方式描述了一些实施例,但是根据一些实施例,其它实现方式也是可能的。附加地,附图中所示的和/或本文所描述的电路元件或其它特征的布置和/或顺序并非必须以所示出和所描述的特定方式来布置。根据一些实施例,许多其它布置是可能的。
在附图所示的每个系统中,在某些情况下,元件可以每个均具有相同的附图标记或不同的附图标记,以表明所表示的元件可以是不同的和/或类似的。然而,元件可以是足够灵活的以具有不同的实现方式并且与本文所示出或所描述的系统中的一些或全部一起工作。附图中所示的各种元件可以是相同的或不同的。哪一个元件被称为第一元件以及哪一个元件被称为第二元件是任意的。
图1是根据一个实施例的示意图,其示出了用于处理关系数据的图形100。如图1所示,图形100包括多个顶点102A-102C和多个边缘104A-D。顶点102A-102C表示社交网络中的特定实体,举例来说,例如,分别为用户A、用户B、以及用户C。边缘104A-D(其被示为如图1中的线)表示顶点102A-C之间的关系的强度和方向。换言之,边缘104A-D是对应于顶点102A-C的实际关系数据的视觉表示。另外,每个边缘104A-D上的箭头提供关于两个顶点之间的关系的方向的信息,由此对源顶点与目标顶点进行区分。
根据图1所示的示例,边缘104A将顶点102A连接到顶点102B,并且可以表示从用户A发送到用户B的电子通信,举例来说,例如,电子邮件、即时消息,或者另一种形式的电子通信。边缘104B将顶点102B连接到顶点102C,并且可以表示从用户B发送到用户C的电子通信。边缘104C也将顶点102B连接到顶点102C,并且可以表示从用户C发送到用户B的电子通信。边缘104D将顶点102C连接到顶点102A,并且可以表示从用户C发送到用户A的电子通信。
此外,表示每个边缘104A、104B、104C、或104D的线的粗度可以取决于102A、102B、或102C之中的两个顶点之间的关系的强度而变化。根据图1所示的示例,边缘104D是粗的,指示大量的电子通信从用户C发送到用户A。相比之下,边缘104B是细的,指示少量的电子通信从用户B发送到用户C。
根据本文所描述的实施例,随着关系数据量随时间增加,图1所示的图形100可以扩展为包括数千、数百万、或者甚至数十亿的顶点和边缘。本文所描述的技术允许随着图形演进高效地使用针对图形100的边缘的标识符。
图2是根据一个实施例的过程流程图,其示出了用于计算全局边缘ID的方法200。在框202处,可以将图形内的顶点划分成具有固定块大小的一系列块。然后,在框204处,可以将为0的块ID分配给第一块。随着图形增长,储存区(bucket)的数量可以扩大。更具体地,随着顶点的数量的增加,在框206处可以使用本文所描述的特定算法来计算新的块ID。然后可以在框208处基于源顶点ID、目标顶点ID、以及边缘所位于的块的块ID来计算全局边缘ID。
根据该方法,因为全局边缘ID是源顶点ID和目标顶点ID的函数,因此有可能维持小得多的映射表。例如,要高速缓存的元素的关键数量可以只有2×-1,其中V是顶点的总数量,而B是块大小,其通常很大。
图2的方法200还可以包括对块大小进行选择。在一些实施例中,2n可以用作块大小。这有助于将乘法变换为CPU中的移位操作,并使计算开销最小化。然而,应当理解,块大小不限于2n,而是可以将任意数量用作块大小。
图3是根据一个实施例的表300,其示出了用于在将块ID分配给增加的行之前将块ID分配给增加的列的技术。y轴302是sourceId。由于顶点的总数量随着时间的推移而不断增长,sourceId也不断增长。x轴304是targetId。与sourceId类似,targetId也随着顶点的总数量增长而不断增长。根据图3所示的实施例,在将块ID分配给增加的行之前将块ID分配给增加的列。
图4是根据一个实施例的表400,其示出了用于在将块ID分配给增加的列之前将块ID分配给增加的行的技术。y轴402是sourceId。由于顶点的总数量随着时间的推移不断增长,sourceId也不断增长。x轴404是targetId。与sourceId类似,targetId也随着顶点的总数量增长而不断增长。根据图4所示的实施例,在将块ID分配给增加的列之前将块ID分配给增加的行。
图3和图4中使用的块大小是K。在一些实施例中,块大小等于2n,并且n可以基于不同的使用情况来配置。在“大数据”时代,n可以很容易地为10、20、或甚至更大,这表示块大小可能在数千(2048)、数百万(1048576)的范围内,或者甚至更大。
应当理解,在本中文参考图3所示的实施例描述了本技术,即,将块ID分配给在增加的行之前将块ID分配给增加的列。然而,本技术也可以容易地应用于图4所示的实施例,即,在将块ID分配给增加的列之前将块ID分配给增加的行。
随着图形大小增长,块ID的有效范围总是从一个正方形区域增长到另一个更大的正方形区域,如图3和4中的阴影所示。图形从块ID 0开始,其中顶点的数量在[0,K)的范围内。当顶点的数量增长到在[K,2K)范围内时,有效块ID从集合{0}增加到{0,1,2,3}。当顶点的数量增长到在[2K,3K)范围内时,有效块ID从集合{0,1,2,3}增加到{0,1,2,3,4,5,6,7,8}。随着图形的大小增加,相同的趋势继续。
存在许多方法以基于图3所示的设计的布置来计算块ID。例如,在一些实施例中,可以以递归函数计算块ID,如下面关于图5详细讨论的。
图5是根据一个实施例的过程流程图,其示出了用于以递归函数计算块ID的方法500。方法500包括两个阶段。第一阶段由框502表示,并且包括对源块ID(“sourceBlockId”)和目标块ID(“targetBlockId”)进行计算。可以根据等式1和等式2来计算sourceBlockId和targetBlockId。
根据等式1和等式2,将sourceId除以块大小(blockSize)的结果向下舍入到最接近的整数以得到sourceBlockId。类似地,将targetId除以blockSize的结果向下舍入到最接近的整数以得到targetBlockId。应当理解,等式1和等式2是本文所描述的技术的一个实施例的示例。可以根据本文所描述的技术的具体实施例的细节以任何方式对等式1和等式2进行修改。
方法500的第二阶段由图5所示的剩余框(如虚线504所指示的)表示,并且包括基于sourceBlockId和targetBlockId来分配块ID。例如,当sourceBlockId和targetBlockId二者为0时,得到的块ID(“BlockId”)为0。当顶点的数量从[0,K)范围增长到[K,2K)范围时,sourceBlockId和targetBlockId对的集合也将从{(0,0)}增长到{(0,0),(0,1),(1,0),(1,1)}。
当sourceBlockId为0而targetBlockId为1时,计算伴随“if”分支进行,由图5中的箭头506表示。该计算递归地调用getBlockId(0,0),并且对于这种情况,得到的块ID为1。当sourceBlockId为1而targetBlockId为0时,计算伴随“else”分支进行,由图5中的箭头508表示。该计算递归地调用getBlockId(0,1),并且对于这种情况,得到的块ID为2。当顶点的数量从[0,3K)范围增长到[3K,4K)范围时,八个块ID已经被分配。
图5并非旨在指示方法500的框要以任何特定的顺序来执行,或者在每一种情况下方法500将包括图5所示的框中的所有框。此外,方法500不限于图5所示的框。相反,根据具体实现方式的细节,可以向方法500添加任何数量的附加框。
图6A是根据一个实施例的表600,其示出了用于基于最后的对角线单元格和源块ID将块ID分配给新添加的列中的单元格的技术。根据图6A所示的实施例,最后的对角线单元格602的sourceBlockId为2,targetBlockId为2,以及先前分配的块ID为8。针对新添加的列604中的单元格的计算如下所示。
blockId(0,3)=blockId(2,2)+0+1=9
blockId(l,3)=blockId(2,2)+1+1=10
blockId(2,3)=blockId(2,2)+2+1=11
图6B是图6的表600具有新添加的行606。图6B示出了本文所描述的用于针对新添加的行中的单元格基于最后的对角线单元格右侧的单元格和targetBlockId分配块ID的技术。根据图6B所示的实施例,先前的对角线单元格608的sourceBlockId为3,targetBlockId为2,以及块ID为11。针对新添加的行606中的单元格的计算如下所示。
blockId(3,0)=blockId(2,3)+0+1=12
blockId(3,1)=blockId(2,3)+1+1=13
blockId(3,2)=blockId(2,3)+2+1=14
blockId(3,3)=blockId(2,3)+3+1=15
在各种实施例中,随着图形大小不断增加,可以使用相同的计算机制。
在其它实施例中,计算后的块ID可以被高速缓存。由于图形大小总是增加,可以通过在较旧的图形大小上查找先前计算过的块ID来获得块ID。如果找到先前计算过的块ID,则可以使用先前计算的块ID来计算新的块ID,而不是根据递归函数重新计算块ID。这种方法比先前的方法使用更多的存储空间,因为查找表必须存储在存储空间中。然而,当图形大小非常大时,这种方法有时可以是优选的。
图7是根据一个实施例的表700,其示出了基于本文所描述的计算顺序来进行高速缓存的关键块ID。图6A和图6B示出了对于每个计算窗口而言最重要的块ID是对角线单元格和每行中紧挨着对角线单元格的单元格。因此,对于图7所示的实施例,可以高速缓存对角线单元格702A-H的块ID和每行706A-H中紧挨着对角线单元格702A-H的单元格704A-G的块ID。仅高速缓存这些单元格的块ID可以节省存储空间,同时仍然提供良好的性能。
在各种实施例中,下一个阶段是在演进图形上计算全局边缘ID(“globalId”)。基于用于在演进图形上计算块ID的上述算法,可以容易地计算全局边缘ID。具体地,根据本文所描述的实施例,可以计算源偏移(“sourceOffset”)、目标偏移(“targetOffset”)、sourceBlockId、以及targetBlockId。接下来,可以使用sourceBlockId和targetBlockId来计算BlockId。然后可以使用sourceOffset、targetOffset、以及BlockId来计算边缘或(sourceId,targetId)对的最终globalId。可以使用以下伪代码以这种方式来计算全局边缘ID。
val source Offset=sourceId%blockSize
val targetOffset=targetId%blockSize
val sourceBlockId=sourceId/blockSize
val targetBlockId=targetId/blockSize
val BlockId=getBlockId(sourceBlockId.toLong,targetBlockId.toLong)
val globalId=BlockId*blockSize*blockSize+sourceOffset*blockSize+targetOffset
除了提供用于针对演进图形分配全局边缘ID的方法之外,本技术还涉及提供用于针对演进图形计算增量页面排序的方法,如本文进一步讨论的。对于在演进图形上进行的分析,原始的方法是在每个处理窗口处重新生成整个图形,并在新生成的图形之上重新运行机器学习算法。根据这种方法,现有的静态算法并非必须改变。然而,这不是高效的方法。更精细的方法是重新使用来自先前的处理窗口的训练后的结果,并且在新的处理窗口中生成具有新的信息的图形之后,在先前训练的结果之上运行增量机器学习。
页面排序是可以用于对搜索引擎结果中的网站进行排序的算法。它是“大数据”时代中的事实上的“Hello Word”机器学习算法。页面排序算法的示例由等式3给出。
在等式3中,PR(A)是页面A的PageRank;PR(Ti)是链接到页面A的页面Ti的PageRank;C(Ti)是页面Ti上的出站链接的数量;而α是复位概率,可以设置在0与1之间。应当理解,等式3是本文所描述的技术的一个实施例的示例。可以根据本文所描述的技术的具体实施例的细节以任何方式对等式3进行修改。
用于实现页面排序的当前框架是静态的,并且不与演进图形兼容。这限制了页面排序在“大数据”时代中的实用性。相应地,本文所描述的实施例提供了用于针对图形处理平台在演进图形上计算增量页面排序的方法。
图8是根据一个实施例的过程流程图,其示出了用于针对演进图形增量地计算页面排序的方法800。基本思想是在初始化顶点值和发送初始消息时,在每个处理窗口处在基本图形和新的图形之间进行区分。具体地,在处理窗口的第一次迭代中,如果边缘是新添加的并且其源顶点是旧的,则源顶点可以将其从所有先前的窗口得到的所有更新快速转发到当前边缘的目标顶点。
方法800可以在框802处开始,在框802处,以与针对静态算法对页面排序进行计算相同的方式在第一处理窗口中计算页面排序。在框804处,计算后的页面排序结果被保存为第一处理窗口的图形状态。
然后,增量页面排序计算在框806处开始,在框806处,利用最后的处理窗口的页面排序值来初始化每个处理窗口处的顶点值。在各种实施例中,可以基于是在基本图形上还是在更新的图形上计算页面排序来不同地对顶点值进行初始化。当在基本图形上计算页面排序时,每个顶点可以被初始化为(alpha,alpha)。然而,当在更新的图形上计算页面排序时,旧的顶点可以保留其来自最后的处理窗口的训练后的值。具体地,旧的顶点的值可以是(lastWindowPageRank,lastWindowDelta),而新的顶点可以被初始化为(alpha,alpha)。
在框808处,如果边缘是新添加的,而其源顶点已经存在于先前的处理窗口中,则在当前处理窗口的第一次迭代中源顶点可以将其从先前的处理窗口得到的所有更新快速转发到其目标顶点。在框810处,对于所有其它类型的边缘,如果源顶点的值不收敛,则源顶点可以将与上一次迭代相比源顶点改变了多少发送给目标顶点。如图8中的框812所示,这可以继续,直到所有顶点都收敛。然后,在框814处,计算后的页面排序结果可以被保存为处理窗口的图形状态。
图8并非旨在指示方法800的框要以任何特定的顺序来执行,或者在每一种情况下方法800将包括图8所示的框中的所有框。此外,方法800不限于图8所示的框。相反,根据具体实现方式的细节,可以向方法800添加任何数量的附加框。
在一些实施例中,正如在静态页面排序中,边缘权重可以被初始化为来自边缘的源顶点的外边缘数量的倒数。当更新的图形中的顶点的外边缘数量已经变化时,顶点的所有外边缘的权重也将基于顶点的外边缘的新的数量而被更新。
图9是表示本文所描述的用于针对演进图形计算增量页面排序的技术的一个实施例的伪代码的屏幕截图900。在图9所示的实施例中,基本图形上的初始消息与更新的图形上的初始消息不同。基本图形上的初始消息与静态页面排序计算相同。具体地,初始消息是常数值,alpha/(1-alpha)。相比之下,对于更新的图形,不需要初始消息。
当顶点在当前迭代中发送消息通知其邻居顶点的新值时,如果消息是从旧的顶点到新的顶点,则旧的顶点可以将其从先前的窗口得到的所有更新快速转发到新的顶点。由于每个顶点的高效初值为alpha,所以旧的顶点可以计算最后的处理窗口中的其页面排序与alpha之间的差量(delta)值,并将该差量值发送到新的顶点。对于其余的顶点组合,只有当顶点的差量值高于收敛阈值时,才发送消息。在图9中,tol用于表示收敛阈值。
图10是表示本文所描述的用于针对演进图形计算增量页面排序的技术的另一个实施例的伪代码的屏幕截图1000。根据图10所示的实施例,类似于静态页面排序的另一个实现方式,初始常量消息可以被折叠成顶点的初始值。
图11是示出根据本文所描述的实施例的被配置为针对演进图形提供全局边缘ID分配和/或增量页面排序计算的计算设备1100的框图。例如,计算设备1100可以是膝上型计算机、台式计算机、平板计算机、移动设备、或服务器,以及其它。计算设备1100可以包括被配置为执行所存储的指令的中央处理单元(CPU)1102,以及存储可以由CPU 1102执行的指令的存储器设备1104。CPU可以通过总线1106耦合到存储器设备1104。附加地,CPU 1102可以是单核处理器、多核处理器、计算集群、或任何数量的其它配置。此外,计算设备1100可以包括多于一个CPU 1102。存储器设备1104可以包括随机存取存储器(RAM)、只读存储器(ROM)、闪速存储器、或任何其它合适的存储器系统。例如,存储器设备1104可以包括动态随机存取存储器(DRAM)。
CPU 1102还可以通过总线1106链接到显示接口1108,显示接口1108被配置为将计算设备1100连接到显示设备1110。显示设备1110可以包括显示屏幕,显示屏幕是计算设备1100的内置组件。显示设备1110还可以包括外部地连接到计算设备1100的计算机监视器、电视机、或投影仪,以及其它。
计算设备还可以包括存储设备1112。存储设备1112可以是物理存储器,例如,硬盘驱动器、光驱动器、拇指驱动器、驱动器阵列或其任何组合。存储设备1112还可以包括远程存储驱动器。在各种实施例中,存储设备1112包括被配置为在计算设备1100上运行的全局边缘ID分配应用1114。全局边缘ID分配应用1114可以包括根据本文所描述的实施例用于针对演进图形的边缘分配全局边缘ID的指令。在各种实施例中,存储设备1112还包括被配置为在计算设备1100上运行的增量页面排序计算应用1116。增量页面排序计算应用1116可以包括根据本文所描述的实施例用于针对演进图形执行增量页面排序计算的指令。存储设备1112还可以包括被配置为在计算设备上运行以执行各种任务的任何数量的附加应用。
计算设备1100还可以包括网络接口控制器(NIC)1118,其被配置为通过总线1106将计算设备1100连接到网络1120。网络1120可以是广域网(WAN)、局域网(LAN)、或互联网,以及其它。根据本文所描述的实施例,计算设备1100可以被配置为经由网络1120将由全局边缘ID分配应用1114和/或增量页面排序计算应用1116生成的信息发送到其它设备和/或用户。
图11的框图并非旨在指示计算设备1100将包括图11所示的组件中的所有组件。此外,根据具体实现方式的细节,计算设备1100可以包括任何数量的在图11中未示出的附加组件。
图12是示出根据本文所描述的实施例的被配置为针对演进图形提供全局边缘ID分配和/或增量页面排列计算的计算机可读介质1200的框图。计算机可读介质1200可以由处理器1202通过计算机总线1204进行访问。在一些示例中,计算机可读介质1200可以是非暂时性的计算机可读介质。在一些示例中,计算机可读介质可以是存储介质,但不包括载波、信号等。此外,计算机可读介质1200可以包括用于指示处理器1202执行当前方法的计算机可执行指令。
如图12所示,本文所讨论的各种软件组件可以存储在计算机可读介质1200上。例如,全局边缘ID分配应用1206可以被配置为针对随着要处理的关系数据的量的增加而演进的图形的边缘来分配全局边缘ID。另外,增量页面排序计算应用1208可以被配置为针对演进图形计算增量页面排序。
图12的框图并非旨在指示计算机可读介质1200将包括图12所示的组件中的所有组件。此外,根据具体实现方式的细节,计算机可读介质1200可以包括任何数量的在图12中未示出的附加组件。
示例可以包括诸如针对演进图形提供全局边缘ID分配的系统和方法的主题。示例还可以包括诸如针对演进图形提供增量页面排序计算的系统和方法的主题。
示例1包括一种用于针对演进图形计算全局边缘ID的方法。该方法包括针对包括多个顶点和多个边缘的演进图形选择块大小,以及针对演进图形计算块ID。计算块ID包括创建表示演进图形的表,其中该表包括所选择的块大小的单元格、表示源顶点ID的y轴、以及表示目标顶点ID的x轴,以及当新的顶点被添加到演进图形时,在针对表的新行中的单元格计算块ID之前针对表的新列中的单元格计算块ID。该方法还包括针对演进图形基于源顶点ID、目标顶点ID、以及针对每个边缘所位于的块的块ID来计算全局边缘ID。
示例2包含示例1的主题。在该示例中,该方法包括在递归函数中计算块ID。
示例3包含示例1-2的任何组合的主题。在该示例中,在递归函数中计算块ID包括,基于每个单元格的源顶点ID和针对表中的最后的对角线单元格所计算的块ID,针对表的新列中的每个单元格计算块ID。
示例4包含示例1-3的任何组合的主题。在该示例中,在递归函数中计算块ID包括,基于每个单元格的目标顶点ID和针对表中的最后的对角线单元格右侧的单元格所计算的块ID,针对表的新行中的每个单元格计算块ID。
示例5包含示例1-4的任何组合的主题。在该示例中,该方法包括高速缓存针对每个对角线单元格和表中每个对角线单元格右侧的单元格的块ID。
示例6包含示例1-5的任何组合的主题。在该示例中,该方法包括将块大小选择为2n。
示例7包含示例1-6的任何组合的主题。在该示例中,该方法包括在针对表的新行中的单元格计算块ID之前针对所述表的新列中的单元格计算块ID,其包括当新的顶点被添加到演进图形时添加新列,针对新列中的单元格计算块ID,一旦已经针对新列中的单元格计算块ID则添加新行,以及针对新行中的单元格计算块ID。
示例8包含示例1-7的任何组合的主题。在该示例中,该方法包括当新的顶点被不断地添加到演进图形时重复示例7的方法。
示例9包含示例1-8的任何组合的主题。在该示例中,该方法包括在针对表的新列中的单元格计算块ID之前针对表的新行中的单元格计算块ID。
示例10包含示例1-9的任何组合的主题。在该示例中,在针对表的新列中的单元格计算块ID之前针对表的新行中的单元格计算块ID包括:当新的顶点被添加到演进图形中时添加新行,针对新行中的单元格计算块ID,一旦已经针对新行中的单元格计算块ID则添加新列,以及针对新列中的单元格计算块ID。
示例11包含示例1-10的任何组合的主题。在该示例中,该方法包括当新的顶点被不断地添加到演进图形时重复示例10的方法。
示例12包含示例1-11的任何组合的主题。在该示例中,该方法包括通过以下操作针对演进图形计算增量页面排序:使用静态算法在第一处理窗口中计算页面排序值,将所计算的页面排序值保存为第一处理窗口的图形状态,以及利用先前处理窗口的页面排序值来初始化每个处理窗口处的顶点值。如果新的边缘被添加而新的边缘的源顶点值在先前处理窗口中已经存在,则该方法还包括在当前处理窗口的第一次迭代中将从先前处理窗口接收的源顶点的所有更新快速转发到目标顶点。对于所有其它类型的边缘,如果边缘的源顶点值不存在,则该方法还包括计算源顶点值在当前迭代与先前迭代之间的变化,并将源顶点值的变化发送到目标顶点。该方法还包括继续此过程,直到已经针对所有顶点计算顶点值,以及针对演进图形将顶点值保存为增量页面排序值。
示例13包括一种机器可读介质,其包括代码,该代码当被执行时使得机器执行示例1-12的任何组合的方法。
示例14包括一种用于针对演进图形计算全局边缘ID的计算系统。该计算系统包括处理器和全局边缘ID分配应用,全局边缘ID分配应用至少部分地包括硬件逻辑。全局边缘ID分配应用的硬件逻辑用于针对演进图形计算块ID。计算块ID包括创建表示演进图形的表,其中该表包括固定块大小的单元格、表示源顶点ID的y轴、以及表示目标顶点ID的x轴,以及当新的顶点被添加到演进图形时,在针对表的新行中的单元格计算块ID之前针对表的新列中的单元格计算块ID。全局边缘ID分配应用的硬件逻辑还用于针对演进图形基于源顶点ID、目标顶点ID、以及针对每个边缘所位于的块的块ID来计算全局边缘ID。
示例15包含示例14的主题。在该示例中,全局边缘ID分配应用的硬件逻辑通过以下操作在递归函数中计算块ID:基于每个单元格的源顶点ID和针对表中的最后的对角线单元格所计算的块ID,针对表的新列中的每个单元格计算块ID,以及基于每个单元格的目标顶点ID和针对表中的最后的对角线单元右侧的单元格所计算的块ID,针对表的新行中的每个单元格计算块ID。
示例16包含示例14-15的任何组合的主题。在该示例中,全局边缘ID分配应用的硬件逻辑高速缓存针对每个对角线单元格和表中每个对角线单元格右侧的单元格的块ID。
示例17包含示例14-16的任何组合的主题。在该示例中,全局边缘ID分配应用的硬件逻辑通过以下操作在针对表的新行中的单元格计算块ID之前针对表的新列中的单元格计算块ID:当新的顶点被添加到演进图形时添加新列,针对新列中的单元格计算块ID,一旦已经针对新列中的单元格计算块ID则添加新行,以及针对新行中单元格计算块ID。
示例18包含了示例14-17的任何组合的主题。在该示例中,全局边缘ID分配应用的硬件逻辑当新的顶点被添加到演进图形时重复示例17的方法。
示例19包含示例14-18的任何组合的主题。在该示例中,全局边缘ID分配应用的硬件逻辑通过以下操作在针对表的新列中的单元格计算块ID之前针对表的新行中的单元格计算块ID:当新的顶点被添加到演进图形时添加新行,针对新行中的单元格计算块ID,一旦已经针对新行中的单元格计算块ID则添加新列,以及针对新列中的单元格计算块ID。
示例20包含示例14-19的任何组合的主题。在该示例中,计算系统包括至少部分地包括硬件逻辑的增量页面排序计算应用。增量页面排序计算应用的硬件逻辑用于使用静态算法在第一处理窗口中计算页面排序值,将所计算的页面排序值保存为第一处理窗口的图形状态,以及利用先前处理窗口的页面排序值来初始化每个处理窗口处的顶点值。如果新的边缘被添加而在新的边缘的源顶点值在先前处理窗口中已经存在,则增量页面排序计算应用的硬件逻辑用于在当前处理窗口的第一次迭代中,将从先前处理窗口接收的源顶点的所有更新快速转发到目标顶点。对于所有其它类型的边缘,如果边缘的源顶点值不存在,则增量页面排序计算应用的硬件逻辑用于计算源顶点值在当前迭代与先前迭代之间的的变化,并将源顶点值的变化发送到目标顶点。增量页面排序计算应用的硬件逻辑还用于继续此过程,直到已经针对所有顶点计算顶点值,以及针对演进图形将顶点值保存为增量页面排序值。
示例21包括一种有形的、非暂时性的计算机可读介质,其包括代码,该代码指示处理器针对包括多个顶点和多个边缘的演进图形选择块大小,以及针对演进图形计算块ID。计算块ID包括创建表示演进图形的表,其中该表包括所选择的块大小的单元格、表示源顶点ID的y轴、以及表示目标顶点ID的x轴,以及当新的顶点被添加到演进图形时,在针对表的新行中的单元格计算块ID之前针对表的新列中的单元格计算块ID。该有形的、非暂时性的计算机可读介质还包括指示处理器针对演进图形基于源顶点ID、目标顶点ID、以及每个边缘所位于的块的块ID来计算的全局边缘ID的代码。
示例22包含示例21的主题。在该示例中,有形的、非暂时的计算机可读介质包括指示处理器通过以下操作在递归函数中计算块ID的代码:基于每个单元格的源顶点和针对表中的最后的对角线单元格所计算的块ID,针对表的新列中的每个单元格计算块ID,以及基于每个单元格的目标顶点ID和针对表中的最后的对角线单元格右侧的单元格所计算的块ID,针对表的新行中的每个单元格计算块ID。
示例23包含示例21-22的任何组合的主题。在该示例中,有形的、非暂时性的计算机可读介质包括指示处理器高速缓存针对每个对角线单元格和表中每个对角线单元格右侧的单元格的块ID的代码。
示例24包含示例21-23的任何组合的主题。在该示例中,有形的、非暂时性的计算机可读介质包括指示处理器通过以下操作在针对表的新行中的单元格计算块ID之前针对表的新列中的单元格计算块ID的代码:当新的顶点被添加到演进图形时添加新列,针对新列中的单元格计算块ID,一旦已经针对新列中的单元格计算块ID则添加新行,以及针对新行中的单元格计算块ID。
示例25包含示例21-24的任何组合的主题。在该示例中,有形的、非暂时性的计算机可读介质包括指示处理器通过以下操作在针对表的新列中的单元格计算块ID之前针对表的新行中的单元格计算块ID的代码:当新的顶点被添加到演进图形时添加新行,针对新行中的单元格计算块ID,一旦已经针对新行中的单元格计算块ID则添加新列,以及针对新列中的单元格计算块ID。
示例26包含示例21-25的任何组合的主题。在该示例中,有形的、非暂时性的计算机可读介质包括指示处理器进行以下操作的代码:使用静态算法在第一处理窗口中计算页面排序值,将所计算的页面排序值保存为第一处理窗口的图形状态,以及利用先前处理窗口的页面排序值来初始化每个处理窗口处的顶点值。如果新的边缘被添加而新的边缘的源顶点值在先前处理窗口中已经存在,则有形的、非暂时性的计算机可读介质包括指示处理器在当前处理窗口的第一次迭代中将从先前处理窗口接收的源顶点的所有更新快速转发到目标顶点的代码。对于所有其它类型的边缘,如果边缘的源顶点值不存在,则有形的、非暂时性的计算机可读介质包括指示处理器计算源顶点值在当前迭代与先前迭代之间的变化并将源顶点值的变化发送到目标顶点的代码。有形的、非暂时性的计算机可读介质还包括指示处理器继续此过程直到已经针对所有顶点计算顶点值,以及针对演进图形将顶点值保存为增量页面排序值的代码。
示例27包括一种装置,该装置包括处理器和代码,该代码指示处理器针对包括多个顶点和多个边缘的演进图形选择块大小,以及针对演进图形计算块ID。计算块ID包括创建表示演进图形的表,其中该表包括所选择的块大小的单元、表示源顶点ID的y轴、以及表示目标顶点ID的x轴,以及当新的顶点被添加到演进图形时,在针对表的新行中的单元格计算块ID之前针对表的新列中的单元格计算块ID。该装置还包括指示处理器针对演进图形基于源顶点ID、目标顶点ID、以及针对每个边缘所位于的块的块ID来计算全局边缘ID的代码。
示例28包含示例27的主题。在该示例中,该装置包括指示处理器通过以下操作在针对表的新行中的单元格计算块ID之前针对表的新列中的单元格计算块ID的代码:当新的顶点被添加到演进图形时添加新列,针对新列中的单元格计算块ID,一旦已经针对新列中的单元格计算块ID则添加新行,以及针对新行中的单元格计算块ID。
示例29包含示例27-28的任何组合的主题。在该示例中,该装置包括指示处理器通过以下操作在递归函数中计算块ID的代码:基于每个单元格的源顶点ID和针对表中的最后的对角线单元格所计算的块ID,针对表的新列中的每个单元格计算块ID,以及基于每个单元格的目标顶点ID和针对表中的最后的对角线单元格右侧的单元格所计算的块ID,针对表的新行中的每个单元格计算块ID。
示例30包含示例27-29的任何组合的主题。在该示例中,该装置包括用于引导处理器通过以下操作在计算表的新列中的单元格的块ID之前计算表的新行中的单元格的块ID的代码:在新顶点添加到演进图形时,计算新行中单元格的块ID,一旦为新行中的单元格计算块ID,则添加新列,并计算新列中单元格的块ID。
示例31包含示例27-30的任何组合的主题。在该示例中,该装置包括指示处理器高速缓存针对每个对角线单元格和表中每个对角线单元格右侧的单元格的块ID的代码。
示例32包含示例27-31的任何组合的主题。在该示例中,该装置包括指示处理器进行以下操作的代码:使用静态算法在第一处理窗口中计算页面排序值,将所计算的页面排序值保存为第一处理窗口的图形状态,以及利用先前处理窗口的页面排序值来初始化每个处理窗口处的顶点值。如果新的边缘被添加而新的边缘的源顶点值在先前处理窗口中已经存在,则该代码还指示处理器在当前处理窗口的第一次迭代中将从先前处理窗口接收的源顶点的所有更新快速转发到目标顶点。对于所有其它类型的边缘,如果边缘的源顶点值不存在,则代码指示处理器计算源顶点值在当前迭代与先前迭代之间的变化,并将源顶点值的变化发送到目标顶点。代码还指示处理器继续此过程,直到已经针对所有顶点计算顶点值,以及针对演进图形将顶点值保存为增量页面排序值。
示例33包括计算机可读存储设备,其包括计算机可读指令,该计算机可读指令当被执行时实现如任何前述示例中所描述的方法或实现如任何前述示例中所描述的装置。
应当理解,前述示例中的细节可以在一个或多个实施例中的任何地方使用。例如,上面所描述的计算设备的所有可选特征也可以关于本文所描述的方法或计算机可读介质中的任一种来实现。此外,尽管本文已经使用流程图和/或状态图描述了实施例,但是本技术不限于这些图或本文中的对应描述。例如,流程不一定需要移动通过每个所示出的框或状态,或者比一定需要按照与本文所示出和所描述的顺序完全相同的顺序。
本技术不被限制到本文所列出的具体细节。实际上,受益于本公开内容的本领域技术人员将认识到,可以在本技术的范围内进行对前述描述和附图的许多其它变型。相应地,包括其任何修改的所附权利要求书对本技术的范围进行限定。
Claims (25)
1.一种用于针对演进图形计算全局边缘ID的方法,包括:
针对包括多个顶点和多个边缘的演进图形选择块大小;
针对所述演进图形计算块ID,其中,计算所述块ID包括:
创建表示所述演进图形的表,其中,所述表包括所选择的块大小的单元格、表示源顶点ID的y轴、以及表示目标顶点ID的x轴;以及
当新的顶点被添加到所述演进图形时,在针对所述表的新行中的单元格计算块ID之前针对所述表的新列中的单元格计算块ID;以及
针对所述演进图形基于所述源顶点ID、所述目标顶点ID、以及针对每个边缘所位于的块的所述块ID来计算全局边缘ID。
2.根据权利要求1所述的方法,其中,在针对所述表的新行中的单元格计算块ID之前针对所述表的新列中的单元格计算块ID包括:
当新的顶点被添加到所述演进图形时添加新列;
针对所述新列中的单元格计算块ID;
一旦已经针对所述新列中的所述单元格计算块ID,则添加新行;以及
针对所述新行中的单元格计算块ID。
3.根据权利要求2所述的方法,包括当新的顶点被不断地添加到所述演进图形时重复权利要求2所述的方法。
4.根据权利要求1或2中任一项所述的方法,包括在递归函数中计算所述块ID。
5.根据权利要求4所述的方法,其中,在所述递归函数中计算所述块ID包括,基于每个单元格的源顶点ID和针对所述表中的最后的对角线单元格所计算的块ID,针对所述表的新列中的每个单元格计算所述块ID。
6.根据权利要求4所述的方法,其中,在所述递归函数中计算所述块ID包括,基于每个单元格的目标顶点ID和针对所述表中的最后的对角线单元格右侧的单元格所计算的块ID,针对所述表的新行中的每个单元格计算所述块ID。
7.根据权利要求1所述的方法,包括在针对所述表的新列中的单元格计算块ID之前针对所述表的新行中的单元格计算块ID。
8.根据权利要求7所述的方法,其中,在针对所述表的新列中的单元格计算块ID之前针对所述表的新行中的单元格计算块ID包括:
当新的顶点被添加到所述演进图形时添加新行;
针对所述新行中的单元格计算块ID;
一旦已经针对所述新行中的所述单元格计算块ID,则添加新列;以及
针对所述新列中的单元格计算块ID。
9.根据权利要求8所述的方法,包括当新的顶点被不断地添加到所述演进图形时重复权利要求8所述的方法。
10.根据权利要求1或7中任一项所述的方法,包括高速缓存针对每个对角线单元格和所述表中每个对角线单元格右侧的单元格的块ID。
11.根据权利要求1或7中任一项所述的方法,包括将所述块大小选择为2n。
12.根据权利要求1或7中任一项所述的方法,包括通过以下操作针对所述演进图形计算增量页面排序:
使用静态算法在第一处理窗口中计算页面排序值;
将所计算的页面排序值保存为所述第一处理窗口的图形状态;
利用先前处理窗口的页面排序值来初始化每个处理窗口处的顶点值;
如果新的边缘被添加而所述新的边缘的源顶点值在先前处理窗口中已经存在,则在当前处理窗口的第一次迭代中,将从所述先前处理窗口接收的所述源顶点的所有更新快速转发到目标顶点;
对于所有其它类型的边缘,如果所述边缘的源顶点值不存在,则计算所述源顶点值在当前迭代与先前迭代之间的变化,并将所述源顶点值的变化发送到目标顶点;
继续此过程,直到已经针对所有顶点计算顶点值;以及
针对所述演进图形将所述顶点值保存为增量页面排序值。
13.一种用于针对演进图形计算全局边缘ID的计算系统,包括:
处理器;以及
全局边缘ID分配应用,其至少部分地包括硬件逻辑,其中,所述全局边缘ID分配应用的所述硬件逻辑用于:
针对所述演进图形计算块ID,其中,计算所述块ID包括:
创建表示所述演进图形的表,其中,所述表包括固定块大小的单元格、表示源顶点ID的y轴、以及表示目标顶点ID的x轴;以及
当新的顶点被添加到所述演进图形时,在针对所述表的新行中的单元格计算块ID之前针对所述表的新列中的单元格计算块ID;以及
针对所述演进图形基于所述源顶点ID、所述目标顶点ID、以及针对每个边缘所位于的块的所述块ID来计算全局边缘ID。
14.根据权利要求13所述的计算系统,其中,所述全局边缘ID分配应用的所述硬件逻辑通过以下操作在针对所述表的新行中的单元格计算块ID之前针对所述表的新列中的单元格计算块ID:
当新的顶点被添加到所述演进图形时添加新列;
针对所述新列中的单元格计算块ID;
一旦已经针对所述新列中的所述单元格计算块ID,则添加新行;以及
针对所述新行中的单元格计算块ID。
15.根据权利要求14所述的计算系统,其中,所述全局边缘ID分配应用的所述硬件逻辑当新的顶点被添加到所述演进图形时重复权利要求14所述的方法。
16.根据权利要求13或14中任一项所述的计算系统,其中,所述全局边缘ID分配应用的所述硬件逻辑通过以下操作在递归函数中计算所述块ID:
基于每个单元格的源顶点ID和针对所述表中的最后的对角线单元格所计算的块ID,针对所述表的新列中的每个单元格计算所述块ID;以及
基于每个单元格的目标顶点ID和针对所述表中的最后的对角线单元格右侧的单元格所计算的块ID,针对所述表的新行中的每个单元格计算所述块ID。
17.根据权利要求13所述的计算系统,其中,所述全局边缘ID分配应用的所述硬件逻辑通过以下操作在针对所述表的新列中的单元格计算块ID之前针对所述表的新行中的单元格计算块ID:
当新的顶点被添加到所述演进图形时添加新行;
针对所述新行中的单元格计算块ID;
一旦已经针对所述新行中的所述单元格计算块ID,则添加新列;以及
针对所述新列中的单元格计算块ID。
18.根据权利要求13或17中任一项所述的计算系统,其中,所述全局边缘ID分配应用的所述硬件逻辑高速缓存针对每个对角线单元格和所述表中每个对角线单元格右侧的单元格的块ID。
19.根据权利要求13或17中任一项所述的计算系统,其中,所述计算系统包括增量页面排序计算应用,至少部分地包括硬件逻辑,其中,所述增量页面排序计算应用的所述硬件逻辑用于:
使用静态算法在第一处理窗口中计算页面排序值;
将所计算的页面排序值保存为所述第一处理窗口的图形状态;
利用先前处理窗口的页面排序值来初始化每个处理窗口处的顶点值;
如果新的边缘被添加而所述新的边缘的源顶点值在先前处理窗口中已经存在,则在当前处理窗口的第一次迭代中,将从所述先前处理窗口接收的所述源顶点的所有更新快速转发到目标顶点;
对于所有其它类型的边缘,如果所述边缘的源顶点值不存在,则计算所述源顶点值在当前迭代与先前迭代之间的变化,并将所述源顶点值的变化发送到目标顶点;
继续此过程,直到已经针对所有顶点计算顶点值;以及
针对所述演进图形将所述顶点值保存为增量页面排序值。
20.一种有形的、非暂时性的计算机可读介质,包括代码,所述代码指示处理器:
针对包括多个顶点和多个边缘的演进图形选择块大小;
针对所述演进图形计算块ID,其中,计算所述块ID包括:
创建表示所述演进图形的表,其中,所述表包括所选择的块大小的单元格、表示源顶点ID的y轴、以及表示目标顶点ID的x轴;以及
当新的顶点被添加到所述演进图形时,在针对所述表的新行中的单元格计算块ID之前针对所述表的新列中的单元格计算块ID;以及
针对所述演进图形基于所述源顶点ID、所述目标顶点ID、以及针对每个边缘所位于的块的所述块ID来计算全局边缘ID。
21.根据权利要求20所述的有形的、非暂时性的计算机可读介质,其中,所述有形的、非暂时性的计算机可读介质包括代码,所述代码指示所述处理器通过以下操作在针对所述表的新行中的单元格计算块ID之前针对所述表的新列中的单元格计算块ID:
当新的顶点被添加到所述演进图形时添加新列;
针对所述新列中的单元格计算块ID;
一旦已经针对所述新列中的所述单元格计算块ID,则添加新行;以及
针对所述新行中的单元格计算块ID。
22.根据权利要求20或21中任一项所述的有形的、非暂时性的计算机可读介质,其中,所述有形的、非暂时性的计算机可读介质包括代码,所述代码指示所述处理器通过以下操作在递归函数中计算所述块ID:
基于每个单元格的源顶点ID和针对所述表中的最后的对角线单元格所计算的块ID,针对所述表的新列中的每个单元格计算所述块ID;以及
基于每个单元格的目标顶点ID和针对所述表中的最后的对角线单元格右侧的单元格所计算的块ID,针对所述表的新行中的每个单元格计算所述块ID。
23.根据权利要求20所述的有形的、非暂时性的计算机可读介质,其中,所述有形的、非暂时性的计算机可读介质包括代码,所述代码指示所述处理器通过以下操作在针对所述表的新列中的单元格计算块ID之前针对所述表的新行中的单元格计算块ID:
当新的顶点被添加到所述演进图形时添加新行;
针对所述新行中的单元格计算块ID;
一旦已经针对所述新行中的所述单元格计算块ID,则添加新列;以及
针对所述新列中的单元格计算块ID。
24.根据权利要求20或23中任一项所述的有形的、非暂时性的计算机可读介质,其中,所述有形的、非暂时性的计算机可读介质包括代码,所述代码指示所述处理器高速缓存针对每个对角线单元格和所述表中每个对角线单元格右侧的单元格的块ID。
25.根据权利要求20或23中任一项所述的有形的、非暂时性的计算机可读介质,其中,所述有形的、非暂时性的计算机可读介质包括代码,所述代码指示所述处理器进行以下操作:
使用静态算法在第一处理窗口中计算页面排序值;
将所计算的页面排序值保存为所述第一处理窗口的图形状态;
利用先前处理窗口的页面排序值来初始化每个处理窗口处的顶点值;
如果新的边缘被添加而新的边缘的源顶点值在先前处理窗口中已经存在,则在当前处理窗口的第一次迭代中,将从所述先前处理窗口接收的所述源顶点的所有更新快速转发到目标顶点;
对于所有其它类型的边缘,如果所述边缘的源顶点值不存在,则计算所述源顶点值在当前迭代与先前迭代之间的变化,并将所述源顶点值的变化发送到目标顶点;
继续此过程,直到已经针对所有顶点计算顶点值;以及
针对所述演进图形将所述顶点值保存为增量页面排序值。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US14/581,112 | 2014-12-23 | ||
US14/581,112 US10417280B2 (en) | 2014-12-23 | 2014-12-23 | Assigning global edge IDs for evolving graphs |
PCT/US2015/055141 WO2016105644A1 (en) | 2014-12-23 | 2015-10-12 | Assigning global edge ids for evolving graphs |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107004011A true CN107004011A (zh) | 2017-08-01 |
CN107004011B CN107004011B (zh) | 2021-08-03 |
Family
ID=56129710
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201580063517.8A Active CN107004011B (zh) | 2014-12-23 | 2015-10-12 | 针对演进图形分配全局边缘id |
Country Status (4)
Country | Link |
---|---|
US (1) | US10417280B2 (zh) |
EP (1) | EP3238092A4 (zh) |
CN (1) | CN107004011B (zh) |
WO (1) | WO2016105644A1 (zh) |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20030120642A1 (en) * | 1999-12-30 | 2003-06-26 | Decode Genetics, Ehf. | Indexing, rewriting and efficient querying of relations referencing semistructured data |
CN102201108A (zh) * | 2010-03-08 | 2011-09-28 | 英特尔公司 | 边缘处理技术 |
CN102346766A (zh) * | 2011-09-20 | 2012-02-08 | 北京邮电大学 | 基于极大团发现的网络热点话题检测方法及装置 |
US20130024412A1 (en) * | 2011-06-28 | 2013-01-24 | Salesforce.Com, Inc. | Methods and systems for using map-reduce for large-scale analysis of graph-based data |
CN103077175A (zh) * | 2012-01-12 | 2013-05-01 | 西安邮电学院 | 一种有效的学术合作关系网络协作构建与自适应进化方法 |
US20130191416A1 (en) * | 2010-04-19 | 2013-07-25 | Yofay Kari Lee | Detecting Social Graph Elements for Structured Search Queries |
CN103729402A (zh) * | 2013-11-22 | 2014-04-16 | 浙江大学 | 一种基于图书目录的知识图谱的构建方法 |
EP2743845A1 (en) * | 2012-12-13 | 2014-06-18 | Sap Ag | Graph traversal operator inside a column store |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8364615B2 (en) | 2009-02-06 | 2013-01-29 | Microsoft Corporation | Local graph partitioning using evolving sets |
US9372928B2 (en) * | 2013-07-01 | 2016-06-21 | Palo Alto Research Center Incorporated | System and method for parallel search on explicitly represented graphs |
-
2014
- 2014-12-23 US US14/581,112 patent/US10417280B2/en active Active
-
2015
- 2015-10-12 EP EP15873884.9A patent/EP3238092A4/en not_active Ceased
- 2015-10-12 CN CN201580063517.8A patent/CN107004011B/zh active Active
- 2015-10-12 WO PCT/US2015/055141 patent/WO2016105644A1/en active Application Filing
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20030120642A1 (en) * | 1999-12-30 | 2003-06-26 | Decode Genetics, Ehf. | Indexing, rewriting and efficient querying of relations referencing semistructured data |
CN102201108A (zh) * | 2010-03-08 | 2011-09-28 | 英特尔公司 | 边缘处理技术 |
US20130191416A1 (en) * | 2010-04-19 | 2013-07-25 | Yofay Kari Lee | Detecting Social Graph Elements for Structured Search Queries |
US20130024412A1 (en) * | 2011-06-28 | 2013-01-24 | Salesforce.Com, Inc. | Methods and systems for using map-reduce for large-scale analysis of graph-based data |
CN102346766A (zh) * | 2011-09-20 | 2012-02-08 | 北京邮电大学 | 基于极大团发现的网络热点话题检测方法及装置 |
CN103077175A (zh) * | 2012-01-12 | 2013-05-01 | 西安邮电学院 | 一种有效的学术合作关系网络协作构建与自适应进化方法 |
EP2743845A1 (en) * | 2012-12-13 | 2014-06-18 | Sap Ag | Graph traversal operator inside a column store |
CN103729402A (zh) * | 2013-11-22 | 2014-04-16 | 浙江大学 | 一种基于图书目录的知识图谱的构建方法 |
Non-Patent Citations (2)
Title |
---|
XIANCHAO ZHANG等: ""Flow equivalent trees in undirected node-edge-capacitated planar graphs"", 《INFORMATION PROCESSING LETTERS》 * |
时磊等: ""基于变换的大图点边可视化综述"", 《计算机辅助设计与图形学学报》 * |
Also Published As
Publication number | Publication date |
---|---|
WO2016105644A1 (en) | 2016-06-30 |
US10417280B2 (en) | 2019-09-17 |
US20160179980A1 (en) | 2016-06-23 |
CN107004011B (zh) | 2021-08-03 |
EP3238092A1 (en) | 2017-11-01 |
EP3238092A4 (en) | 2018-05-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10430464B1 (en) | Scalable graph propagation for knowledge expansion | |
US8990209B2 (en) | Distributed scalable clustering and community detection | |
US8903824B2 (en) | Vertex-proximity query processing | |
CN106651016B (zh) | 一种热点话题下动态预测用户行为的系统及方法 | |
US20070078699A1 (en) | Systems and methods for reputation management | |
Borgs et al. | Multiscale matrix sampling and sublinear-time PageRank computation | |
Kant | Finding linear dependencies in integration-by-parts equations: a Monte Carlo approach | |
Kim et al. | Influence maximization based on reachability sketches in dynamic graphs | |
Wan et al. | New BFGS method for unconstrained optimization problem based on modified Armijo line search | |
Mitzenmacher | Some open questions related to cuckoo hashing | |
Zhang et al. | Fast inbound top-k query for random walk with restart | |
US9785678B1 (en) | Determining taxonomy nodes for browsing | |
US20180308057A1 (en) | Joint optimization and assignment of member profiles | |
US11979309B2 (en) | System and method for discovering ad-hoc communities over large-scale implicit networks by wave relaxation | |
Jänes et al. | A connected component-based method for efficiently integrating multi-scale N-body systems | |
Liao et al. | Monte Carlo based incremental PageRank on evolving graphs | |
Jiang et al. | Defining least community as a homogeneous group in complex networks | |
US20200151615A1 (en) | Machine learning based process flow engine | |
Marsic et al. | Efficient finite element assembly of high order Whitney forms | |
CN107004011A (zh) | 针对演进图形分配全局边缘id | |
Bernhardt | A Sharkovsky theorem for vertex maps on trees | |
US20160019284A1 (en) | Search engine using name clustering | |
Tembhurne et al. | New Modified Euclidean and Binary Greatest Common Divisor Algorithm | |
Morita et al. | Integral Euler Characteristic of Out F 11 | |
Bastrakov et al. | Accelerating fourier–motzkin elimination using bit pattern trees |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |