System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind() 一种复杂有向图的目标点环路检测方法及相应的装置制造方法及图纸_技高网

一种复杂有向图的目标点环路检测方法及相应的装置制造方法及图纸

技术编号:40272710 阅读:12 留言:0更新日期:2024-02-02 22:58
本发明专利技术涉及图计算技术领域,提供了一种复杂有向图的目标点环路检测方法及相应的装置。其中,根据所述目标点遍历复杂有向图,遍历以层优先进行逐层遍历,每一轮遍历作为BSP并行计算模型中的一个超步,每一轮遍历时记录对应的前驱点,得到相应的前驱记录;根据所述目标点遍历所述前驱记录,每一轮遍历作为一个超步,生成所述目标点在所述复杂有向图中的所有环路。本发明专利技术利用广度优先算法支持并行计算的优点,生成前驱记录,解决了计算耗时过长、效率低的问题,且在生成环路时,结合深度优先算法,解决了内存占用不可控的问题。

【技术实现步骤摘要】

本专利技术涉及图计算,特别是涉及一种复杂有向图的目标点环路检测方法及相应的装置


技术介绍

1、在图计算领域中,环路检测算法主要有4种,一种是单点出发的环路存在检测:检测一个点u是否在某个环路内,计算过程是从点u出发,沿着出边走,如果能再走到u,则点u存在于一个环中;第二种是检查经过某点u的所有环路:经过某个顶点的所有环路,要求环路都是简单环,即路径中除了起点,其他点只能出现一轮;第三种是判断整个图是否有环:从所有点出发,找到任何一个环退出;第四种是找出图中所有环:从所有点出发,找到图中所有环后退出。

2、目前主流的环路检测算法分为直接bfs(breath first search,广度优先遍历)和直接dfs(depth first search,深度优先遍历)两种方法,其一是直接使用dfs遍历,但是由于图的复杂性,传入点可能在图中关系较多、连通性较强,且最后只有一条路径能回到起点,甚至没有路径能回到起点,因此这种情况下直接使用dfs会导致递归轮数幂数级增加,而最终没有符合条件的结果,效率十分低下。再则dfs是一种严格的线性方法,不能并行执行,单机计算时只能由一个线程计算,分布式计算时同一时间只有一个计算节点的一个线程计算,其大大的浪费了多核物理机的硬件资源。计算简单图时,浪费的时间可忽略,但计算复杂有向图时,耗时过长,效率太低。直接bfs生成路径时,所有路径将同时生成,所以在完成整个环路的生成时,内存中都必须一直维护所有生成中的路径,计算复杂有向图时将占用极大内存空间,导致内存不可控。

3、鉴于此,克服该现有技术所存在的缺陷是本
亟待解决的问题。


技术实现思路

1、本专利技术要解决的技术问题是提供特别是涉及一种复杂有向图的目标点环路检测方法及相应的装置,基于bsp(bulk synchronous parallel computing model,整体同步并行)模型,对现有技术的复杂有向图计算方法进行了优化,解决了对数据量较大的复杂有向图进行计算时,占用的内存空间过多,易导致内存溢出、计算效率低下和浪费计算资源的问题,同时提高了算法计算大图的能力。

2、本专利技术采用如下技术方案:

3、第一方面,本专利技术提供了一种复杂有向图的目标点环路检测方法,包括:

4、根据目标点遍历复杂有向图,遍历以层优先进行逐层遍历,每一轮遍历时记录对应的前驱点,得到相应的前驱记录;

5、根据所述目标点遍历所述前驱记录,生成所述目标点在所述复杂有向图中的所有环路。

6、进一步地,在根据所述目标点遍历复杂有向图时,每一轮遍历作为并行计算模型中的一个超步;在根据所述目标点遍历所述前驱记录时,每一轮遍历作为并行计算模型中的一个超步;

7、当一个超步内的所有计算节点完成计算时,下一个超步的相应计算节点开始计算;

8、当所有所述超步执行完成时,所述并行计算模型的主节点开始计算;

9、当所述主节点计算完成时,所述目标点环路检测方法执行完成。

10、进一步地,所述根据所述目标点遍历复杂有向图,遍历以层优先进行逐层遍历,每一轮遍历时记录对应的前驱点,得到相应的前驱记录包括:

11、每一轮遍历时,记录超步的步数值,用于根据步数值找到在所述步数值生成的前驱点,根据所述前驱点得到前驱记录。

12、进一步地,所述根据所述目标点遍历所述前驱记录,生成所述目标点在所述复杂有向图中的所有环路包括:

13、根据所述目标点和所述步数值,遍历所述前驱记录,依次生成所有所述步数值相应的树状结构;

14、将所述树状结构发送至主节点,所述主节点根据所述树状结构,生成所述目标点相应的所有环路。

15、进一步地,所述根据所述目标点和所述步数值,遍历所述前驱记录,依次生成所有所述步数值相应的树状结构包括:

16、每一轮遍历时,判断所述目标点是否存在相应步数值生成的前驱点;

17、若已生成前驱点,则将所述目标点作为所述树状结构的父节点,将所述前驱点和所述步数值一起作为所述父节点对应的子节点,新建相应的树状结构;

18、若未生成前驱点,则相应树状结构不新增相应的子节点;

19、每一轮遍历时,以上一轮遍历时的所述子节点为父节点,根据所述父节点在相应步数值生成的前驱点,新建相应的树状结构,将所述前驱点和所述步数值一起作为所述父节点对应的子节点;

20、每一轮遍历时,所述超步的各个计算节点分别进行相应计算,得到计算结果后,暂停计算,当前超步的所有计算节点完成相应计算后,将所述计算结果发送至相应的子节点,用于下一轮遍历时,根据所述计算结果对所述子节点进行计算。

