一种有向图的最小割获取方法及设备的制作方法

文档序号:6504421阅读:173来源:国知局
一种有向图的最小割获取方法及设备的制作方法
【专利摘要】本发明实施例提供了一种有向图的最小割获取方法和设备,通过具有依次包含关系的子图的形式对结点集合进行有向图最小割获取的方法和设备,减少了并行计算时的活跃结点间的通信次数和同步次数,提高了性能,其中该方法包括:按照预设策略,分别将有向图划分成至少两个汇点子图和至少两个源点子图;并行计算全部汇点子图的最小割集并通过汇点子图之间的通信获得有向图的等效汇点,以及并行计算全部源点子图的最小割集并通过源点子图之间的通信获得有向图的等效源点;根据有向图的等效汇点和有向图的等效源点连接的所有边获取有向图的最小割。
【专利说明】一种有向图的最小割获取方法及设备

【技术领域】
[0001] 本发明涉及网络优化领域,尤其涉及一种有向图的最小割获取方法及设备。

【背景技术】
[0002] 最大流最小割问题是网络优化领域中的经典问题,可以广泛的应用在以网络作为 表现形式的应用背景中,目前针对该问题所提出的方法都是基于网络中的结点进行并行计 算的,通过整体同步并行计算模型(Bulk Synchronous Parallel Computing Model,BSP模 型)并行处理活跃结点,每个活跃结点均通过超步进行计算,直至整个网络中没有活跃结点 时,计算结束。
[0003] 发明人发现以上的方法有如下的问题:在每个超步进行计算的过程中,需要在活 跃结点间进行大量的通信与同步,从而导致网络的拥堵,性能极低。


【发明内容】

