会员体验
专利管家(专利管理)
工作空间(专利管理)
风险监控(情报监控)
数据分析(专利分析)
侵权分析(诉讼无效)
联系我们
交流群
官方交流:
QQ群: 891211   
微信请扫码    >>>
现在联系顾问~
首页 / 专利库 / 纳米技术 / 纳米技术 / 自下而上 / 使用自下而上方法的并行处理

使用自下而上方法的并行处理

阅读:325发布:2020-05-11

IPRDB可以提供使用自下而上方法的并行处理专利检索,专利查询,专利分析的服务。并且方法、装置、系统、计算机程序产品以及计算机可读存储介质提供并行处理分层数据的能力。获得分层数据。该分层数据被组织在具有两个或更多个节点(由依赖于子节点的母节点组成)的关系图中。关系图需要自下而上的处理。在关系图中识别循环。通过遍历图并将所有图节点分配到级别中来级别化关系图。在并行处理后续级别中的节点之前,通过并行处理一个或更多个级别中的第一级别中的节点来处理分层数据。,下面是使用自下而上方法的并行处理专利的具体信息内容。

1.一种用于并行处理分层数据的计算机实现方法,包括:(a)获得所述分层数据,其中:

(1)所述分层数据被组织在具有两个或更多个节点的关系图中,其中所述两个或更多个节点包括一个或更多个母节点和一个或更多个子节点,其中所述一个或更多个母节点依赖于所述一个或更多个子节点;以及(2)所述关系图需要自下而上的处理,其中在处理所述一个或更多个母节点中的第一母节点之前,处理所述第一母节点的所有从属子节点;

(b)识别所述关系图中的一个或更多个循环;

(c)通过以下方式级别化所述关系图:

(1)遍历所述关系图;以及

(2)将所述两个或更多个节点中的所有节点分配到一个或更多个级别;以及(d)通过在并行处理所述一个或更多个级别中的第二级别中的所述节点之前,并行处理所述一个或更多个级别中的第一级别中的所述节点,来处理所述分层数据。

2.根据权利要求1所述的计算机实现方法,其中所述分层数据包括产品设计数据集。

3.根据权利要求1所述的计算机实现方法,其中所述分层数据包括实体建模组件。

4.根据权利要求1所述的计算机实现方法,其中所述识别包括:(a)选择所述两个或更多个节点中的一个节点;

(b)确定所选节点还未被处理;

(c)将所述所选节点添加到从当前根节点到所述所选节点的路径;

(d)对于所述所选节点的每个子节点:

(1)如果所述子节点在所述路径中,则标注从所述所选节点到所述子节点的边引起循环,并且在所述关系图的所述级别化期间跳过所述子节点;以及(e)将所述所选节点添加到完全处理的节点的列表中,从所述路径中移除所述所选节点,并且对于不在完全处理的节点的列表中的剩余节点重复步骤(a)-步骤(e)。

5.根据权利要求4所述的计算机实现方法,其进一步包括:确定所述所选节点不具有子节点;以及

将所述所选节点添加到所述一个或更多个级别中的第一级别。

6.根据权利要求4所述的计算机实现方法,其进一步包括:从所述两个或更多个节点识别当前根节点;以及将所述当前根节点用作所述所选节点。

7.根据权利要求1所述的计算机实现方法,其中所述级别化所述关系图包括:(a)将不具有任何附加子节点的子节点分配到所述一个或更多个级别中的所述第一级别,并且从未分类节点的集合中移除经过分配的子节点;

(b)将当前级别定义为所述第一级别;以及(c)分析所述当前级别中的每个子节点的每个母节点,其包括:(1)将被分析的母节点从所述当前级别分配到所述一个或更多个级别中的下一级别,并且从所述未分类节点的集合中移除所述被分析的母节点,如果:(i)所述被分析的母节点还未分配到所述一个或更多个级别中的一个或更多个;

(ii)所述被分析的母节点没有子节点在所述未分类节点的集合中;以及(iii)所述被分析的母节点没有子节点在所述下一级别中。

8.根据权利要求7所述的计算机实现方法,其进一步包括:(d)递增所述当前级别并重复步骤(c)。

9.一种用于并行处理计算机系统中的分层数据的装置,其包括:(a)计算机,其具有存储器;

(b)应用程序,其在所述计算机上执行,其中所述应用程序经配置:(1)获得所述分层数据,其中:

