一种最优网络最大流算法的选择方法和设备的制作方法

文档序号:6507755阅读:159来源:国知局
一种最优网络最大流算法的选择方法和设备的制作方法
【专利摘要】本发明实施例提供一种最优网络最大流算法的选择方法和设备。涉及网络最大流领域,能够根据不同的网络流图确定最优的网络最大流算法。该方法包括:算法选择设备获取网络流图,并根据该网络流图得到第一残量网络;获取操作算法集合,其中,该操作算法集合包括至少两个算法,在该第一残量网络中通过该至少两个算法并行进行预流推进,得到第二残量网络,并在该第二残量网络中确定该至少两个算法对应的关键边的数量,确定该关键边的数量的最大值对应的算法为该网络流图的最优网络最大流算法。本发明实施例用于网络最大流算法的选择。
【专利说明】一种最优网络最大流算法的选择方法和设备

【技术领域】
[0001] 本发明涉及网络最大流领域,尤其涉及一种最优网络最大流算法的选择方法和设 备。

【背景技术】
[0002] 获取网络最大流问题是图论和组合优化中的经典问题,它具有广泛的应用背景。
[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] 结合第四种可能的实现方式,在第五种可能的实现方式中,所述处理单元还用于, 在通过所述至少两个算法并行进行预流推进时,获取被重标识的边数,根据所述算法模板 获取更新参数,并在确定所述更新参数和所述被重标识的边数满足预设条件时,更新所有 结点到汇点的距离标识,以得到所述所有结点到汇点的新的距离标识,并根据所述所有结 点到汇点的新的距离标识得到所述第二残量网络。
[0047] 结合第四种可能的实现方式或第五种可能的实现方式,在第六种可能的实现方式 中,所述处理单元还用于,在确定所述管理活跃结点的数据结构不存在活跃结点时,则确定 汇点的流量为所述网络最大流。
[0048] 结合第二方面至第六种可能的实现方式中的任意一种可能的实现方式,在第七种 可能的实现方式中,所述获取单元还用于,在所述第一残量网络中通过所述至少两个算法 并行进行预流推进前,获取总线程数;
[0049] 所述处理单元还用于,配置对应所述至少两个算法的线程数,并在所述第一残量 网络中通过所述至少两个算法根据所述对应的线程数并行进行预流推进,其中,所述线程 数包括所述总线程数与所述至少两个算法的算法数量的比值。
[0050] 结合第七种可能的实现方式,在第八种可能的实现方式中,所述处理单元还用于, 在确定所述关键边的数量的最大值对应的算法为最优网络最大流算法后,根据所述关键边 的数量为所述至少两个算法重新配置线程数。
[0051] 采用上述方案,通过操作算法集合中的多种算法对网络流图进行预流推进,并在 预流推进后,将各算法对应的关键边的数量最多的算法确定为最优网络最大流算法,使得 在获取网络最大流的计算过程中,能够动态调整自适应不同的网络流图,得到最优性能的 算法,从而提1?网络最大流计算的效率。

【专利附图】

【附图说明】
[0052] 为了更清楚地说明本发明实施例的技术方案,下面将对实施例描述中所需要使用 的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本 领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的 附图。
[0053] 图1为本发明实施例提供的一种最优网络最大流算法的选择方法的流程示意图;
[0054] 图2为本发明实施例提供的另一种最优网络最大流算法的选择方法的流程示意 图;
[0055] 图3为本发明实施例提供的一种算法选择设备的结构示意图;
[0056] 图4为本发明实施例提供的另一种算法选择设备的结构示意图。