[0004] 本发明的实施例提供一种有向图的最小割获取方法及设备,减少了并行计算时的 活跃结点间的通信次数和同步次数,提高了性能。
[0005] 为达到上述目的,本发明的实施例采用如下技术方案:
[0006] 第一方面,本发明实施例提供了一种有向图的最小割获取方法,包括:
[0007] 按照预设策略,分别将所述有向图划分成至少两个汇点子图和至少两个源点子 图,其中,全部所述汇点子图均包含所述有向图的汇点,且全部所述汇点子图之间为依次包 含关系;全部所述源点子图均包含所述有向图的源点,且全部所述源点子图之间为依次包 含关系;
[0008] 并行计算全部所述汇点子图的最小割集并通过所述汇点子图之间的通信获得所 述有向图的等效汇点,以及并行计算全部所述源点子图的最小割集并通过所述源点子图之 间的通信获得所述有向图的等效源点,其中,所述等效汇点为最大的所述汇点子图的最小 割集,所述等效源点为最大的所述源点子图的最小割集;
[0009] 根据所述有向图的等效汇点和所述有向图的等效源点连接的所有边获取所述有 向图的最小割。
[0010] 在第一种可能的实现方式中,结合第一方面,所述按照预设策略,分别将所述有向 图划分成至少两个汇点子图和至少两个源点子图,包括:
[0011] 将所述有向图进行反向变化得到反向图,其中,所述反向变化包括,将所述有向图 中的所有边进行反向,所述有向图的所述源点变成所述反向图的汇点,所述有向图的所述 汇点变成所述反向图的源点;
[0012] 分别从所述有向图和所述反向图的汇点出发,按照所述预设策略,分别将所述有 向图和所述反向图划分成至少两个所述有向图的汇点子图以及至少两个所述反向图的汇 点子图,并分别为每个所述有向图的汇点子图和所述反向图的源点子图建立副本,其中,所 述至少两个所述反向图的汇点子图为所述至少两个所述有向图的源点子图。
[0013] 在第二种可能的实现方式中,结合第一方面或者第一种可能的实现方式,在所述 并行计算全部所述汇点子图的最小割集并通过所述汇点子图之间的通信获得所述有向图 的等效汇点,以及并行计算全部所述源点子图的最小割集并通过所述源点子图之间的通信 获得所述有向图的等效源点之前,还包括:
[0014] 将所有所述有向图的汇点子图根据包含关系建立关系树,其中,被包含的所述有 向图的汇点子图称为所述有向图的子汇点子图,包含的所述有向图的汇点子图称为所述有 向图的父汇点子图,以及将所有所述反向图的汇点子图根据包含关系建立关系树,其中,被 包含的所述反向图的汇点子图称为所述反向图的子汇点子图,包含的所述反向图的汇点子 图称为所述反向图的父汇点子图。
[0015] 在第三种可能的实现方式中,结合第一方面、第一种可能的实现方式或者第二种 可能的实现方式中的任一项,所述并行计算全部所述汇点子图的最小割集并通过所述汇点 子图之间的通信获得所述有向图的等效汇点,包括:
[0016] 在全部所述有向图的汇点子图上根据最大流算法并行计算全部所述有向图的汇 点子图的最小割;
[0017] 任一个所述有向图子汇点子图计算完毕时,将其汇点所在的最小割通知其父汇点 子图;
[0018] 所述有向图的父汇点子图合并子汇点子图的汇点所在的最小割,去除所述有向图 子汇点子图的汇点所在的最小割中的结点;
[0019] 计算完成,得到所述等效汇点。
[0020] 在第四种可能的实现方式中,结合第三种可能的实现方式,所述有向图的父汇点 子图合并子汇点子图的汇点所在的最小割,去除所述有向图子汇点子图的汇点所在的最小 割中的结点,包括:
[0021] 所述有向图的父汇点子图在接收到所述有向图子汇点子图发送的所述有向图子 汇点子图的汇点所在的最小割后,停止计算,并在所述有向图的父汇点子图上生成两个结 点集合,其中,一个结点集合为由所述有向图子汇点子图的汇点所在的最小割组成的待去 除结点集合,另一个结点集合为在所述有向图中所述有向图子汇点子图的汇点所在的最小 割以外的第一非去除结点组成的非去除结点集合;
[0022] 遍历所述待去除结点集合,若其中的任一结点仅与所述待去除结点集合中的结点 连接,则该所述结点为去除结点,否则为第二非去除结点;
[0023] 计算所有所述第二非去除结点的溢出值,得到去除之后的所述有向图的父汇点 子图,其中,所述溢出值为所述第二非去除结点的流进量减去所述第二非去除结点的流出 量;
[0024] 在去除结点之后的所述有向图的父汇点子图上继续计算其最小割。
[0025] 在第五种可能的实现方式中,结合第四种可能的实现方式,所述计算完成,包括;
[0026] 所述最大的所述有向图的汇点子图计算完毕时,计算完成;
[0027] 或者,
[0028] 若所述有向图的父汇点子图只能够去除所述有向图子汇点子图的汇点所在的最 小割中的一个结点时,检查是否完成等效汇点的计算。
[0029] 在第六种可能的实现方式中,结合第一种或者第二种可能的实现方式,所述并行 计算全部所述源点子图的最小割集并通过所述源点子图之间的通信获得所述有向图的等 效源点,包括:
[0030] 在全部所述反向图的汇点子图上根据最大流算法并行计算全部所述反向图的汇 点子图的最小割;
[0031] 任一个所述反向图的子汇点子图计算完毕时,将其汇点所在的最小割通知其父汇 点子图;
[0032] 所述反向图的父汇点子图合并子汇点子图的汇点所在的最小割,去除所述反向图 的子汇点子图的汇点所在的最小割中的结点;
[0033] 计算完成,得到所述反向图的等效汇点。
[0034] 在第七种可能的实现方式中,结合第六种可能的实现方式,所述反向图的父汇点 子图合并子汇点子图的汇点所在的最小割,去除所述反向图的子汇点子图的汇点所在的最 小割中的结点,包括:
[0035] 所述反向图的父汇点子图在接收到所述反向图的子汇点子图发送的所述反向图 的子汇点子图的汇点所在的最小割后,停止计算,并在所述反向图的父汇点子图上生成两 个结点集合,其中,一个结点集合为由所述反向图的子汇点子图的汇点所在的最小割组成 的待去除结点集合,另一个结点集合为在所述反向图中所述反向图的子汇点子图的汇点所 在的最小割以外的第一非去除结点组成的非去除结点集合;
[0036] 遍历所述待去除结点集合,若其中的任一结点仅与所述待去除结点集合中的结点 连接,则该所述结点为去除结点,否则为第二非去除结点;
[0037] 计算所有所述第二非去除结点的溢出值,得到去除之后的所述反向图的父汇点 子图,其中,所述溢出值为所述第二非去除结点的流进量减去所述第二非去除结点的流出 量;
[0038] 在所述去除之后的父汇点子图上继续计算其最小割。
[0039] 在第八种可能的实现方式中,结合第七种可能的实现方式,所述计算完成,包括;
[0040] 所述最大的所述反向图的汇点子图计算完毕时,计算完成;
[0041] 或者,
[0042] 若所述反向图的父汇点子图只能够去除所述反向图的子汇点子图的汇点所在的 最小割中的一个结点时,检查是否完成等效汇点的计算。
[0043] 第二方面,本发明实施例提供了一种有向图的最小割获取设备,其特征在于,包 括:
[0044] 第一子图划分单元,用于按照预设策略,将所述有向图划分至少两个汇点子图,其 中,全部所述汇点子图均包括所诉有向图的汇点,且全部所述汇点子图之间为依次包含关 系;
[0045] 第二子图划分单元,用于按照所述预设策略,将所述有向图划分成至少两个源点 子图,其中,全部所述源点子图均包含所述有向图的源点,且全部所述源点子图之间为依次 包含关系;
[0046] 第一计算单元,用于并行计算全部所述汇点子图的最小割集并通过所述汇点子图 之间的通信获得所述有向图的等效汇点,其中,所述等效汇点为最大的所述汇点子图的最 小割集;第二计算单元,用于并行计算全部所述源点子图的最小割集并通过所述源点子图 之间的通信获得所述有向图的等效源点,其中,所述等效源点为最大的所述源点子图的最 小害Ij集;
[0047] 获取单元,用于根据所述有向图的等效汇点和所述有向图的等效源点连接的所有 边获取所述有向图的最小割。
[0048] 在第一种可能的实现方式中,结合第二方面,
[0049] 所述第一子图划分单元,进一步用于从所述有向图的汇点出发,按照所述预设策 略,将所述有向图划分成至少两个所述有向图的汇点子图,并分别为每个所述有向图的汇 点子图建立副本;
[0050] 所述第二子图划分单元,包括:
[0051] 反向子单元,用于将所述有向图进行反向变化得到反向图,其中,所述反向变化包 括,将所述有向图中的所有边进行反向,所述有向图的所述源点变成所述反向图的汇点,所 述有向图的所述汇点变成所述反向图的源点;
[0052] 反向子图划分子单元,用于从所述反向图的汇点出发,按照所述预设策略,将所述 反向图划分成至少两个所述反向图的汇点子图,并分别为每个所述反向图的源点子图建立 副本,其中,所述至少两个所述反向图的汇点子图为所述至少两个所述有向图的源点子图。
[0053] 在第二种可能的实现方式中,结合第二方面或者第一种可能的实现方式,还包括, 建立关系单元,用于将所有所述有向图的汇点子图根据包含关系建立关系树,其中,被包含 的所述有向图的汇点子图称为所述有向图的子汇点子图,包含的所述有向图的汇点子图称 为所述有向图的父汇点子图,以及将所有所述反向图的汇点子图根据包含关系建立关系 树,其中,被包含的所述反向图的汇点子图称为所述反向图的子汇点子图,包含的所述反向 图的汇点子图称为所述反向图的子汇点子图。
[0054] 在第三种可能的实现方式中,结合第一方面、第一种可能的实现方式或者第二种 可能的实现方式中的任一项,所述第一计算单元包括:
[0055] 第一计算子单元,用于在全部所述有向图的汇点子图上根据最大流算法并行计算 全部所述有向图的汇点子图的最小割;
[0056] 第一通知子单元,用于任一个所述有向图子汇点子图计算完毕时,将其汇点所在 的最小割通知其父汇点子图;
[0057] 第一合并子单元,用于所述有向图的父汇点子图合并子汇点子图的汇点所在的最 小割,去除所述有向图子汇点子图的汇点所在的最小割中的结点;
[0058] 第一计算完成子单元,用于得到所述等效汇点。
[0059] 在第四种可能的实现方式中,结合第三种可能的实现方式,所述第一合并子单元, 包括:
[0060] 第一计算停止模块,用于所述有向图的父汇点子图在接收到所述有向图子汇点子 图发送的所述有向图子汇点子图的汇点所在的最小割后,停止计算;
[0061] 第一生成模块,用于在所述有向图的父汇点子图上生成两个结点集合,其中,一个 结点集合为由所述有向图子汇点子图的汇点所在的最小割组成的待去除结点集合,另一个 结点集合为在所述有向图中所述有向图子汇点子图的汇点所在的最小割以外的第一非去 除结点组成的非去除结点集合;
[0062] 第一结点去除模块,用于遍历所述待去除结点集合,若其中的任一结点仅与所述 待去除结点集合中的结点连接,则该所述结点为去除结点,否则为第二非去除结点;
[0063] 第一溢出值计算模块,用于计算所有所述第二非去除结点的溢出值,得到去除之 后的所述有向图的父汇点子图,其中,所述溢出值为所述第二非去除结点的流进量减去所 述第二非去除结点的流出量;
[0064] 第一计算恢复模块,用于在去除结点之后的所述有向图的父汇点子图上继续计算 其最小割。
[0065] 在第五种可能的实现方式中,结合第四种可能的实现方式,所述第一计算完成子 单元,进一步用于:
[0066] 所述最大的所述有向图的汇点子图计算完毕时,计算完成;
[0067]或者,
[0068] 若所述有向图的父汇点子图只能够去除所述有向图子汇点子图的汇点所在的最 小割中的一个结点时,检查是否完成等效汇点的计算。
[0069] 在第六种可能的实现方式中,结合第一种或者第二种可能的实现方式,所述第二 计算单元包括:
[0070] 第二计算子单元,用于在全部所述反向图的汇点子图上根据最大流算法并行计算 全部所述反向图的汇点子图的最小割;
[0071] 第二通知子单元,用于任一个所述反向图的子汇点子图计算完毕时,将其汇点所 在的最小割通知其父汇点子图;
[0072] 第二合并子单元,用于所述反向图的父汇点子图合并子汇点子图的汇点所在的最 小割,去除所述反向图的子汇点子图的汇点所在的最小割中的结点;
[0073] 第二计算完成子单元,用于得到所述反向图的等效汇点。
[0074] 在第七种可能的实现方式中,结合第六种可能的实现方式,所述合并子单元,包 括:
[0075] 第二计算停止模块,用于所述反向图的父汇点子图在接收到所述反向图的子汇点 子图发送的所述反向图的子汇点子图的汇点所在的最小割后,停止计算;
[0076] 第二生成模块,用于在所述反向图的父汇点子图上生成两个结点集合,其中,一个 结点集合为由所述反向图的子汇点子图的汇点所在的最小割组成的待去除结点集合,另一 个结点集合为在所述反向图中所述反向图的子汇点子图的汇点所在的最小割以外的第一 非去除结点组成的非去除结点集合;
[0077] 第二结点去除模块,用于遍历所述待去除结点集合,若其中的任一结点仅与所述 待去除结点集合中的结点连接,则该所述结点为去除结点,否则为第二非去除结点;
[0078] 第二溢出值计算模块,用于计算所有所述第二非去除结点的溢出值,得到去除之 后的所述反向图的父汇点子图,其中,所述溢出值为所述第二非去除结点的流进量减去所 述第二非去除结点的流出量;
[0079] 第二计算恢复模块,用于在去除结点之后的所述反向图的父汇点子图上继续计算 其最小割。
[0080] 在第八种可能的实现方式中,结合第七种可能的实现方式,所述第二计算完成子 单元,进一步用于:
[0081] 所述最大的所述反向图的汇点子图计算完毕时,计算完成;
[0082] 或者,
[0083] 若所述反向图的父汇点子图只能够去除所述反向图的子汇点子图的汇点所在的 最小割中的一个结点时,检查是否完成等效汇点的计算。
[0084] 本发明实施例通过具有依次包含关系的子图的形式对结点集合进行有向图最小 割获取的方法和设备,减少了并行计算时的活跃结点间的通信次数和同步次数,提高了性 能。

