我的网络看起来像这样:
基本上,我想知道如果移除/禁用可以断开源和漏极的绿色圆圈的最小数量。 (在这种情况下1)
我已经成功实现了Edmonds-Karp算法,但我不知道如何使用有向边建模网络,因此我得到了理想的结果。
如果我只更换节点之间的两个相对有向边,容量为1,我用EdmondsKarp得到最大流量为2,但我只需要删除1个绿色圆圈就可以打破网络。
如何将网络建模为节点并指向边缘?
答案 0 :(得分:4)
您可以将这个问题减少到有向图中的标准s-t切割问题,然后可以解决这个问题。通过Edmonds-Karp算法。对于每个顶点v,创建两个顶点v_in 和v_out以及有向边(v_in,v_out),并且对于每个边{v,w},添加两个有向边(v_out,w_in)和(w_out,v_in)。然后不难看出从s_in到t_out的最大流量对应于s和t之间的最小顶点切割。
答案 1 :(得分:0)
您已正确确定最大流量 - 您的网络为2。
根据flow network的定义
流量必须满足限制 流入节点的流量 等于流出的量, 除非它是一个来源,它有 更多的流出,或下沉,有 更多传入流量
因此,对于您的中间节点,您有2个最大流量(进出)。所以只知道最大流量不会给你最小切割的答案。
定理
max-flow min-cut定理指出 在流网络中,最大金额 流从源头流向 sink等于最小容量 以特定方式删除时 从网络造成的情况 没有流可以从源传递 到了水槽
所以,是的,您知道需要删除的流量,但您不知道以哪种方式删除它。我认为这不是那么微不足道,你需要专门寻找最小切割。