【具体实施方式】
[0057] 下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完 整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于 本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他 实施例,都属于本发明保护的范围。
[0058] 发明实施例提供一种最优网络最大流算法的选择方法,如图1所示,该方法的执 行主体为算法选择设备,包括:
[0059] S101、算法选择设备获取网络流图,并根据该网络流图得到第一残量网络。
[0060] 其中,该残量网络是通过对网络流图的变换得到的。
[0061] S102、算法选择设备获取操作算法集合。
[0062] 其中,该操作算法集合包括至少两个算法。
[0063] 具体地,该算法选择设备根据第一残量网络获取活跃结点,其中,活跃结点为入流 量大于出流量的结点,该算法选择设备根据算法模板获取该活跃结点对应的算法和数据结 构,并根据该算法和数据结构获得该操作算法集合。
[0064] 其中,该算法模板包括用户配置的管理活跃结点的数据结构和用户配置的对应该 活跃结点的算法以及该网络流图的数据结构。
[0065] 示例地,该算法模板包括主控部分,提供算法的框架;算法部分,可以由用户配置 至少两个算法;结点管理部分,包括获取的活跃结点以及用户配置的对应管理活跃结点的 数据结构(如bucket、FIFO_queue和stack中的任一种);更新事件,用于更新第一残量网络 中各结点到汇点的距离标识;更新参数,由用户进行配置;网络流图数据结构,用于存放残 量网络。
[0066] 其中,算法部分、结点管理部分和更新参数可以由用户进行配置。
[0067] 例如,上述算法框架可以为:
[0068]

