You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Boykov-Kolmogorov算法反向弧负流含义及Boost示例疑问

关于Boost Boykov-Kolmogorov示例修改后的问题解答

问题1:为何出现重复弧与0/负流值

注释掉if (capacity[*ei] > 0)后,代码会遍历节点的所有出边,包括残差网络中的反向弧。Boost的最大流实现中,每条原始正向边都会对应一条反向残差边:

  • 原始的6->4边如果未被分配流,其流值为0,会被输出为f 6 4 0;
  • 而如果存在4->6的正向流(比如4单位),残差网络中会自动生成6->4的反向弧,其流值为-4(表示可以“撤销”4单位的4->6流),遍历6的出边时这条反向弧也会被输出,就出现了f 6 4 -4。
    两者属于残差网络中不同的边对象,只是起点终点相同,所以看起来是重复弧。

问题2:节点净流入与负流的解读

  1. Boykov-Kolmogorov算法严格保证除源点和汇点外,所有节点的净流入为0,这是流网络的基本守恒性质,算法实现不会违背这一点。
  2. 示例中7->6 -4的负流,本质是残差网络反向弧的流值表示:它对应正向弧6->7上有4单位的流,反向弧的负流用来记录“可以从7向6推送最多4单位的反向流”(也就是撤销原6->7的流)。实际流的方向是6→7,流量4;负流只是残差网络的内部表示,不是实际的反向流动。

内容的提问来源于stack exchange,提问作者Tryer

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.29 06:03:19