最大网络流量不是唯一的

时间:2014-08-31 12:37:06

标签: algorithm graph flow

请看下面的图片:

enter image description here

我试图使用ford fulkerson算法找到从S到T的最大流量,但我得到了两个答案。一个是12另一个14。

答案返回12:

s->a->d->t = 2
s->b->e->t = 3
s->b->g->t = 2
s->c->b->d->t =2
s->c->g->t = 3

再一次返回12:

s->a->d->t =2
s->b->e->t =3
s->b->d->t =2
s->b->g->t =2
s->c->g->t =3

答案返回14:

s->a->e->t =2
s->b->d->t =4
s->b->e->t =3
s->b->g->t =2
s->c->g->t =3

为什么会这样?这是正常还是我做错了什么?

1 个答案:

答案 0 :(得分:1)

问题在于,当您搜索扩充流程时,您可以:

  1. 沿流量小于容量的边缘前进
  2. 沿着流量大于0的边缘向后移动
  3. 因此,在您的第一个示例中,您可以通过跟踪路径添加更多流量:

    s->b->d->a->e->t (add 2 flow)
    

    请注意,d-> a部分沿着已经流过它的边缘向后移动。

    来自wikipedia

      

    请注意,虽然在原始网络中不允许在残留网络中允许从v到u的流,但是如果f(u,v)> 0且c(v,u)= 0则c_f (v,U)= C(v,U)-F(v,U)= F(U,v)> 0

    一旦增加了所有可能的扩充路径的流量,最大流量的值将始终为相同的值。 (尽管注意到实现这一价值的方法可能有很多种。)