【权利要求】
1. 一种最优网络最大流算法的选择方法,其特征在于,包括: 获取网络流图,并根据所述网络流图得到第一残量网络; 获取操作算法集合,其中,所述操作算法集合包括至少两个算法; 在所述第一残量网络中通过所述至少两个算法并行进行预流推进,得到第二残量网 络,并在所述第二残量网络中确定所述至少两个算法对应的关键边的数量; 确定所述关键边的数量的最大值对应的算法为所述网络流图的最优网络最大流算法。
2. 根据权利要求1所述的方法,其特征在于,所述根据所述网络流图得到第一残量网 络后,还包括: 根据所述第一残量网络获取活跃结点; 所述获取操作算法集合包括: 根据算法模板获取所述活跃结点对应的算法和数据结构;其中,所述算法模板包括用 户配置的管理所述活跃结点的数据结构和用户配置的对应所述活跃结点的算法以及所述 网络流图的数据结构; 根据所述算法和数据结构获得所述操作算法集合。
3. 根据权利要求2所述的方法,其特征在于,所述方法还包括: 对所述网络流图的数据结构加细粒度锁。
4. 根据权利要求2或3所述的方法,其特征在于,所述在所述第一残量网络中通过所述 至少两个算法并行进行预流推进包括: 根据所述至少两个算法从所述管理活跃结点的数据结构中获取对应的活跃结点; 根据所述至少两个算法并行将所述对应的活跃结点的盈余流通过距离标识比自己低 的相邻结点向汇点进行推进,其中,所述盈余流包括所述活跃结点的入流量与出流量的正 差值。
5. 根据权利要求4所述的方法,其特征在于,所述在将所述对应的活跃结点的盈余流 通过所述相邻结点向汇点进行推进后,还包括: 若所述相邻结点存在所述盈余流,则确定所述相邻结点为新的活跃结点,并将所述新 的活跃结点放入所述管理活跃结点的数据结构中。
6. 根据权利要求5所述的方法,其特征在于,在所述得到第二残量网络前,还包括: 在通过所述至少两个算法并行进行预流推进时,获取被重标识的边数; 根据所述算法模板获取更新参数; 在确定所述更新参数和所述被重标识的边数满足预设条件时,更新所有结点到汇点的 距离标识,以得到所述所有结点到汇点的新的距离标识; 所述得到第二残量网络包括: 根据所述所有结点到汇点的新的距离标识得到所述第二残量网络。
7. 根据权利要求5或6所述的方法,其特征在于,在确定所述管理活跃结点的数据结构 不存在活跃结点时,则确定汇点的流量为所述网络最大流。
8. 根据权利要求1至7任一项所述的方法,其特征在于,所述在所述第一残量网络中通 过所述至少两个算法并行进行预流推进前,所述方法还包括: 获取总线程数; 根据所述总线程数配置对应所述至少两个算法的线程数,其中,所述线程数包括所述 总线程数与所述至少两个算法的算法数量的比值; 所述在所述第一残量网络中通过所述至少两个算法并行进行预流推进包括: 在所述第一残量网络中通过所述至少两个算法根据所述对应的线程数并行进行预流 推进。
9. 根据权利要求8所述的方法,其特征在于,在确定所述关键边的数量的最大值对应 的算法为最优网络最大流算法后,还包括: 根据所述关键边的数量为所述至少两个算法重新配置线程数。
10. -种算法选择设备,其特征在于,包括: 获取单元,用于获取网络流图,并根据所述网络流图得到第一残量网络,并获取操作算 法集合,其中,所述操作算法集合包括至少两个算法; 处理单元,用于在所述第一残量网络中通过所述至少两个算法并行进行预流推进,得 到第二残量网络,并在预流推进后确定所述至少两个算法对应的关键边的数量,并在所述 第二残量网络中确定所述关键边的数量的最大值对应的算法为所述网络流图的最优网络 最大流算法。
11. 根据权利要求10所述的设备,其特征在于,所述获取单元还用于,根据所述网络流 图得到第一残量网络后,根据所述第一残量网络获取活跃结点; 所述获取单元具体用于,根据算法模板获取所述活跃结点对应的算法和数据结构,并 根据所述算法和数据结构获得所述操作算法集合,其中,所述算法模板包括用户配置的管 理所述活跃结点的数据结构和用户配置的对应所述活跃结点的算法以及所述网络流图的 数据结构。
12. 根据权利要求11所述的设备,其特征在于,所述处理单元还用于,对所述网络流图 的数据结构加细粒度锁。
13. 根据权利要求11或12所述的设备,其特征在于,所述处理单元具体用于,根据所述 至少两个算法从所述管理活跃结点的数据结构中获取对应的活跃结点,并根据所述至少两 个算法并行将所述对应的活跃结点的盈余流通过距离标识比自己低的相邻结点向汇点进 行推进,其中,所述盈余流包括所述活跃结点的入流量与出流量的正差值。
14. 根据权利要求13所述的设备,其特征在于,所述处理单元还用于,在将所述对应 的活跃结点的盈余流通过所述相邻结点向汇点进行推进后,若所述相邻结点存在所述盈余 流,则确定所述相邻结点为新的活跃结点,并将所述新的活跃结点放入所述管理活跃结点 的数据结构中。
15. 根据权利要求14所述的设备,其特征在于,所述处理单元还用于,在通过所述至少 两个算法并行进行预流推进时,获取被重标识的边数,根据所述算法模板获取更新参数,并 在确定所述更新参数和所述被重标识的边数满足预设条件时,更新所有结点到汇点的距离 标识,以得到所述所有结点到汇点的新的距离标识,并根据所述所有结点到汇点的新的距 离标识得到所述第二残量网络。
16. 根据权利要求14或15所述的设备,其特征在于,所述处理单元还用于,在确定所述 管理活跃结点的数据结构不存在活跃结点时,则确定汇点的流量为所述网络最大流。
17. 根据权利要求10至16任一项所述的设备,其特征在于,所述获取单元还用于,在所 述第一残量网络中通过所述至少两个算法并行进行预流推进前,获取总线程数; 所述处理单元还用于,配置对应所述至少两个算法的线程数,并在所述第一残量网络 中通过所述至少两个算法根据所述对应的线程数并行进行预流推进,其中,所述线程数包 括所述总线程数与所述至少两个算法的算法数量的比值。
18.根据权利要求17所述的设备,其特征在于,所述处理单元还用于,在确定所述关键 边的数量的最大值对应的算法为最优网络最大流算法后,根据所述关键边的数量为所述至 少两个算法重新配置线程数。
【文档编号】G06F17/30GK104376366SQ201310354026
【公开日】2015年2月25日 申请日期:2013年8月14日 优先权日:2013年8月14日
【发明者】王蕾, 崔慧敏, 吕方, 冯晓兵 申请人:华为技术有限公司, 中国科学院计算技术研究所
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1