21、进一步地,所述将所述树状结构发送至主节点,所述主节点根据所述树状结构,生成所述目标点相应的所有环路包括:

22、以深度优先,根据所述目标点遍历所述树状结构,根据所述父节点对应的子节点,新建元素数为所述步数值a的相应路径,将所述子节点作为所述路径的第a个元素;

23、遍历时,优先以上一轮的子节点作为父节点,新建相应的路径,直至所述路径形成一条所述环路;遍历所述树状结构,直至生成所述目标点相应的所有环路。

24、进一步地,所述将所述树状结构发送至主节点,所述主节点根据所述树状结构,生成所述目标点相应的所有环路还包括:

25、所述路径形成环路时,将所述环路暂存至内存,开始生成下一条环路;

26、内存空间不够时,将内存中暂存的所有环路写入至本地文件,清空所述所有环路对应的部分内存。

27、进一步地,所述根据所述目标点遍历所述前驱记录,生成所述目标点在所述复杂有向图中的所有环路包括:

28、以所述目标点为后继点,根据所述后继点,遍历所述前驱记录,生成所述目标点的所有环路;

29、遍历时,每一轮根据所述前驱记录,判断所述后继点是否在对应的步数值生成相应的前驱点,直至得到所述目标点的所有环路;

30、若已生成前驱点,则新建元素数为所述步数值a的相应路径,将所述已生成前驱点作为所述路径的第a个元素;根据所述后继点获取相应的前驱点,将所述前驱点作为所述路径的第b个元素;

31、若未生成前驱点,则不新建相应的路径;根据所述后继点获取相应的前驱点,将所述前驱点作为所述路径的第b个元素;

32、将所有所述路径的第1个元素设置为所述目标点。

33、进一步地,所述根据所述目标点遍历所述前驱记录,生成所述目标点在所述复杂有向图中的所有环路包括:

34、遍历时,以所述目标点为后继点,根据所述后继点和对应的前驱点,生成路径;以对应的所有前驱点为所述后继点,继续下一轮遍历;

35、所述路径形成环路时,将所述环路的顺序设置为倒序,得到所述目标点相应的所有环路。

36、第二方面,本专利技术还提供了一种复杂有向图的目标点环路检测装置,用于实现第一本文档来自技高网...

【技术保护点】

1.一种复杂有向图的目标点环路检测方法,其特征在于,包括:

2.根据权利要求1所述的目标点环路检测方法,其特征在于,在根据所述目标点遍历复杂有向图时,每一轮遍历作为并行计算模型中的一个超步;在根据所述目标点遍历所述前驱记录时,每一轮遍历作为并行计算模型中的一个超步;

3.根据权利要求2所述的目标点环路检测方法,其特征在于,所述根据所述目标点遍历复杂有向图,遍历以层优先进行逐层遍历,每一轮遍历时记录对应的前驱点,得到相应的前驱记录包括:

4.根据权利要求3所述的目标点环路检测方法,其特征在于,所述根据所述目标点遍历所述前驱记录,生成所述目标点在所述复杂有向图中的所有环路包括:

5.根据权利要求4所述的目标点环路检测方法,其特征在于,所述根据所述目标点和所述步数值,遍历所述前驱记录,依次生成所有所述步数值相应的树状结构包括:

6.根据权利要求5所述的目标点环路检测方法,其特征在于,所述将所述树状结构发送至主节点,所述主节点根据所述树状结构,生成所述目标点相应的所有环路包括:

7.根据权利要求6所述的目标点环路检测方法,其特征在于,所述将所述树状结构发送至主节点,所述主节点根据所述树状结构,生成所述目标点相应的所有环路还包括:

8.根据权利要求3所述的目标点环路检测方法,其特征在于,所述根据所述目标点遍历所述前驱记录,生成所述目标点在所述复杂有向图中的所有环路包括:

9.根据权利要求2所述的目标点环路检测方法,其特征在于,所述根据所述目标点遍历所述前驱记录,生成所述目标点在所述复杂有向图中的所有环路包括:

10.一种复杂有向图的目标点环路检测装置,其特征在于,包括至少一个处理器和存储器,所述至少一个处理器和存储器之间通过数据总线连接,所述存储器存储有可被所述至少一个处理器执行的指令,所述指令在被所述处理器执行后,用于完成权利要求1-9任一所述的目标点环路检测方法。

...

【技术特征摘要】

1.一种复杂有向图的目标点环路检测方法,其特征在于,包括:

2.根据权利要求1所述的目标点环路检测方法,其特征在于,在根据所述目标点遍历复杂有向图时,每一轮遍历作为并行计算模型中的一个超步;在根据所述目标点遍历所述前驱记录时,每一轮遍历作为并行计算模型中的一个超步;

3.根据权利要求2所述的目标点环路检测方法,其特征在于,所述根据所述目标点遍历复杂有向图,遍历以层优先进行逐层遍历,每一轮遍历时记录对应的前驱点,得到相应的前驱记录包括:

4.根据权利要求3所述的目标点环路检测方法,其特征在于,所述根据所述目标点遍历所述前驱记录,生成所述目标点在所述复杂有向图中的所有环路包括:

5.根据权利要求4所述的目标点环路检测方法,其特征在于,所述根据所述目标点和所述步数值,遍历所述前驱记录,依次生成所有所述步数值相应的树状结构包括:

6.根据权利要求5所述的目标点环路检测方法,其特征在于...

【专利技术属性】
技术研发人员:谭江周帆李冬方杰张睿王振宇丁先胜
申请(专利权)人:四川蜀天梦图数据科技有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1