请看下面的图片:
我试图使用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
为什么会这样?这是正常还是我做错了什么?
答案 0 :(得分:1)
问题在于,当您搜索扩充流程时,您可以:
因此,在您的第一个示例中,您可以通过跟踪路径添加更多流量:
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
一旦增加了所有可能的扩充路径的流量,最大流量的值将始终为相同的值。 (尽管注意到实现这一价值的方法可能有很多种。)