(i)所述分层数据被组织在具有两个或更多个节点的关系图中,其中所述两个或更多个节点包括一个或更多个母节点和一个或更多个子节点,其中所述一个或更多个母节点依赖于所述一个或更多个子节点;以及(ii)所述关系图需要自下而上处理,其中在处理所述一个或更多个母节点中的第一母节点之前,处理所述第一母节点的所有从属子节点;

(2)在所述关系图中识别一个或更多个循环;

(3)通过以下方式级别化所述关系图:

(i)遍历所述关系图;以及

(ii)将所有所述两个或更多个节点分配到一个或更多个级别;以及(4)通过在并行处理所述一个或更多个级别中的第二级别中的所述节点之前,并行处理所述一个或更多个级别中的第一级别中的所述节点,来处理所述分层数据。

10.根据权利要求9所述的装置,其中所述分层数据包括产品设计数据集。

11.根据权利要求9所述的装置,其中所述分层数据包括实体建模组件。

12.根据权利要求9所述装置,其中所述应用程序经配置通过以下方式识别:(a)选择所述两个或更多个节点中的一个节点;

(b)确定所选节点还未被处理;

(c)将所述所选节点添加到从当前根节点到所述所选节点的路径;

(d)对于所述所选节点的每个子节点:

(1)如果所述子节点在所述路径中,则标注从所述所选节点到所述子节点的边引起循环,并且在所述关系图的所述级别化期间跳过所述子节点;以及(e)将所述所选节点添加到完全处理的节点的列表中,从所述路径中移除所述所选节点,并且对于不在完全处理的节点的列表中的剩余节点重复步骤(a)-步骤(e)。

13.根据权利要求12所述的装置,其中所述装置进一步经配置:确定所述所选节点不具有子节点;以及

将所述所选节点添加到所述一个或更多个级别中的第一级别。

14.根据权利要求12所述的装置,所述应用程序进一步经配置:从所述两个或多个节点中识别所述当前根节点;以及将所述当前根节点用作所述所选节点。

15.根据权利要求9所述的装置,其中所述应用程序经配置通过以下方式级别化所述关系图;

(a)将不具有任何附加子节点的子节点分配到所述一个或更多个级别中的所述第一级别,并且从未分类节点的集合中移除经过分配的子节点;

(b)将当前级别定义为所述第一级别;以及(c)分析所述当前级别中的每个子节点的每个母节点,其包括:(1)将被分析的母节点从所述当前级别分配到所述一个或更多个级别中的下一级别,并且从所述未分类节点的集合中移除所述被分析的母节点,如果:(i)所述被分析的母节点还未分配到所述一个或更多个级别中的一个或更多个;

(ii)所述被分析的母节点没有子节点在所述未分类节点的集合中;以及(iii)所述被分析的母节点没有子节点在所述下一级别中。

16.根据权利要求15所述的装置,所述应用程序进一步经配置:(d)递增所述当前级别并且重复步骤(c)。

17.一种编码有计算机程序指令的计算机可读存储介质,当由计算机访问时,所述计算机程序指令使得所述计算机将所述程序指令加载到其中的存储器,从而创建专用数据结构,使得所述计算机作为执行并行处理分层数据的方法的专门编程的计算机进行操作,所述方法包括:(a)在所述专门编程的计算机中,获得所述分层数据,其中:(1)所述分层数据被组织在具有两个或更多个节点的关系图中,其中所述两个或更多个节点包括一个或更多个母节点和一个或更多个子节点,其中所述一个或更多个母节点依赖于所述一个或更多个子节点;以及(2)所述关系图需要自下而上的处理,其中在处理所述一个或更多个母节点中的第一母节点之前,处理所述第一母节点的所有从属子节点;

(b)在所述专门编程的计算机中,识别所述关系图中的一个或更多个循环;

(c)在所述专门编程的计算机中,通过以下方式级别化所述关系图:(1)遍历所述关系图;以及

(2)将所有所述两个或更多个节点分配到一个或更多个级别;以及(d)在所述专门编程的计算机中,通过在并行处理所述一个或更多个级别中的第二级别中的所述节点之前,并行处理所述一个或更多个级别中的第一级别中的所述节点,来处理所述分层数据。

18.根据权利要求17所述的计算机可读存储介质,其中所述分层数据包括产品设计数据集。

19.根据权利要求17所述的计算机可读存储介质,其中所述分层数据包括实体建模组件。

20.根据权利要求17所述的计算机可读存储介质,其中所述识别包括:(a)选择所述两个或更多个节点中的一个节点;

(b)确定所选节点还未被处理;

(c)将所述所选节点添加到从当前根节点到所述所选节点的路径;

(d)对于所述所选节点的每个子节点:

(1)如果所述子节点在所述路径中,则标注从所述所选节点到所述子节点的边引起循环,并且在所述关系图的所述级别化期间跳过所述子节点;以及(e)将所述所选节点添加到完全处理的节点的列表中,从所述路径中移除所述所选节点,并且对于不在完全处理的节点的列表中的剩余节点重复步骤(a)-步骤(e)。

21.根据权利要求20所述的计算机可读存储介质,其中所述方法进一步包括:确定所述所选节点不具有子节点;以及

将所述所选节点添加到所述一个或更多个级别中的第一级别。

22.根据权利要求20所述的计算机可读存储介质,其中所述方法进一步包括:从所述两个或更多个节点中识别所述当前根节点;以及将所述当前根节点用作所述所选节点。

23.根据权利要求17所述的计算机可读存储介质,其中所述关系图的所述级别化包括:(a)将不具有任何附加子节点的子节点分配到所述一个或更多个级别中的所述第一级别,并且从未分类节点的集合中移除经过分配的子节点;

(b)将当前级别定义为所述第一级别;以及(c)分析所述当前级别中的每个子节点的每个母节点,其包括:(1)将被分析的母节点从所述当前级别分配到所述一个或更多个级别中的下一级别,并且从所述未分类节点的集合中移除所述被分析的母节点,如果:(i)所述被分析的母节点还未分配到所述一个或更多个级别中的一个或更多个;

(ii)所述被分析的母节点没有子节点在所述未分类节点的集合中;以及(iii)所述被分析的母节点没有子节点在所述下一级别中。

24.根据权利要求23所述的计算机可读存储介质,其中所述方法进一步包括:(d)递增所述当前级别并且重复步骤(c)。

说明书全文

使用自下而上方法的并行处理

技术领域

[0001] 本发明通常涉及数据处理,并且具体地,涉及用于处理需要自下而上处理的设计集合中的大量分层数据的方法、装置以及制品。

背景技术

[0002] 当使用大量的分层数据时,在多个节点上并行执行操作(主要是为了提高性能)可能很有用。具体地,当在数据管理中工作时,通常设计集合/组件具有彼此依赖的大量数据(例如,彼此相关的多个文件)。期望快速并有效地处理此类设计集合,同时保持数据的完整性。为了保持数据集的完整性,在某些情况下,重要的是使用“自下而上”的方法处理数据,使得节点不能被处理,直到所有节点的依赖(即,子节点)被处理。例如,对于组件数据集,需要确保在组件检入之前将所有组件的子项检入。同样地,在检入子项之前,也必须首先检入子项的子项。如果不符合此自下而上的方法,则所得到的数据集可能是不完整的和/或损坏的。进一步地,首先处理依赖的需要使得除了最简单的结构之外,以并行方式处理节点极其困难。
[0003] 为了更好地理解现有技术的问题,各种图/分层结构的描述可能是有用的。
[0004] 图1示出本文所使用的图术语。第一顶点或节点102(例如,文件)与第二顶点或节点104具有有向边(例如,关系)。如图所示,顶点102依赖于顶点104。换言之,顶点104是顶点102的子项。
[0005] 图2A和图2B示出具有循环的简单图。在图2A中,节点A依赖于节点B,反之亦然(创建循环依赖)。类似地,在图2B中,节点A依赖于节点B,节点B依赖于节点C,节点C依赖于节点A。
[0006] 图3示出具有循环的表示数据集的复杂图。作为示例,图3中的每个方框可以表示设计集中的文件。更具体地,如果设计桌子,则方框A1可以表示桌子组件本身,方框B1可以表示桌面,方框C1可以表示托架,并且其他方框可以表示螺钉、桌腿等。每个方框还可以具有子组件(例如,限定桌腿)。
[0007] 当处理组件时(例如,当推到中央储存器或从储存器拉下时),必须以自下而上的方式执行处理。在自下而上的现有技术系统中,首先分析图表,然后确定处理顺序。因此,可以首先添加/处理/上传D1、D2以及E1。此后,现有技术系统可以连续地处理每个母节点。在需要自下而上方法的系统中,现有技术系统经常多次“行走”或遍历图表/结构。期望确定如何一次处理/上传一个以上文件(例如,为了提高性能)。现有技术系统不能提供用于分析且并行处理这种复杂图的可靠且有效的系统。

发明内容

[0008] 本发明的实施例将数据分类到以并行方式处理的组中。该分类保证了节点的所有依赖将在节点本身之前被处理,只要这些组被完整地且以正确的顺序处理。更具体地,能够并行处理组中的所有节点,因为包含在单个组中的节点不依赖于该组内的任何事物。因此,组内的顺序是不相干的。

