增强的图遍历的制作方法_4

文档序号:8436166阅读:来源:国知局
地,处理器还执行指令以确定所访问的节点是否先前已经被访问。因此,通过避免对甚至是单个边的不必要考虑,许多指令不需要被执行。
[0050]在该示例中,节点和边的数目已经被限制为较小数目以促进对本文描述的系统和方法的理解,然而在实际实现方式中,图包括数千、数百万、或者甚至数十亿的节点和边。例如,表示诸如企业网或者大型网状网络部署之类的网络环境的图可以具有表示那些网络环境内的通信实体的数千个节点;表示社交网络的图可以包括表示那些社交网络的用户的数亿万个节点;而表示用于计算系统中的调度的任务分层的图可以包括表示将在那些计算系统中执行的任务(或者过程)的数千个节点。对于这样的系统而言,甚至对图遍历的平均情况运行时间的适度减小可以提供显著的性能增强,诸如增强的处理吞吐量、减小的等待时间和增强的响应性。也就是说,对于这样的实际系统而言,性能增强被放大了,因为通过避免对单个边的不必要的考虑而不需要执行的指令的数目与当图遍历响应于节点访问计数器满足相对于图中的节点数量的条件的确定而中止时不被考虑的边的数目相乘。
[0051]图5是根据实现方式的主控图和图遍历模块的计算系统的示意性框图。在一些实现方式中,主控图分析模块的计算系统其自身被称为图分析模块或者系统。在图5中图示的示例中,计算系统500包括处理器510和存储器530。计算系统500可以是例如个人计算机,诸如台式计算机或者笔记本计算机、平板设备、智能电话、分布式计算系统(例如,单独的计算系统的群组、网格、或者集群)、或者某个其它计算系统。
[0052]处理器510是执行或者解译指令、代码、或者信号的硬件和软件的任何组合。例如,处理器510可以是微处理器、专用集成电路(ASIC)、图形处理单元(GPU)(诸如通用GPU(GPGPU))、分布式处理器(诸如处理器或计算机系统的集群或者网络)、多核或者多处理器处理器、或者虚拟机的虚拟或逻辑处理器。
[0053]存储器530是存储指令、代码、数据或者其它信息的处理器可读介质。如本文中使用的,处理器可读介质是非临时地存储指令、代码、数据或者其它信息的任何介质,并且对处理器直接或者间接地可访问。换言之,处理器可读介质是处理器可以在其处访问指令、代码、数据或者其它信息的非临时介质。例如,存储器530可以是易失性随机存取存储器(RAM)、诸如硬盘驱动器或者固态驱动器之类的持久数据存储装置、压缩盘(CD)、数字多功能盘(DVD)、Secure Digital? (SD)卡、多媒体卡(MMC)卡、CompactFlash? (CF)卡或者其组合或者是其它存储器。换言之,存储器530可以表示多个处理器可读介质。在一些实现方式中,存储器530可以与处理器510集成、与处理器510分离或者在计算系统500外部。
[0054]存储器530包括当在处理器510处执行时实现操作系统531和图分析模块535的指令或者代码。图分析模块是通过使用本文描述的方法中的一个或者多个方法来分析图的硬件和软件的组合。
[0055]如在图5中图示的,存储器530可操作来存储图描述537和图539。例如,在操作系统531的运行时间期间,图描述537可以被访问以构造图539并且标识图539内的节点数量。作为另一个示例,计算系统500可以包括(未在图5中图示)处理器可读介质访问设备(例如,⑶、DVD、SD、MMC或者CF驱动器或者读取器),并且可以经由该处理器可读介质访问设备来访问另一个处理器可读介质处的图描述537。作为又一个示例,计算系统500可以包括(未在图5中图示)通信接口,诸如在其处数据库可被访问的网络接口,并且可以访问数据库处的图描述537。
[0056]在一些实现方式中,计算系统500可以是虚拟化计算系统。例如,计算系统500可以在计算服务器处托管为虚拟机。而且,在一些实现方式中,计算系统500可以是计算装置或者虚拟化计算装置,并且操作系统531是用于支持(例如,提供诸如通信协议堆栈之类的服务和对计算系统500的组件(诸如通信接口)的访问)图分析模块535的最小或者恰量(just-enough)的操作系统。
[0057]图分析模块535和/或图描述537可以从各种存储器或者处理器可读介质来访问或者安装在计算系统500处。例如,计算系统500可以经由通信接口(未示出)访问远程处理器可读介质处的图分析模块535和/或图描述537。作为具体示例,计算系统510可以是网络引导(network-boot)设备,该网络引导设备在引导过程(或者序列)期间访问操作系统531、图分析模块535和图描述537。
[0058]作为另一个示例,计算系统500可以包括(未在图5中图示)处理器可读介质访问设备(例如,⑶、DVD、SD、MMC或者CF驱动器或者读取器),并且可以经由该处理器可读介质访问设备来访问处理器可读介质处的图分析模块535和/或图描述537。作为更具体的示例,处理器可读介质访问设备可以是DVD驱动器,在其处包括用于图分析模块535和图描述537中的一个或者多个的安装包的DVD是可访问的。安装包可以在处理器510处被执行或者访问以在计算系统500处(例如,在存储器530处和/或在诸如硬盘驱动器之类的另一个处理器可读介质处)安装图分析模块535和图描述537中的一个或多个。计算系统500随后可以主控或者执行图分析模块535和图描述537中的一个或者多个。
[0059]在一些实现方式中,图分析模块535和图描述537可以在多个源、位置或者资源处被访问或者从多个源、位置或者资源处安装。例如,图分析模块535和图描述537的一些组件可以经由通信链路(例如,从经由通信链路和计算系统500的通信接口可访问的文件服务器)来安装,并且图分析模块535和图描述537的其它组件可以从DVD安装。
[0060]在其它实现方式中,图分析模块535和图描述537可以跨多个计算系统来分布。也就是说,图分析模块535和图描述537的一些组件可以托管在一个计算系统处,并且图分析模块535和图描述537的其它组件可以托管在另一个计算系统处。作为具体示例,图分析模块535和图描述537可以托管在计算系统的集群内,其中图分析模块535和图描述537中的每一个的组件被托管在多个计算系统处,并且没有单个的计算系统主控图分析模块535和图描述537中的每一个的所有组件。
[0061]虽然关于图5图示和讨论了一个或者多个特定模块(即,硬件和软件的组合)和其它示例实现方式,但是在其它实现方式内可以包括其他示例实现方式、模块的其它组合或者子组合。换言之,虽然在图5中图示的和在其它示例实现方式中讨论的模块执行本文讨论的示例中的具体功能,但是这些和其它功能可以在不同模块处或者在模块的组合处完成、实施或者实现。例如,图示和/或讨论为分离的两个或者更多个模块可以被组合成执行关于这两个模块而讨论的功能的模块。作为另一个示例,在如关于这些示例而讨论的一个模块处执行的功能可以在一个或多个不同的模块处执行。作为具体示例,图分析模块可以通过使用一组电子和/或光学电路(或者电路系统)来实现,而不是作为存储在存储器处并且在处理器处执行的指令。
[0062]图6是根据另一个实现方式的增强的图遍历流程图。在图6中图示的增强的图遍历600是增强的图遍历的特定示例。与在图6的示例中所图示的那些相比,其它增强的图遍历可以具有附加的、更少的和/或重排的块或者步骤。
[0063]在块610,标识图内的节点的数量。图分析模块可以通过使用各种方法中的任何方法来标识图内的节点的数量。例如,上文中关于图1的块110讨论的方法中的一个或者多个可以被用来在块610标识图内的节点的数量。随后在块620,选择当前节点。在首次为增强的图遍历600执行块620时,当前节点可以被称为图遍历的源节点。在一些实现方式中,图具有源节点,并且在首次为增强的图遍历600执行块620时,该源节点被选择。
[0064]随后,在块630,访问当前节点,并且在块640,增强的图遍历600确定当前节点的访问标记是否具有未访问(unaccessed)值。当前节点例如可以通过访问该当前节点被存储的存储器内的一组存储器位置来进行访问。访问标记是描述当前节点是否已经被访问的值被存储的存储器位置(或者存储器位置组)。在访问标记处的已访问值指示当前节点先前已经被访问,而在访问标记处的未访问值指示当前节点在增强的图遍历600期间先前尚未被
当前第4页1 2 3 4 5 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1