【专利附图】

【附图说明】
[0085] 为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现 有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本 发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以 根据这些附图获得其他的附图。
[0086] 图1为本发明实施例提供的一种有向图的最小割获取方法的流程示意图;
[0087] 图2为本发明本实施例提供的一种有向图的最小割获取方法的详细流程示意图;
[0088] 图3为本发明实施例提供的一种有向图;
[0089] 图4为有向图的反向图;
[0090] 图5为有向图的汇点子图副本;
[0091] 图6为等效汇点与等效源点的示意图;
[0092] 图7为本发明实施例提供的一种有向图的最小割获取设备的装置示意图;
[0093] 图8为本发明实施例提供的另一种有向图的最小割获取设备的装置示意图;
[0094] 图9为本发明实施例提供的一种有向图的最小割获取设备的硬件结构图。

【具体实施方式】
[0095] 下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完 整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于 本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他 实施例,都属于本发明保护的范围。
[0096] 参见图1,为本实施例提供的一种有向图的最小割获取方法的流程示意图,包括:
[0097] SlOl :按照预设策略,分别将有向图划分成至少两个汇点子图和至少两个源点子 图;
[0098] 示例性的,全部汇点子图均包含有向图的汇点,且全部汇点子图之间为依次包含 关系;全部源点子图均包含有向图的源点,且全部源点子图之间为依次包含关系;
[0099] 示例性的,按照预设策略,分别将有向图划分成至少两个汇点子图和至少两个源 点子图,包括:
[0100] 将有向图进行反向变化得到反向图,其中,反向变化包括,将有向图中的所有边进 行反向,有向图的源点变成反向图的汇点,有向图的汇点变成反向图的源点;
[0101] 分别从有向图和反向图的汇点出发,按照预设策略,分别将有向图和反向图划分 成至少两个有向图的汇点子图以及至少两个反向图的汇点子图,并分别为每个有向图的汇 点子图和反向图的源点子图建立副本,其中,至少两个反向图的汇点子图为至少两个有向 图的源点子图。
[0102] S102:并行计算全部汇点子图的最小割集并通过汇点子图之间的通信获得有向图 的等效汇点,以及并行计算全部源点子图的最小割集并通过源点子图之间的通信获得有向 图的等效源点;
[0103] 示例性的,等效汇点为最大的汇点子图的最小割集,等效源点为最大的源点子图 的最小割集;
[0104] 示例性的,在并行计算全部汇点子图的最小割集并通过汇点子图之间的通信获得 有向图的等效汇点,以及并行计算全部源点子图的最小割集并通过源点子图之间的通信获 得有向图的等效源点之前,还包括:
[0105] 将所有有向图的汇点子图根据包含关系建立关系树,其中,被包含的有向图的汇 点子图称为有向图的子汇点子图,包含的有向图的汇点子图称为有向图的父汇点子图,以 及将所有反向图的汇点子图根据包含关系建立关系树,其中,被包含的反向图的汇点子图 称为反向图的子汇点子图,包含的反向图的汇点子图称为反向图的父汇点子图。
[0106] 示例性的,并行计算全部汇点子图的最小割集并通过汇点子图之间的通信获得有 向图的等效汇点,包括:
[0107] 在全部有向图的汇点子图上根据最大流算法并行计算全部有向图的汇点子图的 最小割;
[0108] 任一个有向图子汇点子图计算完毕时,将其汇点所在的最小割通知其父汇点子 图;
[0109] 有向图的父汇点子图合并子汇点子图的汇点所在的最小割,去除有向图子汇点子 图的汇点所在的最小割中的结点;
[0110] 进一步的,有向图的父汇点子图合并子汇点子图的汇点所在的最小割,去除有向 图子汇点子图的汇点所在的最小割中的结点,包括:
[0111] 有向图的父汇点子图在接收到有向图子汇点子图发送的有向图子汇点子图的汇 点所在的最小割后,停止计算,并在有向图的父汇点子图上生成两个结点集合,其中,一个 结点集合为由有向图子汇点子图的汇点所在的最小割组成的待去除结点集合,另一个结点 集合为在有向图中有向图子汇点子图的汇点所在的最小割以外的第一非去除结点组成的 非去除结点集合;
[0112] 遍历待去除结点集合,若其中的任一结点仅与待去除结点集合中的结点连接,则 该结点为去除结点,否则为第二非去除结点;
[0113] 计算所有第二非去除结点的溢出值,得到去除之后的有向图的父汇点子图,其中, 溢出值为第二非去除结点的流进量减去第二非去除结点的流出量;
[0114] 在去除结点之后的有向图的父汇点子图上继续计算其最小割。
[0115] 计算完成,得到等效汇点;
[0116] 进一步的,计算完成,包括;
[0117] 最大的有向图的汇点子图计算完毕时,计算完成;
[0118] 或者,
[0119] 若有向图的父汇点子图只能够去除有向图子汇点子图的汇点所在的最小割中的 一个结点时,检查是否完成等效汇点的计算。
[0120] 示例性的,并行计算全部源点子图的最小割集并通过源点子图之间的通信获得有 向图的等效源点,包括:
[0121] 在全部反向图的汇点子图上根据最大流算法并行计算全部反向图的汇点子图的 最小割;
[0122] 任一个反向图子汇点子图计算完毕时,将其汇点所在的最小割通知其父汇点子 图;
[0123] 反向图的父汇点子图合并子汇点子图的汇点所在的最小割,去除反向图子汇点子 图的汇点所在的最小割中的结点;
[0124] 进一步的,反向图的父汇点子图合并反向图子汇点子图的汇点所在的最小割,去 除反向图子汇点子图的汇点所在的最小割中的结点,包括:
[0125] 反向图的父汇点子图在接收到反向图子汇点子图发送的反向图子汇点子图的汇 点所在的最小割后,停止计算,并在反向图的父汇点子图上生成两个结点集合,其中,一个 结点集合为由反向图子汇点子图的汇点所在的最小割组成的待去除结点集合,另一个结点 集合为在反向图中反向图子汇点子图的汇点所在的最小割以外的第一非去除结点组成的 非去除结点集合;
[0126] 遍历待去除结点集合,若其中的任一结点仅与待去除结点集合中的结点连接,则 该结点为去除结点,否则为第二非去除结点;
[0127] 计算所有第二非去除结点的溢出值,得到去除之后的反向图的父汇点子图,其中, 溢出值为第二非去除结点的流进量减去第二非去除结点的流出量;
[0128] 在去除之后的反向图的父汇点子图上继续计算其最小割。
[0129] 计算完成,得到等效汇点,也就是有向图的等效源点;
[0130] 进一步的,计算完成,包括;
[0131] 最大的反向图的汇点子图计算完毕时,计算完成;
[0132] 或者,
[0133] 若反向图的父汇点子图只能够去除反向图子汇点子图的汇点所在的最小割中的 一个结点时,检查是否完成等效汇点的计算。
[0134] S103 :根据有向图的等效汇点和有向图的等效源点连接的所有边获取有向图的最 小割;
[0135] 本实施例提供了一种有向图的最小割获取方法,通过具有依次包含关系的子图的 形式对结点集合进行有向图最小割获取的方法和设备,减少了并行计算时的活跃结点间的 通信次数和同步次数,提高了性能。
[0136] 参见图2,为本发明本实施例提供的一种有向图的最小割获取方法的详细流程示 意图,在本实施例中,仅通过如图3所示的有向图进行示例性说明,其中,圆圈内的数字表 示结点序号,有向边上的数字表示该有向边上的流量,从图3中我们容易发现,结点0为源 点,结点10为汇点,在此基础上,图3所示的有向图的最小割获取方法包括:
[0137] 201 :按照预设策略,分别将有向图划分成至少两个汇点子图和至少两个源点子 图,其中,全部汇点子图均包含有向图的汇点,且全部汇点子图之间为依次包含关系;全部 源点子图均包含有向图的源点,且全部源点子图之间为依次包含关系;
[0138] 示例性的,该步骤可以分为:
[0139] 首先,将有向图进行反向变化得到反向图,其中,反向变化包括,将有向图中的所 有边进行反向,有向图的源点变成反向图的汇点,有向图的汇点变成反向图的源点,在本实 施例中,可以将如图3所示的有向图进行反向变化如图4所示的反向图,可以得到,结点10 为反向图的源点,结点〇为反向图的汇点,本领域技术人员可以理解,反向图与有向图为对 偶关系;
[0140] 然后,分别从有向图和反向图的汇点出发,按照预设策略,分别将有向图和反向图 划分成至少两个有向图的汇点子图以及至少两个反向图的汇点子图,并分别为每个有向图 的汇点子图和反向图的源点子图建立副本,其中,至少两个反向图的汇点子图为至少两个 有向图的源点子图;
[0141] 在本实施例中,分别从图3和图4的汇点出发,划分有向图和反向图的汇点子图;
[0142] 对于图3,如图中点虚线表示,从作为汇点的结点10出发,通过反向宽度优先搜索 方法选取3个结点组成汇点子图1,并且将图3中除去汇点子图1的部分看成一个整体S #, 并建立副本,可以得到如图5 (A)所示的汇点子图1的副本;
[0143] 接着从汇点子图1出发,如图3中点划线表示,继续通过反向宽度优先搜索方法选 取4个结点组成汇点子图2,并且将图3中除去汇点子图2的部分看成一个整体S ##,并建立 副本,可以得到如图5 (B)所示的汇点子图2的副本;
[0144] 然后从汇点子图2出发,继续通过反向宽度优先搜索的方法选取4个结点组成汇 点子图3,如图5(C),此时,汇点子图3即为如图3所示的有向图,此时划分结束,建立汇点 子图3的副本。
[0145] 本领域人员可以很容易的了解到,上述三个汇点子图之间的关系为:汇点子图3^ 汇点子图汇点子图1,其中,^符号表示包含关系,例如,汇点子图汇点子图2,表示 汇点子图3包含汇点子图2,即汇点子图2为汇点子图3的一部分;
[0146] 值得说明的是,本实施例选取结点的数目由预设策略规定,具体数字不作任何限 定,仅为了对本实施例的详细说明。
[0147] 对于图4,通过上述对于图3相同的方法,也可以将如图4所示的反向图建立反 向图的汇点子图,相应的,反向图的汇点子图之间也会是依次包含的关系,具体过程不再赘 述。
[0148] 202 :将所有有向图的汇点子图根据包含关系建立关系树,其中,被包含的有向图 的汇点子图称为有向图的子汇点子图,包含的有向图的汇点子图称为有向图的父汇点子 图,以及将所有反向图的汇点子图根据包含关系建立关系树,其中,被包含的反向图的汇点 子图称为反向图的子汇点子图,包含的反向图的汇点子图称为反向图的父汇点子图;
[0149] 示例性的,在本实施例中,根据上述的有向图以及反向图的汇点子图之间的关系, 本领域人员可以很容易的得到:
[0150] 在有向图的汇点子图中,汇点子图3为汇点子图2的有向图的父汇点子图,相应 的,汇点子图2为汇点子图3的有向图的子汇点子图;与此对应的,汇点子图2为汇点子图 1的有向图的父汇点子图,相应的,汇点子图1为汇点子图1的有向图的子汇点子图;
[0151] 反向图的汇点子图中,父子汇点子图的关系如上述关系相同,不再赘述。
[0152] 值得注意的是,在子图划分完毕并且子图之间的关系建立完毕之后,可以通过并 行计算全部汇点子图的最小割集并通过汇点子图之间的通信获得有向图的等效汇点,以及 并行计算全部源点子图的最小割集并通过源点子图之间的通信获得有向图的等效源点,其 中,等效汇点为最大的汇点子图的最小割集,等效源点为最大的源点子图的最小割集;
[0153] 具体的,如前有向图与反向图之间的对偶关系,本领域人员可以很容易的了解,计 算有向图的等效源点的方法也就是计算反向图的等效汇点的方法,因此我们可以分别对有 向图和反向图的汇点子图进行并行计算,而且计算方法和计算流程均可以相同,本实施例 中,对有向图以及反向图的汇点子图的计算方法和计算流程设定为相同,于是可以只需要 对有向图的汇点子图的计算方法和计算流程做出详细的描述,本领域技术人员可以很容易 的将该过程应用于对反向图的汇点子图的计算中。
[0154] 203:在全部有向图的汇点子图上根据最大流算法并行计算全部有向图的汇点子 图的最小割;
[0155] 示例性的,在本实施例中,每个有向图的汇点子图均对应一个计算线程,在其副本 上通过最大流算法计算每个汇点子图的最小割,优选的,最大流算法可以是最高标号推进 重标记 Highest-label Push-relabel 算法。
[0156] 204:任一个有向图子汇点子图计算完毕时,将其汇点所在的最小割通知其父汇点 子图;
[0157] 205 :有向图的父汇点子图合并子汇点子图的汇点所在的最小割,去除有向图子汇 点子图的汇点所在的最小割中的结点;
[0158] 示例性的,有向图的父汇点子图在接收到有向图子汇点子图发送的有向图子汇点 子图的汇点所在的最小割后,停止计算,并在有向图的父汇点子图上生成两个结点集合,其 中,一个结点集合为由有向图子汇点子图的汇点所在的最小割组成的待去除结点集合,另 一个结点集合为在有向图中有向图子汇点子图的汇点所在的最小割以外的第一非去除结 点组成的非去除结点集合;
[0159] 遍历待去除结点集合,若其中的任一结点仅与待去除结点集合中的结点连接,则 该结点为去除结点,否则为第二非去除结点;
[0160] 计算所有第二非去除结点的溢出值,得到去除之后的有向图的父汇点子图,其中, 溢出值为第二非去除结点的流进量减去第二非去除结点的流出量;
[0161] 在去除结点之后的有向图的父汇点子图上继续计算其最小割。
[0162] 具体的在本实施例中,以汇点子图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,其余为非去除结点集合;
[0163] 遍历汇点子图2的待去除结点集合,可以知道,结点8,结点10均和非去除结点集 合中的结点连接,因此,结点8和结点10均为第二非去除结点,随后对汇点子图3的第二非 去除结点进行溢出值计算,因此,汇点子图2没有去除结点,优选的,对于第二非去除结点, 我们可以将其整体看成一个汇点子图2的等效汇点,以使得减少后续汇点子图2的最小割 计算的计算量;
[0164] 继续计算汇点子图2的最小割。
[0165] 进一步的,汇点子图2计算完毕时,可以得到汇点子图2的最小割为图5 (B)的点 虚线圆圈所示,包括结点7,结点8和结点10,并且汇点子图2的最小割通知汇点子图3,由 于汇点子图2比汇点子图3要小,此时汇点子图3仍在计算,汇点子图3在接收到汇点子图 2通知的最小割之后,停止计算,并在汇点子图3中生成两个结点集合,其中待去除结点集 合包括结点7,结点8,结点10,其余为非去除结点集合;
[0166] 遍历汇点子图3的待去除结点集合,可以知道,结点7,结点8,结点10均和非去除 结点集合中的结点连接,因此汇点子图3的第二非去除结点为结点7,结点8和结点10,随 后对汇点子图3的第二非去除结点进行溢出值计算,优选的,将汇点子图3的第二非去除结 点整体看成一个汇点子图3的等效汇点,以使得减少后续汇点子图3的最小割计算的计算 量;
[0167] 继续计算汇点子图3的最小割。
[0168] 206 :计算完成,得到有向图的等效汇点T* ;
[0169] 示例性的,计算完成,可以包括以下任意一种方式:
[0170] 最大的有向图的汇点子图计算完毕时,计算完成,在本实施例中,当汇点子图3的 最小割计算完毕时,等效汇点计算完成,可以得到等效汇点T* ;
[0171] 或者,
[0172] 若有向图的父汇点子图只能够去除有向图子汇点子图的汇点所在的最小割中的 一个结点时,检查是否完成等效汇点的计算;
[0173] 本实施例中,当汇点子图3只能够去除汇点子图2的最小割中的结点7时,可以将 当前进行等效源点计算的结果进行合并,如果此时仅由汇点子图3的最小割计算结果与当 前反向图的最大汇点子图的最小割计算结果就能够表示为如图3所示的有向图,则计算完 成,得到等效汇点T*,在本实施例中,优选为最大的有向图的汇点子图计算完毕时,计算完 成,在本实施例中,当汇点子图3的最小割计算完毕时,等效汇点计算完成,可以得到等效 汇点T*。
[0174] 相应的,对于如图4所示的反向图,本领域技术人员可以很容易的通过步骤 203-206的方式得到反向图的等效汇点,也就是有向图的等效源点S*,在此不再赘述。
[0175] 207 :根据有向图的等效汇点和有向图的等效源点连接的所有边获取有向图的最 小割;
[0176] 示例性的,本实施例中,最小割为如图6所示的等效源点与等效汇点的连接的边 的集合。
[0177] 本实施例提供了一种有向图的最小割获取方法,通过具有依次包含关系的子图的 形式对结点集合进行有向图最小割获取的方法和设备,减少了并行计算时的活跃结点间的 通信次数和同步次数,提高了性能。
[0178] 参见图7,为本发明实施例提供的一种有向图的最小割获取设备70的装置示意 图,在本实施例中,仅通过如图3所示的有向图进行示例性说明,其中,圆圈内的数字表示 结点序号,有向边上的数字表示该有向边上的流量,从图3中我们容易发现,结点0为源点, 结点10为汇点,设备70可以包括:
[0179] 第一子图划分单元701,用于按照预设策略,将有向图划分至少两个汇点子图,其 中,全部汇点子图均包括所诉有向图的汇点,且全部汇点子图之间为依次包含关系;
[0180] 第二子图划分单元702,用于按照预设策略,将有向图划分成至少两个源点子图, 其中,全部源点子图均包含有向图的源点,且全部源点子图之间为依次包含关系;
[0181] 第一计算单元703,用于并行计算全部汇点子图的最小割集并通过汇点子图之间 的通信获得有向图的等效汇点,其中,等效汇点为最大的汇点子图的最小割集;
[0182] 第二计算单元704,用于并行计算全部源点子图的最小割集并通过源点子图之间 的通信获得有向图的等效源点,其中,等效源点为最大的源点子图的最小割集;
[0183] 获取单元705,用于根据有向图的等效汇点和有向图的等效源点连接的所有边获 取有向图的最小割。
[0184] 示例性的,如图8所示,第一子图划分单元701,进一步可以用于从有向图的汇点 出发,按照预设策略,将有向图划分成至少两个有向图的汇点子图,并分别为每个有向图的 汇点子图建立副本;
[0185] 示例性的,如图8所示,第二子图划分单元702,包括:
[0186] 反向子单元7021,用于将有向图进行反向变化得到反向图,其中,反向变化包括, 将有向图中的所有边进行反向,有向图的源点变成反向图的汇点,有向图的汇点变成反向 图的源点;
[0187] 示例性的,在本实施例中,反向子单元7021可以将如图3所示的有向图进行反向 变化如图4所示的反向图,可以得到,结点10为反向图的源点,结点0为反向图的汇点,本 领域技术人员可以理解,反向图与有向图为对偶关系;
[0188] 反向子图划分子单兀7022,用于从反向图的汇点出发,按照预设策略,将反向图划 分成至少两个反向图的汇点子图,并分别为每个反向图的源点子图建立副本,其中,至少两 个反向图的汇点子图为至少两个有向图的源点子图。
[0189] 示例性的,在本实施例中,第一子图划分单元701和反向子图划分子单元7022可 以分别从图3和图4的汇点出发,划分有向图和反向图的汇点子图;
[0190] 具体的,对于图3,如图中点虚线表示,第一子图划分单元701首先从作为汇点的 结点10出发,通过反向宽度优先搜索方法选取3个结点组成汇点子图1,并且将图3中除 去汇点子图1的部分看成一个整体S s,并建立副本,可以得到如图5 (A)所示的汇点子图1 的副本;
[0191] 接着从汇点子图1出发,如图3中点划线表示,继续通过反向宽度优先搜索方法选 取4个结点组成汇点子图2,并且将图3中除去汇点子图2的部分看成一个整体S ##,并建立 副本,可以得到如图5 (B)所示的汇点子图2的副本;
[0192] 然后从汇点子图2出发,继续通过反向宽度优先搜索的方法选取4个结点组成汇 点子图3,如图5(C),此时,汇点子图3即为如图3所示的有向图,此时划分结束,建立汇点 子图3的副本。
[0193] 本领域人员可以很容易的了解到,上述三个汇点子图之间的关系为依次包含关 系:汇点子图汇点子图2^汇点子图1,其中,e符号表示包含关系,例如,汇点子图 汇点子图2,表示汇点子图3包含汇点子图2,即汇点子图2为汇点子图3的一部分;
[0194] 值得说明的是,本实施例选取结点的数目由预设策略规定,具体数字不作任何限 定,仅为了对本实施例的详细说明。
[0195] 相应的,对于图4,反向子图划分子单兀7022可以通过与第一子图划分单兀701相 同的方式得到反向图的汇点子图,相应的,反向图的汇点子图之间也是依次包含的关系,具 体过程不再赘述。
[0196] 示例性的,如图8所示,设备70还可以包括:建立关系单元706,
[0197] 用于将所有有向图的汇点子图根据包含关系建立关系树,其中,被包含的有向图 的汇点子图称为有向图的子汇点子图,包含的有向图的汇点子图称为有向图的父汇点子 图,以及将所有反向图的汇点子图根据包含关系建立关系树,其中,被包含的反向图的汇点 子图称为反向图的子汇点子图,包含的反向图的汇点子图称为反向图的父汇点子图。
[0198] 示例性的,在本实施例中,建立关系单元706可以根据上述的有向图以及反向图 的汇点子图之间的关系,可以很容易的得到:
[0199] 在有向图的汇点子图中,汇点子图3为汇点子图2的有向图的父汇点子图,相应 的,汇点子图2为汇点子图3的有向图的子汇点子图;与此对应的,汇点子图2为汇点子图 1的有向图的父汇点子图,相应的,汇点子图1为汇点子图1的有向图的子汇点子图;
[0200] 反向图的汇点子图中,父子汇点子图的关系如上述关系相同,不再赘述。
[0201] 值得注意的是,在子图划分完毕并且子图之间的关系建立完毕之后,可以通过并 行计算全部汇点子图的最小割集并通过汇点子图之间的通信获得有向图的等效汇点,以及 并行计算全部源点子图的最小割集并通过源点子图之间的通信获得有向图的等效源点,其 中,等效汇点为最大的汇点子图的最小割集,等效源点为最大的源点子图的最小割集;
[0202] 具体的,如前有向图与反向图之间的对偶关系,本领域人员可以很容易的了解,计 算有向图的等效源点的方法也就是计算反向图的等效汇点的方法,因此我们可以分别对有 向图和反向图的汇点子图进行并行计算,而且计算方法和计算流程均可以相同,本实施例 中,第一计算单元703对有向图的汇点子图的计算方法和计算流程与第二计算单元704对 反向图的汇点子图的计算方法和计算流程相同,本实施例只需要将第一计算单元703对有 向图的汇点子图的计算方法和计算流程做出详细的描述,相应的,第二计算单元704对反 向图的汇点子图的计算方法和计算流程,本领域技术人员可以无需通过创造性的劳动得 到。
[0203] 示例性的,如图8所示,第一计算单元703包括:
[0204] 第一计算子单元7031,用于在全部有向图的汇点子图上根据最大流算法并行计算 全部有向图的汇点子图的最小割;
[0205] 示例性的,在本实施例中,第一计算子单元7031可以将每个有向图的汇点子图均 对应一个计算线程,在其副本上通过最大流算法计算每个汇点子图的最小割,优选的,最大 流算法可以是最高标号推进重标记Highest-Iabel Push-relabel算法。
[0206] 第一通知子单元7032,用于任一个有向图子汇点子图计算完毕时,将其汇点所在 的最小割通知其父汇点子图;
[0207] 第一合并子单元7033,用于有向图的父汇点子图合并子汇点子图的汇点所在的最 小割,去除有向图子汇点子图的汇点所在的最小割中的结点;
[0208] 进一步的,如图8所示,第一合并子单元7033包括,
[0209] 第一计算停止模块70331,用于有向图的父汇点子图在接收到有向图子汇点子图 发送的有向图子汇点子图的汇点所在的最小割后,停止计算;
[0210] 第一生成模块70332,用于在有向图的父汇点子图上生成两个结点集合,其中,一 个结点集合为由有向图子汇点子图的汇点所在的最小割组成的待去除结点集合,另一个结 点集合为在有向图中有向图子汇点子图的汇点所在的最小割以外的第一非去除结点组成 的非去除结点集合;
[0211] 第一结点去除模块70333,用于遍历待去除结点集合,若其中的任一结点仅与待去 除结点集合中的结点连接,则该结点为去除结点,否则为第二非去除结点;
[0212] 第一溢出值计算模块70334,用于计算所有第二非去除结点的溢出值,得到去除之 后的有向图的父汇点子图,其中,溢出值为第二非去除结点的流进量减去第二非去除结点 的流出量;
[0213] 第一计算恢复模块70335,用于在去除结点之后的有向图的父汇点子图上继续计 算其最小割。
[0214] 示例性的,在本实施例中,以汇点子图1为例,第一计算子单元7031在如图5 (A) 所示的汇点子图1的副本上通过Highest-Iabel Push-relabel算法,可以得到汇点子图1 的最小割为图5 (A)的椭圆圈所示,包括结点8和结点10 ;
[0215] 第一通知子单元7032将汇点子图1将最小割通知给如图5 (B)所示的汇点子图 2,由于汇点子图1比汇点子图2要小,此时汇点子图2仍在计算,汇点子图2在接收到汇点 子图1通知的最小割之后,第一合并子单元7033所包括的第一计算停止模块70331停止汇 点子图2的计算,并且第一生成模块70332在汇点子图2中生成两个结点集合,其中待去除 结点集合包括结点8,结点10,其余为非去除结点集合;
[0216] 第一结点去除模块70333用于遍历汇点子图2的待去除结点集合,可以知道,结点 8,结点10均和非去除结点集合中的结点连接,因此,结点8和结点10均为第二非去除结 点,第一溢出值计算模块70334对汇点子图2的第二非去除结点计算溢出值,因此,汇点子 图2没有去除结点,优选的,对于第二非去除结点,我们可以将其整体看成一个汇点子图2 的等效汇点,以使得减少后续汇点子图2的最小割计算的计算量;
[0217] 第一计算恢复模块70335继续计算汇点子图2的最小割。
[0218] 进一步的,第一计算子单元7031汇点子图2计算完毕时,可以得到汇点子图2的 最小割为图5 (B)的点虚线圆圈所示,包括结点7,结点8和结点10,并且第一通知子单元 7032将汇点子图2的最小割通知汇点子图3,由于汇点子图2比汇点子图3要小,此时汇点 子图3仍在计算,汇点子图3在接收到汇点子图2通知的最小割之后,第一合并子单元7033 所包括的第一计算停止模块70331停止计算,并在汇点子图3中生成两个结点集合,其中待 去除结点集合包括结点7,结点8,结点10,其余为非去除结点集合;
[0219] 第一结点去除模块70333遍历汇点子图3的待去除结点集合,可以知道,结点7,结 点8,结点10均和非去除结点集合中的结点连接,因此汇点子图3的第二非去除结点为结点 7,结点8和结点10,第一溢出值计算模块70334对汇点子图3的第二非去除结点计算溢出 值;优选的,将汇点子图3的第二非去除结点整体看成一个汇点子图3的等效汇点,以使得 减少后续汇点子图3的最小割计算的计算量;
[0220] 第一计算恢复模块70335继续计算汇点子图3的最小割。
[0221] 第一计算完成子单元7034,用于得到等效汇点;
[0222] 进一步的,第一计算完成子单元7034,用于:
[0223] 最大的有向图的汇点子图计算完毕时,计算完成;
[0224] 示例性的,当汇点子图3的最小割计算完毕时,第一计算完成子单元7034得到有 向图的等效汇点T* ;
[0225] 或者,
[0226] 若有向图的父汇点子图只能够去除有向图子汇点子图的汇点所在的最小割中的 一个结点时,检查是否完成等效汇点的计算。
[0227] 示例性的,本实施例中,当汇点子图3只能够去除汇点子图2的最小割中的结点7 时,第一计算完成子单元7034可以将当前进行等效源点计算的结果进行合并,如果此时仅 由汇点子图3的最小割计算结果与当前反向图的最大汇点子图的最小割计算结果就能够 表示为如图3所示的有向图,则计算完成,得到等效汇点T* ;
[0228] 在本实施例中,优选为最大的有向图的汇点子图计算完毕时,计算完成,在本实施 例中,当汇点子图3的最小割计算完毕时,等效汇点计算完成,可以得到等效汇点T*。
[0229] 示例性的,如图8所示,第二计算单元704包括:
[0230] 第二计算子单元7041,用于在全部反向图的汇点子图上根据最大流算法并行计算 全部反向图的汇点子图的最小割;
[0231] 第二通知子单元7042,用于任一个反向图的子汇点子图计算完毕时,将其汇点所 在的最小割通知其父汇点子图;
[0232] 第二合并子单元7043,用于反向图的父汇点子图合并其子汇点子图的汇点所在的 最小割,去除反向图的子汇点子图的汇点所在的最小割中的结点;
[0233] 进一步的,如图8所示,第二合并子单元7043,包括:
[0234] 第二计算停止模块70431,用于有向图的父汇点子图在接收到反向图的子汇点子 图发送的反向图的子汇点子图的汇点所在的最小割后,停止计算;
[0235] 第二生成模块70432,用于在反向图的父汇点子图上生成两个结点集合,其中,一 个结点集合为由反向图的子汇点子图的汇点所在的最小割组成的待去除结点集合,另一个 结点集合为在反向图中反向图的子汇点子图的汇点所在的最小割以外的第一非去除结点 组成的非去除结点集合;
[0236] 第二结点去除模块70433,用于遍历待去除结点集合,若其中的任一结点仅与待去 除结点集合中的结点连接,则该结点为去除结点,否则为第二非去除结点;
[0237] 第二溢出值计算模块70434,用于计算所有第二非去除结点的溢出值,得到去除之 后的反向图的父汇点子图,其中,溢出值为第二非去除结点的流进量减去第二非去除结点 的流出量;
[0238] 第二计算恢复模块70435,用于在去除结点之后的反向图的父汇点子图上继续计 算其最小割。
[0239] 第二计算完成子单元7044,用于得到反向图的等效汇点,
[0240] 进一步的,第二计算完成子单元7044,用于:
[0241] 最大的反向图的汇点子图计算完毕时,计算完成;
[0242] 或者,
[0243] 若反向图的父汇点子图只能够去除反向图的子汇点子图的汇点所在的最小割中 的一个结点时,检查是否完成等效汇点的计算。
[0244] 相应的,对于如图4所示的反向图,本领域技术人员可以很容易的通过第一计算 单元703及其所包含的子单元与模块对有向图的汇点子图的计算方法和计算流程得到第 二计算单元704及其所包含的子单元与模块对反向图的汇点子图的计算方法和计算流程, 在此不再赘述。
[0245] 示例性的,本实施例中,获取单元705得到有向图的最小割为如图6所示的等效源 点与等效汇点的连接的边的集合。
[0246] 本实施例提供了一种有向图的最小割获取设备70,通过具有依次包含关系的子图 的形式对结点集合进行有向图最小割获取的方法和设备,减少了并行计算时的活跃结点间 的通信次数和同步次数,提高了性能。
[0247] 参见图9,为本发明本实施例提供的一种有向图的最小割获取设备70的硬件结构 图,在本实施例中,仅通过如图3所示的有向图进行示例性说明,其中,圆圈内的数字表示 结点序号,有向边上的数字表示该有向边上的流量,从图3中我们容易发现,结点0为源点, 结点10为汇点,设备70可以包括:至少一个处理器901 ;至少一个输入单元902,用于将有 向图输入至设备70,具体形式可以是扫描仪,本发明实施例对此不作任何限定;存储器903 和通信总线904,用于用于实现这些装置之间的连接通信。
[0248] 其中,通信总线904可以是工业标准体系结构(Industry Standard Architecture,简称为ISA)总线、外部设备互连(Peripheral Component,简称为PCI)总线 或扩展工业标准体系结构(Extended Industry Standard Architecture,简称为EISA)总 线等。该总线904可以分为地址总线、数据总线、控制总线等。为便于表示,图9中仅用一 条粗线表示,但并不表示仅有一根总线或一种类型的总线。
[0249] 存储器903用于存储可执行程序代码,该程序代码包括计算机操作指令。存储器 903可能包含高速RAM存储器,也可能还包括非易失性存储器(non-volatile memory),例 如至少一个磁盘存储器。
[0250] 处理器901可能是一个中央处理器(Central Processing Unit,简称为CPU),或 者是特定集成电路(Application Specific Integrated Circuit,简称为ASIC),或者是被 配置成实施本发明实施例的一个或多个集成电路。
[0251] 处理器901用于执行存储器704中存储的可执行程序代码,例如计算机程序来运 行与可执行代码对应的程序。当有向图输入至设备70后,处理器901用于:
[0252] 按照预设策略,分别将有向图划分成至少两个汇点子图和至少两个源点子图,其 中,全部汇点子图均包含有向图的汇点,且全部汇点子图之间为依次包含关系;全部源点子 图均包含有向图的源点,且全部源点子图之间为依次包含关系;
[0253] 并行计算全部汇点子图的最小割集并通过汇点子图之间的通信获得有向图的等 效汇点,以及并行计算全部源点子图的最小割集并通过源点子图之间的通信获得有向图的 等效源点,其中,等效汇点为最大的汇点子图的最小割集,等效源点为最大的源点子图的最 小害Ij集;
[0254] 根据有向图的等效汇点和有向图的等效源点连接的所有边获取有向图的最小割。
[0255] 示例性的,处理器901按照预设策略,分别将有向图划分成至少两个汇点子图和 至少两个源点子图,具体可以包括:
[0256] 处理器901将有向图进行反向变化得到反向图,其中,反向变化包括,将有向图中 的所有边进行反向,有向图的源点变成反向图的汇点,有向图的汇点变成反向图的源点;
[0257] 处理器901分别从有向图和反向图的汇点出发,按照预设策略,分别将有向图和 反向图划分成至少两个有向图的汇点子图以及至少两个反向图的汇点子图,并分别为每个 有向图的汇点子图和反向图的源点子图建立副本,其中,至少两个反向图的汇点子图为至 少两个有向图的源点子图。
[0258] 示例性的,在并行计算全部汇点子图的最小割集并通过汇点子图之间的通信获得 有向图的等效汇点,以及并行计算全部源点子图的最小割集并通过源点子图之间的通信获 得有向图的等效源点之前,处理器901还可以用于:
[0259] 将所有有向图的汇点子图根据包含关系建立关系树,其中,被包含的有向图的汇 点子图称为有向图的子汇点子图,包含的有向图的汇点子图称为有向图的父汇点子图,以 及将所有反向图的汇点子图根据包含关系建立关系树,其中,被包含的反向图的汇点子图 称为反向图的子汇点子图,包含的反向图的汇点子图称为反向图的父汇点子图。
[0260] 示例性的,处理器901并行计算全部汇点子图的最小割集并通过汇点子图之间的 通信获得有向图的等效汇点,具体可以包括:
[0261] 处理器901在全部有向图的汇点子图上根据最大流算法并行计算全部有向图的 汇点子图的最小割;
[0262] 处理器901在任一个有向图子汇点子图计算完毕时,将其汇点所在的最小割通知 其父汇点子图;
[0263] 处理器901将有向图的父汇点子图合并子汇点子图的汇点所在的最小割,去除有 向图子汇点子图的汇点所在的最小割中的结点;
[0264] 计算完成,处理器901得到等效汇点。
[0265] 进一步的,处理器901将有向图的父汇点子图合并有向图的子汇点子图的汇点所 在的最小割,去除有向图子汇点子图的汇点所在的最小割中的结点,具体可以包括:
[0266] 处理器901使得有向图的父汇点子图在接收到有向图子汇点子图发送的有向图 子汇点子图的汇点所在的最小割后,停止计算,并在有向图的父汇点子图上生成两个结点 集合,其中,一个结点集合为由有向图子汇点子图的汇点所在的最小割组成的待去除结点 集合,另一个结点集合为在有向图中有向图子汇点子图的汇点所在的最小割以外的第一非 去除结点组成的非去除结点集合;
[0267] 处理器901遍历待去除结点集合,若其中的任一结点仅与待去除结点集合中的结 点连接,则该结点为去除结点,否则为第二非去除结点;
[0268] 处理器901计算所有第二非去除结点的溢出值,得到去除之后的有向图的父汇点 子图,其中,溢出值为第二非去除结点的流进量减去第二非去除结点的流出量;
[0269] 处理器901在去除结点之后的有向图的父汇点子图上继续计算其最小割。
[0270] 示例性的,计算完成,包括;
[0271] 处理器901将最大的有向图的汇点子图计算完毕时,计算完成;
[0272] 或者,
[0273] 若有向图的父汇点子图只能够去除有向图子汇点子图的汇点所在的最小割中的 一个结点时,处理器901检查是否完成等效汇点的计算。
[0274] 相应的,
[0275] 处理器901并行计算全部源点子图的最小割集并通过源点子图之间的通信获得 有向图的等效源点,可以包括:
[0276] 处理器901在全部反向图的汇点子图上根据最大流算法并行计算全部反向图的 汇点子图的最小割;
[0277] 处理器901在任一个反向图的子汇点子图计算完毕时,将其汇点所在的最小割通 知其父汇点子图;
[0278] 处理器901将反向图的父汇点子图合并其子汇点子图的汇点所在的最小割,去除 反向图的子汇点子图的汇点所在的最小割中的结点;
[0279] 计算完成,处理器901得到反向图的等效汇点。
[0280] 进一步的,处理器901将反向图的父汇点子图合并子汇点子图的汇点所在的最小 害I],去除反向图的子汇点子图的汇点所在的最小割中的结点,具体可以包括:
[0281] 处理器901使得反向图的父汇点子图在接收到反向图的子汇点子图发送的反向 图的子汇点子图的汇点所在的最小割后,停止计算,并在反向图的父汇点子图上生成两个 结点集合,其中,一个结点集合为由反向图的子汇点子图的汇点所在的最小割组成的待去 除结点集合,另一个结点集合为在反向图中反向图的子汇点子图的汇点所在的最小割以外 的第一非去除结点组成的非去除结点集合;
[0282] 处理器901遍历待去除结点集合,若其中的任一结点仅与待去除结点集合中的结 点连接,则该结点为去除结点,否则为第二非去除结点;
[0283] 处理器901计算所有第二非去除结点的溢出值,得到去除之后的反向图的父汇点 子图,其中,溢出值为第二非去除结点的流进量减去第二非去除结点的流出量;
[0284] 处理器901在去除之后的父汇点子图上继续计算其最小割。
[0285] 示例性的,计算完成,包括;
[0286] 处理器901在最大的反向图的汇点子图计算完毕时,计算完成;
[0287] 或者,
[0288] 若反向图的父汇点子图只能够去除反向图的子汇点子图的汇点所在的最小割中 的一个结点时,处理器901检查是否完成等效汇点的计算。
[0289] 本实施例提供了一种有向图的最小割获取设备70,通过具有依次包含关系的子图 的形式对结点集合进行有向图最小割获取的方法和设备,减少了并行计算时的活跃结点间 的通信次数和同步次数,提高了性能。
[0290] 本领域普通技术人员可以理解:实现上述方法实施例的全部或部分步骤可以通过 程序指令相关的硬件来完成,前述的程序可以存储于一计算机可读取存储介质中,该程序 在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括:ROM、RAM、磁碟或者 光盘等各种可以存储程序代码的介质。
[0291] 以上所述,仅为本发明的【具体实施方式】,但本发明的保护范围并不局限于此,任何 熟悉本【技术领域】的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵 盖在本发明的保护范围之内。因此,本发明的保护范围应以所述权利要求的保护范围为准。
【权利要求】
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任一项所述的设备,其特征在于,所述第一计算单元包括: 第一计算子单元,用于在全部所述有向图的汇点子图上根据最大流算法并行计算全部 所述有向图的汇点子图的最小割; 第一通知子单元,用于任一个所述有向图子汇点子图计算完毕时,将其汇点所在的最 小割通知其父汇点子图; 第一合并子单元,用于所述有向图的父汇点子图合并子汇点子图的汇点所在的最小 害IJ,去除所述有向图子汇点子图的汇点所在的最小割中的结点; 第一计算完成子单元,用于得到所述等效汇点。
14. 根据权利要求13所述的设备,其特征在于,所述第一合并子单元,包括: 第一计算停止模块,用于所述有向图的父汇点子图在接收到所述有向图子汇点子图发 送的所述有向图子汇点子图的汇点所在的最小割后,停止计算; 第一生成模块,用于在所述有向图的父汇点子图上生成两个结点集合,其中,一个结点 集合为由所述有向图子汇点子图的汇点所在的最小割组成的待去除结点集合,另一个结点 集合为在所述有向图中所述有向图子汇点子图的汇点所在的最小割以外的第一非去除结 点组成的非去除结点集合; 第一结点去除模块,用于遍历所述待去除结点集合,若其中的任一结点仅与所述待去 除结点集合中的结点连接,则该所述结点为去除结点,否则为第二非去除结点; 第一溢出值计算模块,用于计算所有所述第二非去除结点的溢出值,得到去除之后的 所述有向图的父汇点子图,其中,所述溢出值为所述第二非去除结点的流进量减去所述第 二非去除结点的流出量; 第一计算恢复模块,用于在去除结点之后的所述有向图的父汇点子图上继续计算其最 小割。
15. 根据权利要求14所述的设备,其特征在于,所述第一计算完成子单元,进一步用 于: 所述最大的所述有向图的汇点子图计算完毕时,计算完成; 或者, 若所述有向图的父汇点子图只能够去除所述有向图子汇点子图的汇点所在的最小割 中的一个结点时,检查是否完成等效汇点的计算。
16. 根据权利要求11或12所述的设备,其特征在于,所述第二计算单元包括: 第二计算子单元,用于在全部所述反向图的汇点子图上根据最大流算法并行计算全部 所述反向图的汇点子图的最小割; 第二通知子单元,用于任一个所述反向图的子汇点子图计算完毕时,将其汇点所在的 最小割通知其父汇点子图; 第二合并子单元,用于所述反向图的父汇点子图合并其子汇点子图的汇点所在的最小 害I],去除所述反向图的子汇点子图的汇点所在的最小割中的结点; 第二计算完成子单元,用于得到所述反向图的等效汇点。
17. 根据权利要求16所述的设备,其特征在于,所述第二合并子单元,包括: 第二计算停止模块,用于所述反向图的父汇点子图在接收到所述反向图的子汇点子图 发送的所述反向图的子汇点子图的汇点所在的最小割后,停止计算; 第二生成模块,用于在所述反向图的父汇点子图上生成两个结点集合,其中,一个结点 集合为由所述反向图的子汇点子图的汇点所在的最小割组成的待去除结点集合,另一个结 点集合为在所述反向图中所述反向图的子汇点子图的汇点所在的最小割以外的第一非去 除结点组成的非去除结点集合; 第二结点去除模块,用于遍历所述待去除结点集合,若其中的任一结点仅与所述待去 除结点集合中的结点连接,则该所述结点为去除结点,否则为第二非去除结点; 第二溢出值计算模块,用于计算所有所述第二非去除结点的溢出值,得到去除之后的 所述反向图的父汇点子图,其中,所述溢出值为所述第二非去除结点的流进量减去所述第 二非去除结点的流出量; 第二计算恢复模块,用于在去除结点之后的所述反向图的父汇点子图上继续计算其最 小割。
18.根据权利要求17所述的设备,其特征在于,所述第二计算完成子单元,进一步用 于: 所述最大的所述反向图的汇点子图计算完毕时,计算完成; 或者, 若所述反向图的父汇点子图只能够去除所述反向图的子汇点子图的汇点所在的最小 割中的一个结点时,检查是否完成等效汇点的计算。
【文档编号】G06F9/46GK104239126SQ201310244090
【公开日】2014年12月24日 申请日期:2013年6月19日 优先权日:2013年6月19日
【发明者】王蕾, 崔慧敏, 冯晓兵 申请人:华为技术有限公司, 中国科学院计算技术研究所
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1