附图说明

[0009] 现在参考附图,其中相同的参考标号始终表示相应的部分:
[0010] 图1示出图术语;
[0011] 图2A和图2B示出具有循环的简单图;
[0012] 图3示出具有循环的表示数据集的复杂图;
[0013] 图4是用于实施本发明的一个或更多个实施例的示例性硬件和软件环境;
[0014] 图5是示意性示出根据本发明的一个或更多个实施例的使用网络将客户端计算机连接到服务器计算机的典型分布式计算机系统;
[0015] 图6示出根据本发明的一个或更多个实施例的用于级别化(level)具有循环的图的高级流程;
[0016] 图7示出根据本发明的一个或更多个实施例的用于识别每个给定根顶点“V”的循环的过程;
[0017] 图8示出根据本发明的一个或更多个实施例的一旦识别出循环则级别化图(即,图6的阶段604的细节)的逻辑流程;以及
[0018] 图9A-图9G以及图10A-图10F示出根据本发明的一个或更多个实施例的在图3的图上执行的示例性级别化处理。

具体实施方式

[0019] 在下面的描述中,参考形成本发明的一部分的附图,并且通过图示的方式示出本发明的几个实施例。应当理解,在不脱离本发明的范围的情况下,可以利用其他实施例并且可以进行结构改变。
[0020] 概述
[0021] 本发明的实施例提供并行处理包含循环引用的大的分层设计数据集的能力。以允许并行处理整个组的方式执行后处理分类。进一步地,分类方法以仍允许并行处理所有部件的方式管理循环依赖(包括循环引用中所涉及的)。此外,该方法在分类过程期间以有效的方式寻找/识别循环引用。
[0022] 硬件环境
[0023] 图4是用于实施本发明的一个或更多个实施例的示例性硬件和软件环境400。硬件和软件环境包括计算机402,并且可以包括外围设备。计算机402可以是用户/客户端计算机、服务器计算机,或者可以是数据库计算机。计算机402包括通用硬件处理器404A和/或专用硬件处理器404B(在下文中替代性地统称为处理器404)和存储器406,诸如随机存取存储器(RAM)。计算机402可以耦合到其他设备和/或与其集成,其他设备包括输入/输出(I/O)设备,诸如键盘414、光标控制设备416(例如,鼠标、指示设备、笔和写字板、触摸屏、多点触摸设备等)以及打印机428。在一个或更多个实施例中,计算机402可以耦合到或者可以包括便TM TM携式或媒体观看/收听设备432(例如,MP3播放器、iPod 、Nook 、便携式数字视频播放器、蜂窝设备、个人数字助理等)。在又一个实施例中,计算机402可以包括在各种平台和操作系统上执行的多点触摸设备、移动电话、游戏系统、可支持互联网型电视、电视机顶盒或其他可支持互联网的设备。
[0024] 在一个实施例中,计算机402通过通用处理器404A在操作系统408的控制下执行由计算机程序410定义的指令来进行操作。计算机程序410和/或操作系统408可以存储在存储器406中,并且可以与用户和/或其他设备接合以接受输入和命令,并且基于这样的输入和命令以及由计算机程序410和操作系统408定义的指令来提供输出和结果。
[0025] 输出/结果可以呈现在显示器422上或提供给另一个设备用于呈现或进一步处理或动作。在一个实施例中,显示器422包括具有多个可单独寻址的液晶的液晶显示器(LCD)。替代性地,显示器422可包括发光二极管(LED)显示器,发光二极管(LED)显示器具有一起驱动以形成全色像素的红色、绿色和蓝色二极管簇。响应于处理器404从计算机程序410和/或操作系统408的指令的应用到输入和命令,所产生的数据或信息,显示器422的每个液晶或像素变为不透明或半透明状态,以在显示器上形成图像的一部分。可以通过图形用户界面(GUI)模块418提供图像。尽管GUI模块418被描绘为单独的模块,但是执行GUI功能的指令能够停留或分布在操作系统408、计算机程序410中,或者使用专用存储器和处理器来实现。
[0026] 在一个或更多个实施例中,显示器422与计算机402集成/集成在其中,并且包括具有触摸感测表面(例如,追踪数据中心产品(track pod)或触摸屏)的多点触摸设备,其具有利用表面识别两个或更多个接触点的存在的能力。多点触摸设备的示例包括移动设备(例如,iPhoneTM、Nexus STM、DroidTM设备等)、平板计算机(例如iPadTM、HP TouchpadTM)、便携式/手持式游戏/音乐/视频播放器/控制台设备(例如,iPod TouchTM、MP3播放器、Nintendo 3DSTM、PlayStation PortableTM等)、触摸桌和壁(例如,其中通过丙烯酸和/或玻璃投影图像,然后用LED对图像进行背光)。
[0027] 由计算机402根据计算机程序410指令执行的操作中的一些或全部可以在专用处理器404B中实施。在该实施例中,计算机程序410指令中的一些或全部可以经由固件指令来实施,固件指令存储在专用处理器404B内或存储器406中的只读存储器(ROM)、可编程只读存储器(PROM)或闪存中。专用处理器404B也可以通过电路设计硬连线,来执行操作中的一些或全部以实施本发明。进一步地,专用处理器404B可以是混合处理器,其包括用于执行功能的子集的专用电路以及用于执行诸如响应计算机程序410指令的更通用功能的其他电路。在一个实施例中,专用处理器404B是专用集成电路(ASIC)。
[0028] 计算机402还可以实施编译器412,编译器412允许以诸如COBOL、Pascal、C++、FORTRAN或其他语言的编程语言编写的应用程序或计算机程序410被译成处理器404可读代码。替代性地,编译器412可以是解释器,该解释器直接执行指令/源代码,将源代码译成被执行或执行所存储的预编译代码的中间表示。这种源代码可以以诸如JavaTM、PerlTM、BasicTM等各种编程语言编写。在完成之后,应用程序或计算机程序410使用由编译器412生成的关系和逻辑,访问并操纵从I/O设备接受并存储在计算机402的存储器406中的数据。
[0029] 计算机402还可选地包括外部通信设备,诸如调制解调器、卫星链路、以太网卡或用于从其他计算机402接受输入并向其提供输出的其他设备。
[0030] 在一个实施例中,实施操作系统408、计算机程序410和编译器412的指令有形地体现在非暂时性计算机可读介质中,例如数据存储设备420,其可以包括一个或更多个固定或可移动的数据存储设备,诸如zip驱动器、软盘驱动器424、硬盘驱动器、CD-ROM驱动器、磁带驱动器等。进一步地,操作系统408和计算机程序410包括计算机程序410指令,当由计算机402访问、读取并执行时,计算机程序410指令使计算机402执行实施和/或使用本发明或将指令的程序加载到存储器406中所必需的步骤,从而创建专用数据结构,使得计算机402作为执行本文所述的方法步骤的专门编程的计算机进行操作。计算机程序410和/或操作指令还可以有形地体现在存储器406和/或数据通信设备430中,从而制造根据本发明的计算机程序产品或制品。因此,本文所使用的术语“制品”、“程序存储设备”和“计算机程序产品”旨在包括可从任何计算机可读设备或介质访问的计算机程序。
[0031] 当然,本领域的技术人员将认识到上述组件或任何数量的不同组件、外围设备以及其他设备的任何组合可以与计算机402一起使用。
[0032] 图5示意性地示出使用网络504将客户端计算机502连接到服务器计算机506的典型分布式计算机系统500。资源的典型组合可以包括网络504、客户端502以及服务器506,其中网络504包括因特网、LAN(局域网)、WAN(广域网)、SNA(系统网络架构)网络等,客户端502是个人计算机或工作站(如图4所述),服务器506是个人计算机、工作站、小型计算机或大型机(如图4所述)。然而,可以注意到,不同的网络诸如蜂窝网络(例如,GSM[全球移动通信系统]或其他)、基于卫星的网络或任何其他类型的网络,可以根据本发明的实施例用于连接客户端502和服务器506。
[0033] 诸如因特网的网络504将客户端502连接到服务器计算机506。网络504可以利用以太网、同轴电缆、无线通信、射频(RF)等来连接并提供客户端502和服务器506之间的通信。客户端502可以执行客户端应用或web浏览器并与执行web服务器510的服务器计算机506通信。这种web浏览器通常是诸如MICROSOFT INTERNET EXPLORERTM、MOZILLA FIREFOXTM、OPERATM、APPLE SAFARITM、GOOGLE CHROMETM等的程序。进一步地,在客户端502上执行的软件可以从服务器计算机506下载到客户端计算机502,并作为web浏览器的插件或ACTIVEXTM控制来安装。因此,客户端502可以利用ACTIVEXTM组件/组件对象模型(COM)或分布式COM(DCOM)组件来在客户端502的显示器上提供用户界面。web服务器510通常是诸如(微软公司的因特网信息服务器)MICROSOFT’S INTERNET INFORMATION SERVERTM的程序。
[0034] web服务器510可以托管可以执行脚本的活动服务器页面(ASP)或因特网服务器应用编程接口(ISAPI)应用512。脚本调用执行业务逻辑的对象(称为业务对象)。然后,业务对象通过数据库管理系统(DBMS)514操纵数据库516中的数据。替代性地,数据库516可以是客户端502的一部分或直接连接到客户端502,而不是通过网络504从数据库516交流/获得信息。当开发者将业务功能封装到对象中时,该系统可以被称为部件对象模型(COM)系统。因此,在web服务器510(和/或应用512)上执行的脚本调用实施业务逻辑的COM对象。进一步地,服务器506可以利用MICROSOFT'STM事务服务器(MTS)来经由诸如ADO(活动数据对象)、OLE DB(对象链接和嵌入数据库)或ODBC(开放数据库连接)的接口访问存储在数据库516中的所需数据。
[0035] 通常,这些部件500-516全部包括从设备、介质、信号或载体(例如数据存储设备、数据通信设备、远程计算机或经由网络或经由另一数据通信设备等耦合到计算机的设备)中实现/可检索的逻辑和/或数据。此外,当读取、执行和/或解释时,该逻辑和/或数据导致实施和/或使用正在执行的本发明所需的步骤。
[0036] 虽然本文引用了术语“用户计算机”、“客户端计算机”和/或“服务器计算机”,但是应当理解,此类计算机502和506可以是可互换的,并且可以进一步包括具有有限或全部处理能力的瘦客户端设备、便携式设备(诸如蜂窝电话、笔记本计算机、袖珍计算机、多点触摸设备和/或具有合适的处理、通信以及输入/输出能力的任何其它设备)。
[0037] 当然,本领域的技术人员将认识到上述部件或任何数量的不同部件、外围设备和其他设备的任何组合可以与计算机502和506一起使用。
[0038] 软件实施例概述
[0039] 本发明的实施例被实施为客户端502或服务器计算机506上的软件应用。进一步地,如上所述,客户端502或服务器计算机506可以包括瘦客户端设备或具有基于多点触摸的显示器的便携式设备。
[0040] 为了克服现有技术的不足并有效地并行处理分层数据,而获得分层数据。这种分层数据被组织在具有两个或更多个节点(包括依赖于一个或更多个子节点的一个或更多个母节点)的关系图中,其中需要图的自下而上处理(例如,在处理第一母节点之前,处理/必须处理第一母节点的所有从属子节点)。如本文所述,分层数据能够是包括诸如实体建模组件的产品设计数据集的任何分层数据(具有依赖关系)。
[0041] 图6示出根据本发明的一个或更多个实施例的用于级别化具有循环的图的高级流程。存在识别循环阶段602和级别化图阶段604这两个阶段。在识别循环阶段602中,方法遍历图以注释/识别任何循环。执行每个顶点一个操作。一旦在阶段602中已经识别所有循环(即,循环依赖),则在级别化图阶段604中将结果图的顶点置于有序的“叶级”级别。因此,在阶段604中,图的顶点/节点被放入不同的级别/组。阶段604在可执行的操作的数量方面更加可变。可以并行处理级别/组中的节点中的每个。
[0042] 关于在识别循环阶段602中执行的过程的细节在图7中阐述。在这点上,图7示出用于识别每个给定根顶点/节点“V”的循环的过程。换言之,根顶点(在本文中也称为节点)被识别,并且图7示出用于识别每个根顶点的循环的过程。可以注意到,根顶点不是仅限于图的逻辑根节点。
[0043] 当已经分析顶点及其所有子项并且已经标注到任何循环时,如本文所使用的节点/顶点被“完全处理”。“路径”是指从当前根顶点到当前顶点的路径。如果顶点在路径中,则它无法被完全处理。
[0044] 该过程开始于702,在702处做出关于顶点V是否已被处理的确定。如果根顶点是先前管理的根顶点的子节点,则顶点可能已经在根顶点的情况下被处理(例如,参考图3,如果按照给定根A1、A2和B2的顺序,则B2在被管理时已经被处理)。如果顶点V已经被完全处理,则当没有更多的递归级别要检查时(在步骤718),每个给定根顶点的循环的识别完成。如果V还未被处理,则将V添加到路径(即,从当前根顶点到当前顶点),并且在704确定V是否具有任何子项。如果V具有子项,则对每个子项执行步骤706-步骤712(即,对于每个子顶点迭代步骤706-步骤712)。
[0045] 在步骤706处,做出关于子项是否已被处理的确定。如果不是,则在步骤708处确定子项是否在V的路径中。如果子项不在V的路径中,则过程在步骤702处递归,其中子项成为顶点V。如果子项在V的路径中,则存在循环并且在步骤710处从V到子项的边被标记为引起循环,并且在级别化过程(即,图6的步骤604)的持续时间中被跳过。一旦子项已经被处理,则在步骤712处做出关于是否存在V的更多子项的确定,并且如果存在,则过程返回到步骤706。因此,步骤712使得能够对V的子顶点中的每个进行迭代。如果没有更多的子项存在,则将V添加到“完全处理”列表并从路径(从当前根顶点到当前顶点)中移除。
[0046] 在步骤716处执行优化。在这点上,如果V没有子项(跳过循环边)(即V是叶节点),则将V添加到第一级别/组。因此,步骤716创建由所有叶节点组成的第一级别/组。在步骤718处,V已被完全处理,并且当没有更多递归级别时该过程完成。如果存在更多递归级别,则该过程向上移动递归堆栈并且返回到步骤712。
[0047] 鉴于上述,图7的步骤提供:选择节点;确定所选节点还未被处理;将所选节点添加到路径(从当前根节点到所选节点);对于所选节点的每个子节点,如果子节点在路径中,则标注从所选节点到子节点的边产生循环,并且在图的级别化期间跳过子节点;以及将所选节点添加到完全处理的节点的列表,从路径中移除所选节点,并且对于不在完全处理的节点的列表中的剩余节点重复上述步骤。此外,如果所选节点不具有任何子节点,则将所选节点添加到第一级别。
[0048] 图8示出根据本发明的一个或更多个实施例的用于一旦识别出循环则级别化图(即,图6的阶段604的细节)的逻辑流程。如本文所使用的“未分类的顶点”是还不处于级别中的顶点(所有顶点开始于未分类)。“当前级别”是最新完成的级别。“下一级别”是当处理当前级别时将顶点添加到的级别(即,“当前级别+1”)。作为概述,通过遍历图并将所有节点分配为级别(用于并行处理)来对图进行级别化。
[0049] 该过程开始于步骤802。当识别循环时创建第一级别(即,级别1)(即,在图7的步骤716处)。在步骤802处,从未分类的顶点集合中移除第一级别中的顶点。一旦步骤802完成,则“当前级别”为1(即,级别1)。在步骤804处做出关于在当前级别中是否存在任何顶点的确定。如果不是,则在步骤806处完成该过程。如果在当前级别存在还未处理/迭代的顶点,则对于当前级别中的每个顶点的母项迭代步骤808-步骤816。
[0050] 在步骤808处,做出关于是否存在顶点的另一个母项的确定。如果不存在更多的母项,则递增“当前级别”,并且过程返回到步骤804。如果在当前级别处存在顶点的另一个母项,则在步骤810处确定母项是否已经处于级别中(即,其是否已经被分配/分组到级别中)。如果母项已经置于级别/组中,则在步骤808处继续处理下一母项。如果母项还未被分配为级别,则在步骤812处检索母项的子项。
[0051] 在步骤814处,确定检索的子项中的任何一个是否未分类(即,还未被分配到级别)。如果存在一些未分类的子项,则不能处理该顶点(即,还未处理顶点的所有子项),并且在步骤808处该过程继续该级别中的下一母项。如果没有未分类的子项(即,母项的所有子项已被分配到级别),则在步骤816处,进行关于子项中的至少一个是否处于下一级别的确定。如果在下一级别中存在至少一个子项,则过程在步骤808处继续下一母项。因此,步骤816规定,如果子项已经存在于该级别中,则母项不能置于下一级别中。在这方面,如果允许母项和子项共存于同一级别,则可以同时并行处理母项和子项,这与自下而上的处理要求不一致。
[0052] 如果在下一级别没有子项,则在步骤818处将母项添加到“下一级别”,并且从未分类的顶点列表中移除。此后,在步骤808处,该过程继续执行列表中的下一母项。
[0053] 鉴于上述,为了级别化图:将没有任何附加子节点的子节点分配到第一级别,并且从未分类节点的列表中移除;将当前级别定义为第一级别;通过将所述分析的母节点分配到下一级别(从当前级别)并从未分类的节点集合中移除所述分析的母节点,来分析当前级别中的每个子节点的每个母节点,如果(i)所述分析的母节点还未分配到级别,(ii)所述分析的母节点的子项不在未分类的节点集合中,以及(iii)所述分析的母节点的子节点不在下一级别中。然后,在递增当前级别之后重复此步骤。
[0054] 因此,图7和图8打破循环图情况,接着将图中的每个顶点/节点分类为适当的级别,使得级别中的每个顶点/节点可以与相同级别的其他顶点/节点并行执行/处理。因此,符合自下而上的方法,同时允许多个节点的并行处理。
[0055] 示例性工作流程处理
[0056] 图9A-图9G和10A-图10F示出根据本发明的一个或更多个实施例的在图3的图上执行的示例性级别化处理。
[0057] 图9A示出将在级别化示例中使用的初始图。在级别化处理的执行中,将A1和A2指定为根顶点(由星号表示)。
[0058] 参考图9B,一旦图被构建,则下一步骤是识别引起循环的边(即,图7中所述的每个逻辑流程)。鉴于根顶点,确定引起循环的从B2到C2的边(由图9B中的虚线表示)(即,图7的步骤710)。随着这被标注,过程能够将图级别化,就好像它没有循环。作为优化(即,图7的步骤716),在识别循环的同时,分配到第一级别的叶顶点的集合被标注/识别/分配。因此,在该阶段,可以将D1、D2、C3以及E1都分配到第一级别。
[0059] 参考图9C,一旦第一级别已被分配,则能够级别化剩余的顶点(同时保持关于循环边和已经在一级别中的顶点的知识库)。下一级别的候选是前一级别中顶点的母项。因此,现在能够确定C1和B2是有效的叶顶点(没有未被级别化的子项),并且因此可以置于第二级别中。
[0060] 继续到图9D,根据上述相同的准则,能够确定D3和A2是接下来的叶顶点。可以注意到,A2被添加到该级别(即,级别3),即使它是根顶点。任何顶点都适用于一个级别,一旦它的所有子项都被处理为更早的级别。
[0061] 然后,参考图9E,C2可以置于级别(即,级别4)。
[0062] 参考图9F,将B1分配给级别(即,级别5)。
[0063] 参考图9G,将A1分配给级别(即,级别6)。在这一点上,包含循环的图已经被有效地级别化,其中已经标注循环边。
[0064] 图10A-图10F示出当不同的顶点被识别为根顶点的集合时用于级别化图的替代方式。如图10A所示,B2、A1以及A2已经被识别为根顶点(由星号表示)。
[0065] 参考图10B,第一步骤是识别引起循环的边(即,按照图7的步骤710)。在这种情况下,从D3到B2的边将被认为是循环的边,并且将被标注(例如,在图10B中被描绘为虚线)。相同的优化(即,图7的步骤716)在边去除期间将再次确定D1、D2、C3以及E1是叶顶点并且将被分配给第一级别。
[0066] 参考图10C,基于图7的逻辑流程,CI和D3将被添加/分配给第二级别。
[0067] 如图10D所示,C2是分配给第三级别的唯一顶点。
[0068] 图10E示出第四级别将包含B1和B2。
[0069] 图10F示出最终级别将包含A1和A2。注意,在图10A-图10F的示例中,该方法确定仅需要五个级别而不是六个级别。这表明不同的根顶点集合能够在同一图上产生不同的级别集合,其中方法的两种执行同样有效。
[0070] 结论
[0071] 这完成了对本发明的优选实施例的描述。以下描述用于实现本发明的一些替代实施例。例如,本发明可以使用任何类型的计算机(诸如大型机、小型计算机或个人计算机)或计算机配置(诸如分时大型机、局域网或独立的个人计算机)。
[0072] 为了说明和描述的目的,已经呈现本发明的优选实施例的以上描述。其并不旨在详尽本发明或将本发明限于所公开的精确形式。鉴于上述教导,许多修改和变化是可能的。本发明的范围不旨在由该详细描述限制,而是由所附权利要求限制。
高效检索全球专利

IPRDB是专利检索,专利查询,专利分析-国家发明专利查询检索分析平台,是提供专利分析,专利查询专利检索等数据服务功能的知识产权数据服务商。

我们的产品包含105个国家的1.26亿组数据,专利查询、专利分析

电话:13651749426

侵权分析

IPRDB的侵权分析产品是IPRDB结合多位一线专利维权律师和专利侵权分析师的智慧,开发出来的一款特色产品,也是市面上唯一一款帮助企业研发人员、科研工作者、专利律师、专利分析师快速定位侵权分析的产品,极大的减少了用户重复工作量,提升工作效率,降低无效或侵权分析的准入门槛。

立即试用