CN104239126A - 一种有向图的最小割获取方法及设备 - Google Patents
一种有向图的最小割获取方法及设备 Download PDFInfo
- Publication number
- CN104239126A CN104239126A CN201310244090.4A CN201310244090A CN104239126A CN 104239126 A CN104239126 A CN 104239126A CN 201310244090 A CN201310244090 A CN 201310244090A CN 104239126 A CN104239126 A CN 104239126A
- Authority
- CN
- China
- Prior art keywords
- meeting point
- digraph
- subgraph
- node
- converse
- 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
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Traffic Control Systems (AREA)
- Navigation (AREA)
Abstract
本发明实施例提供了一种有向图的最小割获取方法和设备,通过具有依次包含关系的子图的形式对结点集合进行有向图最小割获取的方法和设备,减少了并行计算时的活跃结点间的通信次数和同步次数,提高了性能,其中该方法包括:按照预设策略,分别将有向图划分成至少两个汇点子图和至少两个源点子图;并行计算全部汇点子图的最小割集并通过汇点子图之间的通信获得有向图的等效汇点,以及并行计算全部源点子图的最小割集并通过源点子图之间的通信获得有向图的等效源点;根据有向图的等效汇点和有向图的等效源点连接的所有边获取有向图的最小割。
Description
技术领域
本发明涉及网络优化领域,尤其涉及一种有向图的最小割获取方法及设备。
背景技术
最大流最小割问题是网络优化领域中的经典问题,可以广泛的应用在以网络作为表现形式的应用背景中,目前针对该问题所提出的方法都是基于网络中的结点进行并行计算的,通过整体同步并行计算模型(Bulk Synchronous Parallel Computing Model,BSP模型)并行处理活跃结点,每个活跃结点均通过超步进行计算,直至整个网络中没有活跃结点时,计算结束。
发明人发现以上的方法有如下的问题:在每个超步进行计算的过程中,需要在活跃结点间进行大量的通信与同步,从而导致网络的拥堵,性能极低。
发明内容
本发明的实施例提供一种有向图的最小割获取方法及设备,减少了并行计算时的活跃结点间的通信次数和同步次数,提高了性能。
为达到上述目的,本发明的实施例采用如下技术方案:
第一方面,本发明实施例提供了一种有向图的最小割获取方法,包括:
按照预设策略,分别将所述有向图划分成至少两个汇点子图和至少两个源点子图,其中,全部所述汇点子图均包含所述有向图的汇点,且全部所述汇点子图之间为依次包含关系;全部所述源点子图均包含所述有向图的源点,且全部所述源点子图之间为依次包含关系;
并行计算全部所述汇点子图的最小割集并通过所述汇点子图之间的通信获得所述有向图的等效汇点,以及并行计算全部所述源点子图的最小割集并通过所述源点子图之间的通信获得所述有向图的等效源点,其中,所述等效汇点为最大的所述汇点子图的最小割集,所述等效源点为最大的所述源点子图的最小割集;
根据所述有向图的等效汇点和所述有向图的等效源点连接的所有边获取所述有向图的最小割。
在第一种可能的实现方式中,结合第一方面,所述按照预设策略,分别将所述有向图划分成至少两个汇点子图和至少两个源点子图,包括:
将所述有向图进行反向变化得到反向图,其中,所述反向变化包括,将所述有向图中的所有边进行反向,所述有向图的所述源点变成所述反向图的汇点,所述有向图的所述汇点变成所述反向图的源点;
分别从所述有向图和所述反向图的汇点出发,按照所述预设策略,分别将所述有向图和所述反向图划分成至少两个所述有向图的汇点子图以及至少两个所述反向图的汇点子图,并分别为每个所述有向图的汇点子图和所述反向图的源点子图建立副本,其中,所述至少两个所述反向图的汇点子图为所述至少两个所述有向图的源点子图。
在第二种可能的实现方式中,结合第一方面或者第一种可能的实现方式,在所述并行计算全部所述汇点子图的最小割集并通过所述汇点子图之间的通信获得所述有向图的等效汇点,以及并行计算全部所述源点子图的最小割集并通过所述源点子图之间的通信获得所述有向图的等效源点之前,还包括:
将所有所述有向图的汇点子图根据包含关系建立关系树,其中,被包含的所述有向图的汇点子图称为所述有向图的子汇点子图,包含的所述有向图的汇点子图称为所述有向图的父汇点子图,以及将所有所述反向图的汇点子图根据包含关系建立关系树,其中,被包含的所述反向图的汇点子图称为所述反向图的子汇点子图,包含的所述反向图的汇点子图称为所述反向图的父汇点子图。
在第三种可能的实现方式中,结合第一方面、第一种可能的实现方式或者第二种可能的实现方式中的任一项,所述并行计算全部所述汇点子图的最小割集并通过所述汇点子图之间的通信获得所述有向图的等效汇点,包括:
在全部所述有向图的汇点子图上根据最大流算法并行计算全部所述有向图的汇点子图的最小割;
任一个所述有向图子汇点子图计算完毕时,将其汇点所在的最小割通知其父汇点子图;
所述有向图的父汇点子图合并子汇点子图的汇点所在的最小割,去除所述有向图子汇点子图的汇点所在的最小割中的结点;
计算完成,得到所述等效汇点。
在第四种可能的实现方式中,结合第三种可能的实现方式,所述有向图的父汇点子图合并子汇点子图的汇点所在的最小割,去除所述有向图子汇点子图的汇点所在的最小割中的结点,包括:
所述有向图的父汇点子图在接收到所述有向图子汇点子图发送的所述有向图子汇点子图的汇点所在的最小割后,停止计算,并在所述有向图的父汇点子图上生成两个结点集合,其中,一个结点集合为由所述有向图子汇点子图的汇点所在的最小割组成的待去除结点集合,另一个结点集合为在所述有向图中所述有向图子汇点子图的汇点所在的最小割以外的第一非去除结点组成的非去除结点集合;
遍历所述待去除结点集合,若其中的任一结点仅与所述待去除结点集合中的结点连接,则该所述结点为去除结点,否则为第二非去除结点;
计算所有所述第二非去除结点的溢出值,得到去除之后的所述有向图的父汇点子图,其中,所述溢出值为所述第二非去除结点的流进量减去所述第二非去除结点的流出量;
在去除结点之后的所述有向图的父汇点子图上继续计算其最小割。
在第五种可能的实现方式中,结合第四种可能的实现方式,所述计算完成,包括;
所述最大的所述有向图的汇点子图计算完毕时,计算完成;
或者,
若所述有向图的父汇点子图只能够去除所述有向图子汇点子图的汇点所在的最小割中的一个结点时,检查是否完成等效汇点的计算。
在第六种可能的实现方式中,结合第一种或者第二种可能的实现方式,所述并行计算全部所述源点子图的最小割集并通过所述源点子图之间的通信获得所述有向图的等效源点,包括:
在全部所述反向图的汇点子图上根据最大流算法并行计算全部所述反向图的汇点子图的最小割;
任一个所述反向图的子汇点子图计算完毕时,将其汇点所在的最小割通知其父汇点子图;
所述反向图的父汇点子图合并子汇点子图的汇点所在的最小割,去除所述反向图的子汇点子图的汇点所在的最小割中的结点;
计算完成,得到所述反向图的等效汇点。
在第七种可能的实现方式中,结合第六种可能的实现方式,所述反向图的父汇点子图合并子汇点子图的汇点所在的最小割,去除所述反向图的子汇点子图的汇点所在的最小割中的结点,包括:
所述反向图的父汇点子图在接收到所述反向图的子汇点子图发送的所述反向图的子汇点子图的汇点所在的最小割后,停止计算,并在所述反向图的父汇点子图上生成两个结点集合,其中,一个结点集合为由所述反向图的子汇点子图的汇点所在的最小割组成的待去除结点集合,另一个结点集合为在所述反向图中所述反向图的子汇点子图的汇点所在的最小割以外的第一非去除结点组成的非去除结点集合;
遍历所述待去除结点集合,若其中的任一结点仅与所述待去除结点集合中的结点连接,则该所述结点为去除结点,否则为第二非去除结点;
计算所有所述第二非去除结点的溢出值,得到去除之后的所述反向图的父汇点子图,其中,所述溢出值为所述第二非去除结点的流进量减去所述第二非去除结点的流出量;
在所述去除之后的父汇点子图上继续计算其最小割。
在第八种可能的实现方式中,结合第七种可能的实现方式,所述计算完成,包括;
所述最大的所述反向图的汇点子图计算完毕时,计算完成;
或者,
若所述反向图的父汇点子图只能够去除所述反向图的子汇点子图的汇点所在的最小割中的一个结点时,检查是否完成等效汇点的计算。
第二方面,本发明实施例提供了一种有向图的最小割获取设备,其特征在于,包括:
第一子图划分单元,用于按照预设策略,将所述有向图划分至少两个汇点子图,其中,全部所述汇点子图均包括所诉有向图的汇点,且全部所述汇点子图之间为依次包含关系;
第二子图划分单元,用于按照所述预设策略,将所述有向图划分成至少两个源点子图,其中,全部所述源点子图均包含所述有向图的源点,且全部所述源点子图之间为依次包含关系;
第一计算单元,用于并行计算全部所述汇点子图的最小割集并通过所述汇点子图之间的通信获得所述有向图的等效汇点,其中,所述等效汇点为最大的所述汇点子图的最小割集;第二计算单元,用于并行计算全部所述源点子图的最小割集并通过所述源点子图之间的通信获得所述有向图的等效源点,其中,所述等效源点为最大的所述源点子图的最小割集;
获取单元,用于根据所述有向图的等效汇点和所述有向图的等效源点连接的所有边获取所述有向图的最小割。
在第一种可能的实现方式中,结合第二方面,
所述第一子图划分单元,进一步用于从所述有向图的汇点出发,按照所述预设策略,将所述有向图划分成至少两个所述有向图的汇点子图,并分别为每个所述有向图的汇点子图建立副本;
所述第二子图划分单元,包括:
反向子单元,用于将所述有向图进行反向变化得到反向图,其中,所述反向变化包括,将所述有向图中的所有边进行反向,所述有向图的所述源点变成所述反向图的汇点,所述有向图的所述汇点变成所述反向图的源点;
反向子图划分子单元,用于从所述反向图的汇点出发,按照所述预设策略,将所述反向图划分成至少两个所述反向图的汇点子图,并分别为每个所述反向图的源点子图建立副本,其中,所述至少两个所述反向图的汇点子图为所述至少两个所述有向图的源点子图。
在第二种可能的实现方式中,结合第二方面或者第一种可能的实现方式,还包括,建立关系单元,用于将所有所述有向图的汇点子图根据包含关系建立关系树,其中,被包含的所述有向图的汇点子图称为所述有向图的子汇点子图,包含的所述有向图的汇点子图称为所述有向图的父汇点子图,以及将所有所述反向图的汇点子图根据包含关系建立关系树,其中,被包含的所述反向图的汇点子图称为所述反向图的子汇点子图,包含的所述反向图的汇点子图称为所述反向图的子汇点子图。
在第三种可能的实现方式中,结合第一方面、第一种可能的实现方式或者第二种可能的实现方式中的任一项,所述第一计算单元包括:
第一计算子单元,用于在全部所述有向图的汇点子图上根据最大流算法并行计算全部所述有向图的汇点子图的最小割;
第一通知子单元,用于任一个所述有向图子汇点子图计算完毕时,将其汇点所在的最小割通知其父汇点子图;
第一合并子单元,用于所述有向图的父汇点子图合并子汇点子图的汇点所在的最小割,去除所述有向图子汇点子图的汇点所在的最小割中的结点;
第一计算完成子单元,用于得到所述等效汇点。
在第四种可能的实现方式中,结合第三种可能的实现方式,所述第一合并子单元,包括:
第一计算停止模块,用于所述有向图的父汇点子图在接收到所述有向图子汇点子图发送的所述有向图子汇点子图的汇点所在的最小割后,停止计算;
第一生成模块,用于在所述有向图的父汇点子图上生成两个结点集合,其中,一个结点集合为由所述有向图子汇点子图的汇点所在的最小割组成的待去除结点集合,另一个结点集合为在所述有向图中所述有向图子汇点子图的汇点所在的最小割以外的第一非去除结点组成的非去除结点集合;
第一结点去除模块,用于遍历所述待去除结点集合,若其中的任一结点仅与所述待去除结点集合中的结点连接,则该所述结点为去除结点,否则为第二非去除结点;
第一溢出值计算模块,用于计算所有所述第二非去除结点的溢出值,得到去除之后的所述有向图的父汇点子图,其中,所述溢出值为所述第二非去除结点的流进量减去所述第二非去除结点的流出量;
第一计算恢复模块,用于在去除结点之后的所述有向图的父汇点子图上继续计算其最小割。
在第五种可能的实现方式中,结合第四种可能的实现方式,所述第一计算完成子单元,进一步用于:
所述最大的所述有向图的汇点子图计算完毕时,计算完成;
或者,
若所述有向图的父汇点子图只能够去除所述有向图子汇点子图的汇点所在的最小割中的一个结点时,检查是否完成等效汇点的计算。
在第六种可能的实现方式中,结合第一种或者第二种可能的实现方式,所述第二计算单元包括:
第二计算子单元,用于在全部所述反向图的汇点子图上根据最大流算法并行计算全部所述反向图的汇点子图的最小割;
第二通知子单元,用于任一个所述反向图的子汇点子图计算完毕时,将其汇点所在的最小割通知其父汇点子图;
第二合并子单元,用于所述反向图的父汇点子图合并子汇点子图的汇点所在的最小割,去除所述反向图的子汇点子图的汇点所在的最小割中的结点;
第二计算完成子单元,用于得到所述反向图的等效汇点。
在第七种可能的实现方式中,结合第六种可能的实现方式,所述合并子单元,包括:
第二计算停止模块,用于所述反向图的父汇点子图在接收到所述反向图的子汇点子图发送的所述反向图的子汇点子图的汇点所在的最小割后,停止计算;
第二生成模块,用于在所述反向图的父汇点子图上生成两个结点集合,其中,一个结点集合为由所述反向图的子汇点子图的汇点所在的最小割组成的待去除结点集合,另一个结点集合为在所述反向图中所述反向图的子汇点子图的汇点所在的最小割以外的第一非去除结点组成的非去除结点集合;
第二结点去除模块,用于遍历所述待去除结点集合,若其中的任一结点仅与所述待去除结点集合中的结点连接,则该所述结点为去除结点,否则为第二非去除结点;
第二溢出值计算模块,用于计算所有所述第二非去除结点的溢出值,得到去除之后的所述反向图的父汇点子图,其中,所述溢出值为所述第二非去除结点的流进量减去所述第二非去除结点的流出量;
第二计算恢复模块,用于在去除结点之后的所述反向图的父汇点子图上继续计算其最小割。
在第八种可能的实现方式中,结合第七种可能的实现方式,所述第二计算完成子单元,进一步用于:
所述最大的所述反向图的汇点子图计算完毕时,计算完成;
或者,
若所述反向图的父汇点子图只能够去除所述反向图的子汇点子图的汇点所在的最小割中的一个结点时,检查是否完成等效汇点的计算。
本发明实施例通过具有依次包含关系的子图的形式对结点集合进行有向图最小割获取的方法和设备,减少了并行计算时的活跃结点间的通信次数和同步次数,提高了性能。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的一种有向图的最小割获取方法的流程示意图;
图2为本发明本实施例提供的一种有向图的最小割获取方法的详细流程示意图;
图3为本发明实施例提供的一种有向图;
图4为有向图的反向图;
图5为有向图的汇点子图副本;
图6为等效汇点与等效源点的示意图;
图7为本发明实施例提供的一种有向图的最小割获取设备的装置示意图;
图8为本发明实施例提供的另一种有向图的最小割获取设备的装置示意图;
图9为本发明实施例提供的一种有向图的最小割获取设备的硬件结构图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
参见图1,为本实施例提供的一种有向图的最小割获取方法的流程示意图,包括:
S101:按照预设策略,分别将有向图划分成至少两个汇点子图和至少两个源点子图;
示例性的,全部汇点子图均包含有向图的汇点,且全部汇点子图之间为依次包含关系;全部源点子图均包含有向图的源点,且全部源点子图之间为依次包含关系;
示例性的,按照预设策略,分别将有向图划分成至少两个汇点子图和至少两个源点子图,包括:
将有向图进行反向变化得到反向图,其中,反向变化包括,将有向图中的所有边进行反向,有向图的源点变成反向图的汇点,有向图的汇点变成反向图的源点;
分别从有向图和反向图的汇点出发,按照预设策略,分别将有向图和反向图划分成至少两个有向图的汇点子图以及至少两个反向图的汇点子图,并分别为每个有向图的汇点子图和反向图的源点子图建立副本,其中,至少两个反向图的汇点子图为至少两个有向图的源点子图。
S102:并行计算全部汇点子图的最小割集并通过汇点子图之间的通信获得有向图的等效汇点,以及并行计算全部源点子图的最小割集并通过源点子图之间的通信获得有向图的等效源点;
示例性的,等效汇点为最大的汇点子图的最小割集,等效源点为最大的源点子图的最小割集;
示例性的,在并行计算全部汇点子图的最小割集并通过汇点子图之间的通信获得有向图的等效汇点,以及并行计算全部源点子图的最小割集并通过源点子图之间的通信获得有向图的等效源点之前,还包括:
将所有有向图的汇点子图根据包含关系建立关系树,其中,被包含的有向图的汇点子图称为有向图的子汇点子图,包含的有向图的汇点子图称为有向图的父汇点子图,以及将所有反向图的汇点子图根据包含关系建立关系树,其中,被包含的反向图的汇点子图称为反向图的子汇点子图,包含的反向图的汇点子图称为反向图的父汇点子图。
示例性的,并行计算全部汇点子图的最小割集并通过汇点子图之间的通信获得有向图的等效汇点,包括:
在全部有向图的汇点子图上根据最大流算法并行计算全部有向图的汇点子图的最小割;
任一个有向图子汇点子图计算完毕时,将其汇点所在的最小割通知其父汇点子图;
有向图的父汇点子图合并子汇点子图的汇点所在的最小割,去除有向图子汇点子图的汇点所在的最小割中的结点;
进一步的,有向图的父汇点子图合并子汇点子图的汇点所在的最小割,去除有向图子汇点子图的汇点所在的最小割中的结点,包括:
有向图的父汇点子图在接收到有向图子汇点子图发送的有向图子汇点子图的汇点所在的最小割后,停止计算,并在有向图的父汇点子图上生成两个结点集合,其中,一个结点集合为由有向图子汇点子图的汇点所在的最小割组成的待去除结点集合,另一个结点集合为在有向图中有向图子汇点子图的汇点所在的最小割以外的第一非去除结点组成的非去除结点集合;
遍历待去除结点集合,若其中的任一结点仅与待去除结点集合中的结点连接,则该结点为去除结点,否则为第二非去除结点;
计算所有第二非去除结点的溢出值,得到去除之后的有向图的父汇点子图,其中,溢出值为第二非去除结点的流进量减去第二非去除结点的流出量;
在去除结点之后的有向图的父汇点子图上继续计算其最小割。
计算完成,得到等效汇点;
进一步的,计算完成,包括;
最大的有向图的汇点子图计算完毕时,计算完成;
或者,
若有向图的父汇点子图只能够去除有向图子汇点子图的汇点所在的最小割中的一个结点时,检查是否完成等效汇点的计算。
示例性的,并行计算全部源点子图的最小割集并通过源点子图之间的通信获得有向图的等效源点,包括:
在全部反向图的汇点子图上根据最大流算法并行计算全部反向图的汇点子图的最小割;
任一个反向图子汇点子图计算完毕时,将其汇点所在的最小割通知其父汇点子图;
反向图的父汇点子图合并子汇点子图的汇点所在的最小割,去除反向图子汇点子图的汇点所在的最小割中的结点;
进一步的,反向图的父汇点子图合并反向图子汇点子图的汇点所在的最小割,去除反向图子汇点子图的汇点所在的最小割中的结点,包括:
反向图的父汇点子图在接收到反向图子汇点子图发送的反向图子汇点子图的汇点所在的最小割后,停止计算,并在反向图的父汇点子图上生成两个结点集合,其中,一个结点集合为由反向图子汇点子图的汇点所在的最小割组成的待去除结点集合,另一个结点集合为在反向图中反向图子汇点子图的汇点所在的最小割以外的第一非去除结点组成的非去除结点集合;
遍历待去除结点集合,若其中的任一结点仅与待去除结点集合中的结点连接,则该结点为去除结点,否则为第二非去除结点;
计算所有第二非去除结点的溢出值,得到去除之后的反向图的父汇点子图,其中,溢出值为第二非去除结点的流进量减去第二非去除结点的流出量;
在去除之后的反向图的父汇点子图上继续计算其最小割。
计算完成,得到等效汇点,也就是有向图的等效源点;
进一步的,计算完成,包括;
最大的反向图的汇点子图计算完毕时,计算完成;
或者,
若反向图的父汇点子图只能够去除反向图子汇点子图的汇点所在的最小割中的一个结点时,检查是否完成等效汇点的计算。
S103:根据有向图的等效汇点和有向图的等效源点连接的所有边获取有向图的最小割;
本实施例提供了一种有向图的最小割获取方法,通过具有依次包含关系的子图的形式对结点集合进行有向图最小割获取的方法和设备,减少了并行计算时的活跃结点间的通信次数和同步次数,提高了性能。
参见图2,为本发明本实施例提供的一种有向图的最小割获取方法的详细流程示意图,在本实施例中,仅通过如图3所示的有向图进行示例性说明,其中,圆圈内的数字表示结点序号,有向边上的数字表示该有向边上的流量,从图3中我们容易发现,结点0为源点,结点10为汇点,在此基础上,图3所示的有向图的最小割获取方法包括:
201:按照预设策略,分别将有向图划分成至少两个汇点子图和至少两个源点子图,其中,全部汇点子图均包含有向图的汇点,且全部汇点子图之间为依次包含关系;全部源点子图均包含有向图的源点,且全部源点子图之间为依次包含关系;
示例性的,该步骤可以分为:
首先,将有向图进行反向变化得到反向图,其中,反向变化包括,将有向图中的所有边进行反向,有向图的源点变成反向图的汇点,有向图的汇点变成反向图的源点,在本实施例中,可以将如图3所示的有向图进行反向变化如图4所示的反向图,可以得到,结点10为反向图的源点,结点0为反向图的汇点,本领域技术人员可以理解,反向图与有向图为对偶关系;
然后,分别从有向图和反向图的汇点出发,按照预设策略,分别将有向图和反向图划分成至少两个有向图的汇点子图以及至少两个反向图的汇点子图,并分别为每个有向图的汇点子图和反向图的源点子图建立副本,其中,至少两个反向图的汇点子图为至少两个有向图的源点子图;
在本实施例中,分别从图3和图4的汇点出发,划分有向图和反向图的汇点子图;
对于图3,如图中点虚线表示,从作为汇点的结点10出发,通过反向宽度优先搜索方法选取3个结点组成汇点子图1,并且将图3中除去汇点子图1的部分看成一个整体S#,并建立副本,可以得到如图5(A)所示的汇点子图1的副本;
接着从汇点子图1出发,如图3中点划线表示,继续通过反向宽度优先搜索方法选取4个结点组成汇点子图2,并且将图3中除去汇点子图2的部分看成一个整体S##,并建立副本,可以得到如图5(B)所示的汇点子图2的副本;
然后从汇点子图2出发,继续通过反向宽度优先搜索的方法选取4个结点组成汇点子图3,如图5(C),此时,汇点子图3即为如图3所示的有向图,此时划分结束,建立汇点子图3的副本。
本领域人员可以很容易的了解到,上述三个汇点子图之间的关系为:汇点子图汇点子图汇点子图1,其中,符号表示包含关系,例如,汇点子图汇点子图2,表示汇点子图3包含汇点子图2,即汇点子图2为汇点子图3的一部分;
值得说明的是,本实施例选取结点的数目由预设策略规定,具体数字不作任何限定,仅为了对本实施例的详细说明。
对于图4,通过上述对于图3相同的方法,也可以将如图4所示的反向图建立反向图的汇点子图,相应的,反向图的汇点子图之间也会是依次包含的关系,具体过程不再赘述。
202:将所有有向图的汇点子图根据包含关系建立关系树,其中,被包含的有向图的汇点子图称为有向图的子汇点子图,包含的有向图的汇点子图称为有向图的父汇点子图,以及将所有反向图的汇点子图根据包含关系建立关系树,其中,被包含的反向图的汇点子图称为反向图的子汇点子图,包含的反向图的汇点子图称为反向图的父汇点子图;
示例性的,在本实施例中,根据上述的有向图以及反向图的汇点子图之间的关系,本领域人员可以很容易的得到:
在有向图的汇点子图中,汇点子图3为汇点子图2的有向图的父汇点子图,相应的,汇点子图2为汇点子图3的有向图的子汇点子图;与此对应的,汇点子图2为汇点子图1的有向图的父汇点子图,相应的,汇点子图1为汇点子图1的有向图的子汇点子图;
反向图的汇点子图中,父子汇点子图的关系如上述关系相同,不再赘述。
值得注意的是,在子图划分完毕并且子图之间的关系建立完毕之后,可以通过并行计算全部汇点子图的最小割集并通过汇点子图之间的通信获得有向图的等效汇点,以及并行计算全部源点子图的最小割集并通过源点子图之间的通信获得有向图的等效源点,其中,等效汇点为最大的汇点子图的最小割集,等效源点为最大的源点子图的最小割集;
具体的,如前有向图与反向图之间的对偶关系,本领域人员可以很容易的了解,计算有向图的等效源点的方法也就是计算反向图的等效汇点的方法,因此我们可以分别对有向图和反向图的汇点子图进行并行计算,而且计算方法和计算流程均可以相同,本实施例中,对有向图以及反向图的汇点子图的计算方法和计算流程设定为相同,于是可以只需要对有向图的汇点子图的计算方法和计算流程做出详细的描述,本领域技术人员可以很容易的将该过程应用于对反向图的汇点子图的计算中。
203:在全部有向图的汇点子图上根据最大流算法并行计算全部有向图的汇点子图的最小割;
示例性的,在本实施例中,每个有向图的汇点子图均对应一个计算线程,在其副本上通过最大流算法计算每个汇点子图的最小割,优选的,最大流算法可以是最高标号推进重标记Highest-labelPush-relabel算法。
204:任一个有向图子汇点子图计算完毕时,将其汇点所在的最小割通知其父汇点子图;
205:有向图的父汇点子图合并子汇点子图的汇点所在的最小割,去除有向图子汇点子图的汇点所在的最小割中的结点;
示例性的,有向图的父汇点子图在接收到有向图子汇点子图发送的有向图子汇点子图的汇点所在的最小割后,停止计算,并在有向图的父汇点子图上生成两个结点集合,其中,一个结点集合为由有向图子汇点子图的汇点所在的最小割组成的待去除结点集合,另一个结点集合为在有向图中有向图子汇点子图的汇点所在的最小割以外的第一非去除结点组成的非去除结点集合;
遍历待去除结点集合,若其中的任一结点仅与待去除结点集合中的结点连接,则该结点为去除结点,否则为第二非去除结点;
计算所有第二非去除结点的溢出值,得到去除之后的有向图的父汇点子图,其中,溢出值为第二非去除结点的流进量减去第二非去除结点的流出量;
在去除结点之后的有向图的父汇点子图上继续计算其最小割。
具体的在本实施例中,以汇点子图1为例,在如图5(A)所示的汇点子图1的副本上通过Highest-label Push-relabel算法,可以得到汇点子图1的最小割为图5(A)的椭圆圈所示,包括结点8和结点10,于是汇点子图1将最小割通知给如图5(B)所示的汇点子图2,由于汇点子图1比汇点子图2要小,此时汇点子图2仍在计算,汇点子图2在接收到汇点子图1通知的最小割之后,停止计算,并在汇点子图2中生成两个结点集合,其中待去除结点集合包括结点8,结点10,其余为非去除结点集合;
遍历汇点子图2的待去除结点集合,可以知道,结点8,结点10均和非去除结点集合中的结点连接,因此,结点8和结点10均为第二非去除结点,随后对汇点子图3的第二非去除结点进行溢出值计算,因此,汇点子图2没有去除结点,优选的,对于第二非去除结点,我们可以将其整体看成一个汇点子图2的等效汇点,以使得减少后续汇点子图2的最小割计算的计算量;
继续计算汇点子图2的最小割。
进一步的,汇点子图2计算完毕时,可以得到汇点子图2的最小割为图5(B)的点虚线圆圈所示,包括结点7,结点8和结点10,并且汇点子图2的最小割通知汇点子图3,由于汇点子图2比汇点子图3要小,此时汇点子图3仍在计算,汇点子图3在接收到汇点子图2通知的最小割之后,停止计算,并在汇点子图3中生成两个结点集合,其中待去除结点集合包括结点7,结点8,结点10,其余为非去除结点集合;
遍历汇点子图3的待去除结点集合,可以知道,结点7,结点8,结点10均和非去除结点集合中的结点连接,因此汇点子图3的第二非去除结点为结点7,结点8和结点10,随后对汇点子图3的第二非去除结点进行溢出值计算,优选的,将汇点子图3的第二非去除结点整体看成一个汇点子图3的等效汇点,以使得减少后续汇点子图3的最小割计算的计算量;
继续计算汇点子图3的最小割。
206:计算完成,得到有向图的等效汇点T*;
示例性的,计算完成,可以包括以下任意一种方式:
最大的有向图的汇点子图计算完毕时,计算完成,在本实施例中,当汇点子图3的最小割计算完毕时,等效汇点计算完成,可以得到等效汇点T*;
或者,
若有向图的父汇点子图只能够去除有向图子汇点子图的汇点所在的最小割中的一个结点时,检查是否完成等效汇点的计算;
本实施例中,当汇点子图3只能够去除汇点子图2的最小割中的结点7时,可以将当前进行等效源点计算的结果进行合并,如果此时仅由汇点子图3的最小割计算结果与当前反向图的最大汇点子图的最小割计算结果就能够表示为如图3所示的有向图,则计算完成,得到等效汇点T*,在本实施例中,优选为最大的有向图的汇点子图计算完毕时,计算完成,在本实施例中,当汇点子图3的最小割计算完毕时,等效汇点计算完成,可以得到等效汇点T*。
相应的,对于如图4所示的反向图,本领域技术人员可以很容易的通过步骤203-206的方式得到反向图的等效汇点,也就是有向图的等效源点S*,在此不再赘述。
207:根据有向图的等效汇点和有向图的等效源点连接的所有边获取有向图的最小割;
示例性的,本实施例中,最小割为如图6所示的等效源点与等效汇点的连接的边的集合。
本实施例提供了一种有向图的最小割获取方法,通过具有依次包含关系的子图的形式对结点集合进行有向图最小割获取的方法和设备,减少了并行计算时的活跃结点间的通信次数和同步次数,提高了性能。
参见图7,为本发明实施例提供的一种有向图的最小割获取设备70的装置示意图,在本实施例中,仅通过如图3所示的有向图进行示例性说明,其中,圆圈内的数字表示结点序号,有向边上的数字表示该有向边上的流量,从图3中我们容易发现,结点0为源点,结点10为汇点,设备70可以包括:
第一子图划分单元701,用于按照预设策略,将有向图划分至少两个汇点子图,其中,全部汇点子图均包括所诉有向图的汇点,且全部汇点子图之间为依次包含关系;
第二子图划分单元702,用于按照预设策略,将有向图划分成至少两个源点子图,其中,全部源点子图均包含有向图的源点,且全部源点子图之间为依次包含关系;
第一计算单元703,用于并行计算全部汇点子图的最小割集并通过汇点子图之间的通信获得有向图的等效汇点,其中,等效汇点为最大的汇点子图的最小割集;
第二计算单元704,用于并行计算全部源点子图的最小割集并通过源点子图之间的通信获得有向图的等效源点,其中,等效源点为最大的源点子图的最小割集;
获取单元705,用于根据有向图的等效汇点和有向图的等效源点连接的所有边获取有向图的最小割。
示例性的,如图8所示,第一子图划分单元701,进一步可以用于从有向图的汇点出发,按照预设策略,将有向图划分成至少两个有向图的汇点子图,并分别为每个有向图的汇点子图建立副本;
示例性的,如图8所示,第二子图划分单元702,包括:
反向子单元7021,用于将有向图进行反向变化得到反向图,其中,反向变化包括,将有向图中的所有边进行反向,有向图的源点变成反向图的汇点,有向图的汇点变成反向图的源点;
示例性的,在本实施例中,反向子单元7021可以将如图3所示的有向图进行反向变化如图4所示的反向图,可以得到,结点10为反向图的源点,结点0为反向图的汇点,本领域技术人员可以理解,反向图与有向图为对偶关系;
反向子图划分子单元7022,用于从反向图的汇点出发,按照预设策略,将反向图划分成至少两个反向图的汇点子图,并分别为每个反向图的源点子图建立副本,其中,至少两个反向图的汇点子图为至少两个有向图的源点子图。
示例性的,在本实施例中,第一子图划分单元701和反向子图划分子单元7022可以分别从图3和图4的汇点出发,划分有向图和反向图的汇点子图;
具体的,对于图3,如图中点虚线表示,第一子图划分单元701首先从作为汇点的结点10出发,通过反向宽度优先搜索方法选取3个结点组成汇点子图1,并且将图3中除去汇点子图1的部分看成一个整体S#,并建立副本,可以得到如图5(A)所示的汇点子图1的副本;
接着从汇点子图1出发,如图3中点划线表示,继续通过反向宽度优先搜索方法选取4个结点组成汇点子图2,并且将图3中除去汇点子图2的部分看成一个整体S##,并建立副本,可以得到如图5(B)所示的汇点子图2的副本;
然后从汇点子图2出发,继续通过反向宽度优先搜索的方法选取4个结点组成汇点子图3,如图5(C),此时,汇点子图3即为如图3所示的有向图,此时划分结束,建立汇点子图3的副本。
本领域人员可以很容易的了解到,上述三个汇点子图之间的关系为依次包含关系:汇点子图汇点子图汇点子图1,其中,符号表示包含关系,例如,汇点子图汇点子图2,表示汇点子图3包含汇点子图2,即汇点子图2为汇点子图3的一部分;
值得说明的是,本实施例选取结点的数目由预设策略规定,具体数字不作任何限定,仅为了对本实施例的详细说明。
相应的,对于图4,反向子图划分子单元7022可以通过与第一子图划分单元701相同的方式得到反向图的汇点子图,相应的,反向图的汇点子图之间也是依次包含的关系,具体过程不再赘述。
示例性的,如图8所示,设备70还可以包括:建立关系单元706,
用于将所有有向图的汇点子图根据包含关系建立关系树,其中,被包含的有向图的汇点子图称为有向图的子汇点子图,包含的有向图的汇点子图称为有向图的父汇点子图,以及将所有反向图的汇点子图根据包含关系建立关系树,其中,被包含的反向图的汇点子图称为反向图的子汇点子图,包含的反向图的汇点子图称为反向图的父汇点子图。
示例性的,在本实施例中,建立关系单元706可以根据上述的有向图以及反向图的汇点子图之间的关系,可以很容易的得到:
在有向图的汇点子图中,汇点子图3为汇点子图2的有向图的父汇点子图,相应的,汇点子图2为汇点子图3的有向图的子汇点子图;与此对应的,汇点子图2为汇点子图1的有向图的父汇点子图,相应的,汇点子图1为汇点子图1的有向图的子汇点子图;
反向图的汇点子图中,父子汇点子图的关系如上述关系相同,不再赘述。
值得注意的是,在子图划分完毕并且子图之间的关系建立完毕之后,可以通过并行计算全部汇点子图的最小割集并通过汇点子图之间的通信获得有向图的等效汇点,以及并行计算全部源点子图的最小割集并通过源点子图之间的通信获得有向图的等效源点,其中,等效汇点为最大的汇点子图的最小割集,等效源点为最大的源点子图的最小割集;
具体的,如前有向图与反向图之间的对偶关系,本领域人员可以很容易的了解,计算有向图的等效源点的方法也就是计算反向图的等效汇点的方法,因此我们可以分别对有向图和反向图的汇点子图进行并行计算,而且计算方法和计算流程均可以相同,本实施例中,第一计算单元703对有向图的汇点子图的计算方法和计算流程与第二计算单元704对反向图的汇点子图的计算方法和计算流程相同,本实施例只需要将第一计算单元703对有向图的汇点子图的计算方法和计算流程做出详细的描述,相应的,第二计算单元704对反向图的汇点子图的计算方法和计算流程,本领域技术人员可以无需通过创造性的劳动得到。
示例性的,如图8所示,第一计算单元703包括:
第一计算子单元7031,用于在全部有向图的汇点子图上根据最大流算法并行计算全部有向图的汇点子图的最小割;
示例性的,在本实施例中,第一计算子单元7031可以将每个有向图的汇点子图均对应一个计算线程,在其副本上通过最大流算法计算每个汇点子图的最小割,优选的,最大流算法可以是最高标号推进重标记Highest-label Push-relabel算法。
第一通知子单元7032,用于任一个有向图子汇点子图计算完毕时,将其汇点所在的最小割通知其父汇点子图;
第一合并子单元7033,用于有向图的父汇点子图合并子汇点子图的汇点所在的最小割,去除有向图子汇点子图的汇点所在的最小割中的结点;
进一步的,如图8所示,第一合并子单元7033包括,
第一计算停止模块70331,用于有向图的父汇点子图在接收到有向图子汇点子图发送的有向图子汇点子图的汇点所在的最小割后,停止计算;
第一生成模块70332,用于在有向图的父汇点子图上生成两个结点集合,其中,一个结点集合为由有向图子汇点子图的汇点所在的最小割组成的待去除结点集合,另一个结点集合为在有向图中有向图子汇点子图的汇点所在的最小割以外的第一非去除结点组成的非去除结点集合;
第一结点去除模块70333,用于遍历待去除结点集合,若其中的任一结点仅与待去除结点集合中的结点连接,则该结点为去除结点,否则为第二非去除结点;
第一溢出值计算模块70334,用于计算所有第二非去除结点的溢出值,得到去除之后的有向图的父汇点子图,其中,溢出值为第二非去除结点的流进量减去第二非去除结点的流出量;
第一计算恢复模块70335,用于在去除结点之后的有向图的父汇点子图上继续计算其最小割。
示例性的,在本实施例中,以汇点子图1为例,第一计算子单元7031在如图5(A)所示的汇点子图1的副本上通过Highest-labelPush-relabel算法,可以得到汇点子图1的最小割为图5(A)的椭圆圈所示,包括结点8和结点10;
第一通知子单元7032将汇点子图1将最小割通知给如图5(B)所示的汇点子图2,由于汇点子图1比汇点子图2要小,此时汇点子图2仍在计算,汇点子图2在接收到汇点子图1通知的最小割之后,第一合并子单元7033所包括的第一计算停止模块70331停止汇点子图2的计算,并且第一生成模块70332在汇点子图2中生成两个结点集合,其中待去除结点集合包括结点8,结点10,其余为非去除结点集合;
第一结点去除模块70333用于遍历汇点子图2的待去除结点集合,可以知道,结点8,结点10均和非去除结点集合中的结点连接,因此,结点8和结点10均为第二非去除结点,第一溢出值计算模块70334对汇点子图2的第二非去除结点计算溢出值,因此,汇点子图2没有去除结点,优选的,对于第二非去除结点,我们可以将其整体看成一个汇点子图2的等效汇点,以使得减少后续汇点子图2的最小割计算的计算量;
第一计算恢复模块70335继续计算汇点子图2的最小割。
进一步的,第一计算子单元7031汇点子图2计算完毕时,可以得到汇点子图2的最小割为图5(B)的点虚线圆圈所示,包括结点7,结点8和结点10,并且第一通知子单元7032将汇点子图2的最小割通知汇点子图3,由于汇点子图2比汇点子图3要小,此时汇点子图3仍在计算,汇点子图3在接收到汇点子图2通知的最小割之后,第一合并子单元7033所包括的第一计算停止模块70331停止计算,并在汇点子图3中生成两个结点集合,其中待去除结点集合包括结点7,结点8,结点10,其余为非去除结点集合;
第一结点去除模块70333遍历汇点子图3的待去除结点集合,可以知道,结点7,结点8,结点10均和非去除结点集合中的结点连接,因此汇点子图3的第二非去除结点为结点7,结点8和结点10,第一溢出值计算模块70334对汇点子图3的第二非去除结点计算溢出值;优选的,将汇点子图3的第二非去除结点整体看成一个汇点子图3的等效汇点,以使得减少后续汇点子图3的最小割计算的计算量;
第一计算恢复模块70335继续计算汇点子图3的最小割。
第一计算完成子单元7034,用于得到等效汇点;
进一步的,第一计算完成子单元7034,用于:
最大的有向图的汇点子图计算完毕时,计算完成;
示例性的,当汇点子图3的最小割计算完毕时,第一计算完成子单元7034得到有向图的等效汇点T*;
或者,
若有向图的父汇点子图只能够去除有向图子汇点子图的汇点所在的最小割中的一个结点时,检查是否完成等效汇点的计算。
示例性的,本实施例中,当汇点子图3只能够去除汇点子图2的最小割中的结点7时,第一计算完成子单元7034可以将当前进行等效源点计算的结果进行合并,如果此时仅由汇点子图3的最小割计算结果与当前反向图的最大汇点子图的最小割计算结果就能够表示为如图3所示的有向图,则计算完成,得到等效汇点T*;
在本实施例中,优选为最大的有向图的汇点子图计算完毕时,计算完成,在本实施例中,当汇点子图3的最小割计算完毕时,等效汇点计算完成,可以得到等效汇点T*。
示例性的,如图8所示,第二计算单元704包括:
第二计算子单元7041,用于在全部反向图的汇点子图上根据最大流算法并行计算全部反向图的汇点子图的最小割;
第二通知子单元7042,用于任一个反向图的子汇点子图计算完毕时,将其汇点所在的最小割通知其父汇点子图;
第二合并子单元7043,用于反向图的父汇点子图合并其子汇点子图的汇点所在的最小割,去除反向图的子汇点子图的汇点所在的最小割中的结点;
进一步的,如图8所示,第二合并子单元7043,包括:
第二计算停止模块70431,用于有向图的父汇点子图在接收到反向图的子汇点子图发送的反向图的子汇点子图的汇点所在的最小割后,停止计算;
第二生成模块70432,用于在反向图的父汇点子图上生成两个结点集合,其中,一个结点集合为由反向图的子汇点子图的汇点所在的最小割组成的待去除结点集合,另一个结点集合为在反向图中反向图的子汇点子图的汇点所在的最小割以外的第一非去除结点组成的非去除结点集合;
第二结点去除模块70433,用于遍历待去除结点集合,若其中的任一结点仅与待去除结点集合中的结点连接,则该结点为去除结点,否则为第二非去除结点;
第二溢出值计算模块70434,用于计算所有第二非去除结点的溢出值,得到去除之后的反向图的父汇点子图,其中,溢出值为第二非去除结点的流进量减去第二非去除结点的流出量;
第二计算恢复模块70435,用于在去除结点之后的反向图的父汇点子图上继续计算其最小割。
第二计算完成子单元7044,用于得到反向图的等效汇点,
进一步的,第二计算完成子单元7044,用于:
最大的反向图的汇点子图计算完毕时,计算完成;
或者,
若反向图的父汇点子图只能够去除反向图的子汇点子图的汇点所在的最小割中的一个结点时,检查是否完成等效汇点的计算。
相应的,对于如图4所示的反向图,本领域技术人员可以很容易的通过第一计算单元703及其所包含的子单元与模块对有向图的汇点子图的计算方法和计算流程得到第二计算单元704及其所包含的子单元与模块对反向图的汇点子图的计算方法和计算流程,在此不再赘述。
示例性的,本实施例中,获取单元705得到有向图的最小割为如图6所示的等效源点与等效汇点的连接的边的集合。
本实施例提供了一种有向图的最小割获取设备70,通过具有依次包含关系的子图的形式对结点集合进行有向图最小割获取的方法和设备,减少了并行计算时的活跃结点间的通信次数和同步次数,提高了性能。
参见图9,为本发明本实施例提供的一种有向图的最小割获取设备70的硬件结构图,在本实施例中,仅通过如图3所示的有向图进行示例性说明,其中,圆圈内的数字表示结点序号,有向边上的数字表示该有向边上的流量,从图3中我们容易发现,结点0为源点,结点10为汇点,设备70可以包括:至少一个处理器901;至少一个输入单元902,用于将有向图输入至设备70,具体形式可以是扫描仪,本发明实施例对此不作任何限定;存储器903和通信总线904,用于用于实现这些装置之间的连接通信。
其中,通信总线904可以是工业标准体系结构(Industry StandardArchitecture,简称为ISA)总线、外部设备互连(Peripheral Component,简称为PCI)总线或扩展工业标准体系结构(Extended IndustryStandard Architecture,简称为EISA)总线等。该总线904可以分为地址总线、数据总线、控制总线等。为便于表示,图9中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
存储器903用于存储可执行程序代码,该程序代码包括计算机操作指令。存储器903可能包含高速RAM存储器,也可能还包括非易失性存储器(non-volatile memory),例如至少一个磁盘存储器。
处理器901可能是一个中央处理器(Central Processing Unit,简称为CPU),或者是特定集成电路(Application Specific IntegratedCircuit,简称为ASIC),或者是被配置成实施本发明实施例的一个或多个集成电路。
处理器901用于执行存储器704中存储的可执行程序代码,例如计算机程序来运行与可执行代码对应的程序。当有向图输入至设备70后,处理器901用于:
按照预设策略,分别将有向图划分成至少两个汇点子图和至少两个源点子图,其中,全部汇点子图均包含有向图的汇点,且全部汇点子图之间为依次包含关系;全部源点子图均包含有向图的源点,且全部源点子图之间为依次包含关系;
并行计算全部汇点子图的最小割集并通过汇点子图之间的通信获得有向图的等效汇点,以及并行计算全部源点子图的最小割集并通过源点子图之间的通信获得有向图的等效源点,其中,等效汇点为最大的汇点子图的最小割集,等效源点为最大的源点子图的最小割集;
根据有向图的等效汇点和有向图的等效源点连接的所有边获取有向图的最小割。
示例性的,处理器901按照预设策略,分别将有向图划分成至少两个汇点子图和至少两个源点子图,具体可以包括:
处理器901将有向图进行反向变化得到反向图,其中,反向变化包括,将有向图中的所有边进行反向,有向图的源点变成反向图的汇点,有向图的汇点变成反向图的源点;
处理器901分别从有向图和反向图的汇点出发,按照预设策略,分别将有向图和反向图划分成至少两个有向图的汇点子图以及至少两个反向图的汇点子图,并分别为每个有向图的汇点子图和反向图的源点子图建立副本,其中,至少两个反向图的汇点子图为至少两个有向图的源点子图。
示例性的,在并行计算全部汇点子图的最小割集并通过汇点子图之间的通信获得有向图的等效汇点,以及并行计算全部源点子图的最小割集并通过源点子图之间的通信获得有向图的等效源点之前,处理器901还可以用于:
将所有有向图的汇点子图根据包含关系建立关系树,其中,被包含的有向图的汇点子图称为有向图的子汇点子图,包含的有向图的汇点子图称为有向图的父汇点子图,以及将所有反向图的汇点子图根据包含关系建立关系树,其中,被包含的反向图的汇点子图称为反向图的子汇点子图,包含的反向图的汇点子图称为反向图的父汇点子图。
示例性的,处理器901并行计算全部汇点子图的最小割集并通过汇点子图之间的通信获得有向图的等效汇点,具体可以包括:
处理器901在全部有向图的汇点子图上根据最大流算法并行计算全部有向图的汇点子图的最小割;
处理器901在任一个有向图子汇点子图计算完毕时,将其汇点所在的最小割通知其父汇点子图;
处理器901将有向图的父汇点子图合并子汇点子图的汇点所在的最小割,去除有向图子汇点子图的汇点所在的最小割中的结点;
计算完成,处理器901得到等效汇点。
进一步的,处理器901将有向图的父汇点子图合并有向图的子汇点子图的汇点所在的最小割,去除有向图子汇点子图的汇点所在的最小割中的结点,具体可以包括:
处理器901使得有向图的父汇点子图在接收到有向图子汇点子图发送的有向图子汇点子图的汇点所在的最小割后,停止计算,并在有向图的父汇点子图上生成两个结点集合,其中,一个结点集合为由有向图子汇点子图的汇点所在的最小割组成的待去除结点集合,另一个结点集合为在有向图中有向图子汇点子图的汇点所在的最小割以外的第一非去除结点组成的非去除结点集合;
处理器901遍历待去除结点集合,若其中的任一结点仅与待去除结点集合中的结点连接,则该结点为去除结点,否则为第二非去除结点;
处理器901计算所有第二非去除结点的溢出值,得到去除之后的有向图的父汇点子图,其中,溢出值为第二非去除结点的流进量减去第二非去除结点的流出量;
处理器901在去除结点之后的有向图的父汇点子图上继续计算其最小割。
示例性的,计算完成,包括;
处理器901将最大的有向图的汇点子图计算完毕时,计算完成;
或者,
若有向图的父汇点子图只能够去除有向图子汇点子图的汇点所在的最小割中的一个结点时,处理器901检查是否完成等效汇点的计算。
相应的,
处理器901并行计算全部源点子图的最小割集并通过源点子图之间的通信获得有向图的等效源点,可以包括:
处理器901在全部反向图的汇点子图上根据最大流算法并行计算全部反向图的汇点子图的最小割;
处理器901在任一个反向图的子汇点子图计算完毕时,将其汇点所在的最小割通知其父汇点子图;
处理器901将反向图的父汇点子图合并其子汇点子图的汇点所在的最小割,去除反向图的子汇点子图的汇点所在的最小割中的结点;
计算完成,处理器901得到反向图的等效汇点。
进一步的,处理器901将反向图的父汇点子图合并子汇点子图的汇点所在的最小割,去除反向图的子汇点子图的汇点所在的最小割中的结点,具体可以包括:
处理器901使得反向图的父汇点子图在接收到反向图的子汇点子图发送的反向图的子汇点子图的汇点所在的最小割后,停止计算,并在反向图的父汇点子图上生成两个结点集合,其中,一个结点集合为由反向图的子汇点子图的汇点所在的最小割组成的待去除结点集合,另一个结点集合为在反向图中反向图的子汇点子图的汇点所在的最小割以外的第一非去除结点组成的非去除结点集合;
处理器901遍历待去除结点集合,若其中的任一结点仅与待去除结点集合中的结点连接,则该结点为去除结点,否则为第二非去除结点;
处理器901计算所有第二非去除结点的溢出值,得到去除之后的反向图的父汇点子图,其中,溢出值为第二非去除结点的流进量减去第二非去除结点的流出量;
处理器901在去除之后的父汇点子图上继续计算其最小割。
示例性的,计算完成,包括;
处理器901在最大的反向图的汇点子图计算完毕时,计算完成;
或者,
若反向图的父汇点子图只能够去除反向图的子汇点子图的汇点所在的最小割中的一个结点时,处理器901检查是否完成等效汇点的计算。
本实施例提供了一种有向图的最小割获取设备70,通过具有依次包含关系的子图的形式对结点集合进行有向图最小割获取的方法和设备,减少了并行计算时的活跃结点间的通信次数和同步次数,提高了性能。
本领域普通技术人员可以理解:实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储于一计算机可读取存储介质中,该程序在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括:ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以所述权利要求的保护范围为准。
Claims (18)
1.一种有向图的最小割获取方法,其特征在于,包括:
按照预设策略,分别将所述有向图划分成至少两个汇点子图和至少两个源点子图,其中,全部所述汇点子图均包含所述有向图的汇点,且全部所述汇点子图之间为依次包含关系;全部所述源点子图均包含所述有向图的源点,且全部所述源点子图之间为依次包含关系;
并行计算全部所述汇点子图的最小割集并通过所述汇点子图之间的通信获得所述有向图的等效汇点,以及并行计算全部所述源点子图的最小割集并通过所述源点子图之间的通信获得所述有向图的等效源点,其中,所述等效汇点为最大的所述汇点子图的最小割集,所述等效源点为最大的所述源点子图的最小割集;
根据所述有向图的等效汇点和所述有向图的等效源点连接的所有边获取所述有向图的最小割。
2.根据权利要求1所述的方法,其特征在于,所述按照预设策略,分别将所述有向图划分成至少两个汇点子图和至少两个源点子图,包括:
将所述有向图进行反向变化得到反向图,其中,所述反向变化包括,将所述有向图中的所有边进行反向,所述有向图的所述源点变成所述反向图的汇点,所述有向图的所述汇点变成所述反向图的源点;
分别从所述有向图和所述反向图的汇点出发,按照所述预设策略,分别将所述有向图和所述反向图划分成至少两个所述有向图的汇点子图以及至少两个所述反向图的汇点子图,并分别为每个所述有向图的汇点子图和所述反向图的源点子图建立副本,其中,所述至少两个所述反向图的汇点子图为所述至少两个所述有向图的源点子图。
3.根据权利要求1或2所述的方法,其特征在于,在所述并行计算全部所述汇点子图的最小割集并通过所述汇点子图之间的通信获得所述有向图的等效汇点,以及并行计算全部所述源点子图的最小割集并通过所述源点子图之间的通信获得所述有向图的等效源点之前,还包括:
将所有所述有向图的汇点子图根据包含关系建立关系树,其中,被包含的所述有向图的汇点子图称为所述有向图的子汇点子图,包含的所述有向图的汇点子图称为所述有向图的父汇点子图,以及将所有所述反向图的汇点子图根据包含关系建立关系树,其中,被包含的所述反向图的汇点子图称为所述反向图的子汇点子图,包含的所述反向图的汇点子图称为所述反向图的父汇点子图。
4.根据权利要求1-3任一项所述的方法,其特征在于,所述并行计算全部所述汇点子图的最小割集并通过所述汇点子图之间的通信获得所述有向图的等效汇点,包括:
在全部所述有向图的汇点子图上根据最大流算法并行计算全部所述有向图的汇点子图的最小割;
任一个所述有向图子汇点子图计算完毕时,将其汇点所在的最小割通知其父汇点子图;
所述有向图的父汇点子图合并子汇点子图的汇点所在的最小割,去除所述有向图子汇点子图的汇点所在的最小割中的结点;
计算完成,得到所述等效汇点。
5.根据权利要求4所述的方法,其特征在于,所述有向图的父汇点子图合并所述有向图的子汇点子图的汇点所在的最小割,去除所述有向图子汇点子图的汇点所在的最小割中的结点,包括:
所述有向图的父汇点子图在接收到所述有向图子汇点子图发送的所述有向图子汇点子图的汇点所在的最小割后,停止计算,并在所述有向图的父汇点子图上生成两个结点集合,其中,一个结点集合为由所述有向图子汇点子图的汇点所在的最小割组成的待去除结点集合,另一个结点集合为在所述有向图中所述有向图子汇点子图的汇点所在的最小割以外的第一非去除结点组成的非去除结点集合;
遍历所述待去除结点集合,若其中的任一结点仅与所述待去除结点集合中的结点连接,则该所述结点为去除结点,否则为第二非去除结点;
计算所有所述第二非去除结点的溢出值,得到去除之后的所述有向图的父汇点子图,其中,所述溢出值为所述第二非去除结点的流进量减去所述第二非去除结点的流出量;
在去除结点之后的所述有向图的父汇点子图上继续计算其最小割。
6.根据权利要求5所述的方法,其特征在于,所述计算完成,包括;
所述最大的所述有向图的汇点子图计算完毕时,计算完成;
或者,
若所述有向图的父汇点子图只能够去除所述有向图子汇点子图的汇点所在的最小割中的一个结点时,检查是否完成等效汇点的计算。
7.根据权利要求2或3所述的方法,其特征在于,所述并行计算全部所述源点子图的最小割集并通过所述源点子图之间的通信获得所述有向图的等效源点,包括:
在全部所述反向图的汇点子图上根据最大流算法并行计算全部所述反向图的汇点子图的最小割;
任一个所述反向图的子汇点子图计算完毕时,将其汇点所在的最小割通知其父汇点子图;
所述反向图的父汇点子图合并其子汇点子图的汇点所在的最小割,去除所述反向图的子汇点子图的汇点所在的最小割中的结点;
计算完成,得到所述反向图的等效汇点。
8.根据权利要求7所述的方法,其特征在于,所述反向图的父汇点子图合并子汇点子图的汇点所在的最小割,去除所述反向图的子汇点子图的汇点所在的最小割中的结点,包括:
所述反向图的父汇点子图在接收到所述反向图的子汇点子图发送的所述反向图的子汇点子图的汇点所在的最小割后,停止计算,并在所述反向图的父汇点子图上生成两个结点集合,其中,一个结点集合为由所述反向图的子汇点子图的汇点所在的最小割组成的待去除结点集合,另一个结点集合为在所述反向图中所述反向图的子汇点子图的汇点所在的最小割以外的第一非去除结点组成的非去除结点集合;
遍历所述待去除结点集合,若其中的任一结点仅与所述待去除结点集合中的结点连接,则该所述结点为去除结点,否则为第二非去除结点;
计算所有所述第二非去除结点的溢出值,得到去除之后的所述反向图的父汇点子图,其中,所述溢出值为所述第二非去除结点的流进量减去所述第二非去除结点的流出量;
在所述去除之后的父汇点子图上继续计算其最小割。
9.根据权利要求8所述的方法,其特征在于,所述计算完成,包括;
所述最大的所述反向图的汇点子图计算完毕时,计算完成;
或者,
若所述反向图的父汇点子图只能够去除所述反向图的子汇点子图的汇点所在的最小割中的一个结点时,检查是否完成等效汇点的计算。
10.一种有向图的最小割获取设备,其特征在于,包括:
第一子图划分单元,用于按照预设策略,将所述有向图划分至少两个汇点子图,其中,全部所述汇点子图均包括所诉有向图的汇点,且全部所述汇点子图之间为依次包含关系;
第二子图划分单元,用于按照所述预设策略,将所述有向图划分成至少两个源点子图,其中,全部所述源点子图均包含所述有向图的源点,且全部所述源点子图之间为依次包含关系;
第一计算单元,用于并行计算全部所述汇点子图的最小割集并通过所述汇点子图之间的通信获得所述有向图的等效汇点,其中,所述等效汇点为最大的所述汇点子图的最小割集;第二计算单元,用于并行计算全部所述源点子图的最小割集并通过所述源点子图之间的通信获得所述有向图的等效源点,其中,所述等效源点为最大的所述源点子图的最小割集;
获取单元,用于根据所述有向图的等效汇点和所述有向图的等效源点连接的所有边获取所述有向图的最小割。
11.根据权利要求10所述的设备,其特征在于,
所述第一子图划分单元,进一步用于从所述有向图的汇点出发,按照所述预设策略,将所述有向图划分成至少两个所述有向图的汇点子图,并分别为每个所述有向图的汇点子图建立副本;
所述第二子图划分单元,包括:
反向子单元,用于将所述有向图进行反向变化得到反向图,其中,所述反向变化包括,将所述有向图中的所有边进行反向,所述有向图的所述源点变成所述反向图的汇点,所述有向图的所述汇点变成所述反向图的源点;
反向子图划分子单元,用于从所述反向图的汇点出发,按照所述预设策略,将所述反向图划分成至少两个所述反向图的汇点子图,并分别为每个所述反向图的源点子图建立副本,其中,所述至少两个所述反向图的汇点子图为所述至少两个所述有向图的源点子图。
12.根据权利要求10或11所述的设备,其特征在于,还包括,建立关系单元,用于将所有所述有向图的汇点子图根据包含关系建立关系树,其中,被包含的所述有向图的汇点子图称为所述有向图的子汇点子图,包含的所述有向图的汇点子图称为所述有向图的父汇点子图,以及将所有所述反向图的汇点子图根据包含关系建立关系树,其中,被包含的所述反向图的汇点子图称为所述反向图的子汇点子图,包含的所述反向图的汇点子图称为所述反向图的父汇点子图。
13.根据权利要求10-12任一项所述的设备,其特征在于,所述第一计算单元包括:
第一计算子单元,用于在全部所述有向图的汇点子图上根据最大流算法并行计算全部所述有向图的汇点子图的最小割;
第一通知子单元,用于任一个所述有向图子汇点子图计算完毕时,将其汇点所在的最小割通知其父汇点子图;
第一合并子单元,用于所述有向图的父汇点子图合并子汇点子图的汇点所在的最小割,去除所述有向图子汇点子图的汇点所在的最小割中的结点;
第一计算完成子单元,用于得到所述等效汇点。
14.根据权利要求13所述的设备,其特征在于,所述第一合并子单元,包括:
第一计算停止模块,用于所述有向图的父汇点子图在接收到所述有向图子汇点子图发送的所述有向图子汇点子图的汇点所在的最小割后,停止计算;
第一生成模块,用于在所述有向图的父汇点子图上生成两个结点集合,其中,一个结点集合为由所述有向图子汇点子图的汇点所在的最小割组成的待去除结点集合,另一个结点集合为在所述有向图中所述有向图子汇点子图的汇点所在的最小割以外的第一非去除结点组成的非去除结点集合;
第一结点去除模块,用于遍历所述待去除结点集合,若其中的任一结点仅与所述待去除结点集合中的结点连接,则该所述结点为去除结点,否则为第二非去除结点;
第一溢出值计算模块,用于计算所有所述第二非去除结点的溢出值,得到去除之后的所述有向图的父汇点子图,其中,所述溢出值为所述第二非去除结点的流进量减去所述第二非去除结点的流出量;
第一计算恢复模块,用于在去除结点之后的所述有向图的父汇点子图上继续计算其最小割。
15.根据权利要求14所述的设备,其特征在于,所述第一计算完成子单元,进一步用于:
所述最大的所述有向图的汇点子图计算完毕时,计算完成;
或者,
若所述有向图的父汇点子图只能够去除所述有向图子汇点子图的汇点所在的最小割中的一个结点时,检查是否完成等效汇点的计算。
16.根据权利要求11或12所述的设备,其特征在于,所述第二计算单元包括:
第二计算子单元,用于在全部所述反向图的汇点子图上根据最大流算法并行计算全部所述反向图的汇点子图的最小割;
第二通知子单元,用于任一个所述反向图的子汇点子图计算完毕时,将其汇点所在的最小割通知其父汇点子图;
第二合并子单元,用于所述反向图的父汇点子图合并其子汇点子图的汇点所在的最小割,去除所述反向图的子汇点子图的汇点所在的最小割中的结点;
第二计算完成子单元,用于得到所述反向图的等效汇点。
17.根据权利要求16所述的设备,其特征在于,所述第二合并子单元,包括:
第二计算停止模块,用于所述反向图的父汇点子图在接收到所述反向图的子汇点子图发送的所述反向图的子汇点子图的汇点所在的最小割后,停止计算;
第二生成模块,用于在所述反向图的父汇点子图上生成两个结点集合,其中,一个结点集合为由所述反向图的子汇点子图的汇点所在的最小割组成的待去除结点集合,另一个结点集合为在所述反向图中所述反向图的子汇点子图的汇点所在的最小割以外的第一非去除结点组成的非去除结点集合;
第二结点去除模块,用于遍历所述待去除结点集合,若其中的任一结点仅与所述待去除结点集合中的结点连接,则该所述结点为去除结点,否则为第二非去除结点;
第二溢出值计算模块,用于计算所有所述第二非去除结点的溢出值,得到去除之后的所述反向图的父汇点子图,其中,所述溢出值为所述第二非去除结点的流进量减去所述第二非去除结点的流出量;
第二计算恢复模块,用于在去除结点之后的所述反向图的父汇点子图上继续计算其最小割。
18.根据权利要求17所述的设备,其特征在于,所述第二计算完成子单元,进一步用于:
所述最大的所述反向图的汇点子图计算完毕时,计算完成;
或者,
若所述反向图的父汇点子图只能够去除所述反向图的子汇点子图的汇点所在的最小割中的一个结点时,检查是否完成等效汇点的计算。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310244090.4A CN104239126B (zh) | 2013-06-19 | 2013-06-19 | 一种有向图的最小割获取方法及设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310244090.4A CN104239126B (zh) | 2013-06-19 | 2013-06-19 | 一种有向图的最小割获取方法及设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104239126A true CN104239126A (zh) | 2014-12-24 |
CN104239126B CN104239126B (zh) | 2018-03-13 |
Family
ID=52227260
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310244090.4A Active CN104239126B (zh) | 2013-06-19 | 2013-06-19 | 一种有向图的最小割获取方法及设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104239126B (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107153696A (zh) * | 2017-05-08 | 2017-09-12 | 郑州云海信息技术有限公司 | 一种面向云存储的数据副本放置方法 |
CN109478145A (zh) * | 2016-06-10 | 2019-03-15 | 华为技术有限公司 | 同构型系统的并行优化 |
CN113852571A (zh) * | 2021-08-20 | 2021-12-28 | 阿里巴巴(中国)有限公司 | 分配流量的方法以及装置 |
WO2024104005A1 (zh) * | 2022-11-15 | 2024-05-23 | 中移(成都)信息通信科技有限公司 | 医疗信息处理方法以及装置、设备及存储介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20100118871A1 (en) * | 2008-10-15 | 2010-05-13 | Board Of Trustees Of Michigan State University | Systematic approach towards minimizing packet classifiers |
CN102098684A (zh) * | 2011-03-22 | 2011-06-15 | 北京邮电大学 | 认知无线网络中跨层资源分配系统及方法 |
CN102201097A (zh) * | 2010-03-26 | 2011-09-28 | 微软公司 | 图群集 |
-
2013
- 2013-06-19 CN CN201310244090.4A patent/CN104239126B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20100118871A1 (en) * | 2008-10-15 | 2010-05-13 | Board Of Trustees Of Michigan State University | Systematic approach towards minimizing packet classifiers |
CN102201097A (zh) * | 2010-03-26 | 2011-09-28 | 微软公司 | 图群集 |
CN102098684A (zh) * | 2011-03-22 | 2011-06-15 | 北京邮电大学 | 认知无线网络中跨层资源分配系统及方法 |
Non-Patent Citations (2)
Title |
---|
ALEXANDER SHEKHOVTSOV: "《A Distributed Mincut/Maxflow Algorithm Combining Path Augmentation and Push-Relabel》", 7 September 2011 * |
赵礼峰,陈华,宋常城,白睿: ""基于一个网络图最大流算法的改进"", 《计算机技术与发展》 * |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109478145A (zh) * | 2016-06-10 | 2019-03-15 | 华为技术有限公司 | 同构型系统的并行优化 |
CN109478145B (zh) * | 2016-06-10 | 2021-04-09 | 华为技术有限公司 | 同构型系统的并行优化 |
CN107153696A (zh) * | 2017-05-08 | 2017-09-12 | 郑州云海信息技术有限公司 | 一种面向云存储的数据副本放置方法 |
CN113852571A (zh) * | 2021-08-20 | 2021-12-28 | 阿里巴巴(中国)有限公司 | 分配流量的方法以及装置 |
CN113852571B (zh) * | 2021-08-20 | 2023-11-28 | 阿里巴巴(中国)有限公司 | 分配流量的方法以及装置 |
WO2024104005A1 (zh) * | 2022-11-15 | 2024-05-23 | 中移(成都)信息通信科技有限公司 | 医疗信息处理方法以及装置、设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN104239126B (zh) | 2018-03-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN113703775B (zh) | 一种编译方法、装置、设备及存储介质 | |
CN104239126A (zh) | 一种有向图的最小割获取方法及设备 | |
CN111062467B (zh) | 一种应用于ai异构编译器的自动切分神经网络子图方法 | |
CN104571956A (zh) | 一种数据写入方法及拆分装置 | |
WO2017007727A1 (en) | Parallelized network traffic flow availability simulation using stochastic process and traffic engineering algorithms | |
CN103902353A (zh) | 一种虚拟机的部署方法及装置 | |
CN104268243A (zh) | 一种位置数据处理方法及装置 | |
WO2020177488A1 (zh) | 一种区块链交易追溯的方法及装置 | |
CN109194626A (zh) | 基于区块链的数据上链判断方法 | |
WO2018166249A1 (zh) | 一种网络业务传输的方法及系统 | |
US9391875B2 (en) | Resource oriented dependency graph for network configuration | |
CN107679107B (zh) | 一种基于图数据库的电网设备可达性查询方法及系统 | |
CN109120539B (zh) | 一种实现数据传输处理的方法及装置 | |
CN106528245B (zh) | 多线程下载方法和装置及计算设备 | |
CN104579763A (zh) | 一种网络扩容方法和设备 | |
CN110430140A (zh) | 路径处理方法、装置、设备及存储介质 | |
CN113726692B (zh) | 一种基于生成对抗网络的虚拟网络映射方法及装置 | |
CN104516995A (zh) | 网络流图缩减方法和装置 | |
CN101986625A (zh) | 一种路径计算方法及装置 | |
CN105373451A (zh) | 一种虚拟机放置的方法及装置 | |
CN104376366A (zh) | 一种最优网络最大流算法的选择方法和设备 | |
CN104932982A (zh) | 一种消息访存的编译方法及相关装置 | |
CN105893145A (zh) | 一种基于遗传算法的任务调度方法及装置 | |
Singh et al. | Parallel Implementation of the Single Source Shortest Path Algorithm on CPU-GPU Based Hybrid System | |
CN113792247B (zh) | 基于代码特征生成功能流程图的方法、装置、设备和介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |