增强的图遍历的制作方法

文档序号:8436166阅读:428来源:国知局
增强的图遍历的制作方法
【专利说明】
【背景技术】
[0001]图通常用来表示各种实体之间的关系。例如,图的节点可以表示诸如无线通信设备之类的通信实体,而图的边可以描述无线通信设备(或者节点)之间的连接。作为具体示例,图可以在计算系统的存储器内构造,以描述在网状(mesh)网络内的无线通信设备之间的连接。作为另一个示例,图可以表示社交网络,以使得图的节点表示社交网络内的用户的简档(profile),而图的边表示社交网络的用户之间的连接或者关系。作为又一个示例,图可以表示诸如在染色体上的基因之间的空间或者布局(placement)关系之类的关系。
[0002]图被遍历以标识(identify)由图中的节点所表示的实体的属性和/或其之间的关系。对图进行遍历典型地包括标识将图的一个节点连接到其它节点的边,并且跟随(follow)那些边来访问图中的节点。图遍历迭代地或者递归地继续,直到标识具有一个或多个特定属性的节点或者已经跟随图的所有边为止。其它的图遍历包括用于将节点分类的操作,并且继续直到图的所有节点都已经被分类为止。
【附图说明】
[0003]图1是根据实现方式的增强的图遍历的流程图。
[0004]图2是根据实现方式的图的图示。
[0005]图3是根据实现方式由图2中图示的图所表示的环境的图示。
[0006]图4A-4H图示出根据实现方式的图的增强的图遍历。
[0007]图5是根据实现方式的主控(host)图和图遍历模块的计算系统的示意性框图。
[0008]图6是根据另一个实现方式的增强的图遍历的流程图。
【具体实施方式】
[0009]因为图遍历通常继续进行直到图的所有边都已经被考虑(S卩,从一个节点到另一个节点地跟随)为止,所以图遍历通常不必要地考虑边。也就是说,典型地在图的边被穷尽地考虑之后而不是响应于标识具有一个或多个特定属性的节点终止的一些图遍历可以在不更改这样的图遍历的结果的情况下在图的所有边都被考虑之前中止(abort) (S卩,终止或者停止)。在图遍历期间不必要地考虑边不会改变图遍历的结果或输出,但是取决于被遍历的图的细节(例如,连接节点的边处于何种布置或拓扑),这可能会导致较差的性能。
[0010]本文讨论的增强的图遍历的实现方式跟踪在图遍历期间所访问的图中的节点(也被称为顶点)的数目。附加地,这样的实现方式确定在图遍历期间所访问的节点的数目是否满足相对于图内的节点数量的条件。作为示例,所述条件可以是相等条件(即,该条件确定在图遍历期间所访问的节点的数目是否等于图中的节点数量)或者百分比条件(即,该条件确定在图遍历期间所访问的节点的数目是否等于在该图中的节点数量的预定百分比)。
[0011 ] 在这样的实现方式中,当在遍历期间所访问的节点的数目满足相对于图内的节点数量的条件时,图遍历被中止。响应于确定在图遍历期间所访问的节点的数目满足相对于图内的节点数量的条件而中止图遍历可以改进图遍历的性能,因为图的边不一定被考虑。换言之,本文讨论的实现方式可以通过在已经访问了足够数目的节点以使附加考虑边或者对节点的访问成为不必要(例如,不更改或者改进图遍历的结果或输出)之后中止这样的图遍历来改进图遍历的性能。
[0012]图1是根据实现方式的增强的图遍历的流程图。在图1图示的增强的图遍历100可以例如在计算系统处托管的图分析模块中实现。在块110,标识图内的节点的数量。图是一个与另一个相关的节点的集合。在一些实现方式中,图内的每个节点包括图内与该节点有关的或者连接到该节点的引用(reference),诸如其存储器地址、指向其的指针、或者其唯一标识符。在其它实现方式中,图的节点之间的关系以其它方式来定义。例如,图的节点之间的关系可以是在节点存储于其中的存储位置(例如,存储器位置)中隐含的,或者可以在图的元数据(例如,映射或者描述)中定义。
[0013]图的边定义了图的节点之间的关系,并且可以使用各种方法来表示。在一些实现方式中,边可以被称为弧或者链接。作为示例,在无向图内的节点可以被称为边或者无向边,而有向图内的节点可以被称为弧或者有向弧。如本文使用的,术语边指代边、弧、链接、或者描述定义图的节点之间的关系的机制的其它术语。
[0014]作为边的示例,存储在第二节点的对第一节点的引用是在第一节点和第二节点之间的边。作为另一个示例,图内第一节点和第二节点之间关系的元数据描述可以被称为图的边。当使用图的边来访问某个节点时,考虑(或者跟随)该边。作为具体示例,可以通过对用于访问节点的存储器地址或者指针进行解引用(dereference)、或者通过使用节点的唯一标识符来从一组节点中选择该节点而考虑(或者跟随)边。
[0015]由边定义的关系基于图的各种特性而变化,所述特性诸如对图的使用和由图的节点所表示的实体。例如,边可以指示由被边连接的节点表示的实体:是一个到另一个可访问的(例如,在物理上可由路、网络电缆、或者无线技术来访问或者在逻辑上可经由包括中间计算系统的通信网络来访问);是一个与另一个相关联的(例如,节点表示社交网络环境(或者社交网络)内的用户,并且边连接已经一个与另一个建立关系或者可以表示组织图中的个体的用户);具有由边描述的分层结构;和/或是以其它方式有关的。作为具体示例,图中的边(例如,有向无环图(DAG)中的弧)可以对任务或者活动之间的时间优先(precedence)约束进行编码。例如,从表示第一任务的节点到表示第二任务的节点的边可以指示或者表达,根据计算系统或者计算设施内的调度策略,第一任务必须在第二任务可能发生之前完成。
[0016]图的节点是表示某个实体的存储器的一个或多个部分(例如,随机存取存储器(RAM)内的存储器位置、数据库内的条目或者文件系统内的文件或者一个或多个文件的部分)。例如,节点可以是存储器内在其处存储诸如该实体和其它实体之间的关系之类的实体的属性或特性的表示(例如,表示那些属性或者特性的值)的一组存储器位置。在一些实现方式中,节点包括对图内与该节点有关的其它节点的引用。这些引用可以被称为图的边。
[0017]作为具体示例,节点可以是在其处存储该节点的边(或者邻近该节点的边或者入射到(incident)该节点上的边)的列表的存储器的一部分。而且,边可以以各种格式中的任何格式来表示。例如,边可以以压缩格式表示。作为具体示例,图可以被表示为二进制值的矩阵。在矩阵中的每一列表示节点。换言之,每一列是节点。每一列的行值指示该节点(由该列所表示的节点)和另一个节点之间是否存在边。
[0018]更具体地,矩阵可以是NXN矩阵,其中N是图中的节点的数目。每一列表示(或者可被称为)图中的节点,并且每一行与图中由具有与该行的索引相同索引的列所表示的节点相关联。换言之,第一行与由第一列所表示的节点相关联,第二行与由第二列所表示的节点相关联等等。在矩阵的某列内的某行处的O值指示由该列表示的节点不具有将其连接到与该行相关联的节点的边。在矩阵的某列内的某行处的I值指示由该列表示的节点具有将其连接到与该行相关联的节点的边。在一些实现方式中,矩阵的列(或者列向量)可以被压缩。在一些实现方式中,图可以被表示为该矩阵的转置,以使得行是节点而列与节点相关联。
[0019]当由节点表示的实体的属性或者特性的表示所处于的一个或者多个存储器位置被从中读取或者向其写入时,该节点被称为已访问。例如,参考上文的示例,当表示图的矩阵中的表示该节点的列被读取时,该节点被访问。作为另一个示例,当诸如该节点距源节点的距离、关于包括该节点的集合的信息、该节点的标识符或者针对该节点的其它输出信息之类的输出信息在包括该节点的图的遍历期间被写入、确定、最终化(finalize)或者输出时,该节点被访问。
[0020]图2是根据实现方式的图的图示。图200在图2中图形地图示出,并且包括节点N231、N232、N233、N234、N235、N236 和 N237 和边 211-215 和 221-225。如上文讨论的,节点是表示实体的存储器的一部分,而边定义节点之间的关系。因此,图200的表示在图2中图示,并且此处包括的图的其它图形表示应被理解为图的可视化(visualizat1n),而不是这样的图。
[0021]参考图200:节点N232和N233分别通过边211和221来
当前第1页1 2 3 4 5 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1