我使用以下算法:
运行Ford-Fulkerson算法并考虑最终残差图。
在残差图中找到可从源位置到达的顶点集。
从可到达顶点到不可到达顶点的所有边都是最小切边。打印所有这些边缘。
在第一步中,我的算法找到3条路径:
- s->b->h->t **value: 1**
- s->d->e->t **value: 1**
- s->c->h->i->m->d->g->t **value: 0.5**
因此最大流量(因此最小切割)等于2.5。
然而,当我后来尝试从网络中消除上述路径时,我最终会得到这样的结果:
可到达的顶点是s,c和h,形成等于3.5的切口。
我错过了什么?为什么我不能像往常一样获得最小切割?
答案 0 :(得分:1)
答案 1 :(得分:0)
我假设,您对残差图的定义是在以下情况下将边A-> B放在残差图中:
a)方向A-> B(又称前沿)的流量和容量之间存在一些差异 b)在方向B-> A(又名向后边缘)
方向存在一些流动在此定义中,您的第2步是错误的。
要找到最小切割,您只能从头开始前进。现在,您可以将从开始可到达的顶点表示为集合R,并将其作为集合R'来表示。 现在切割是由R和R'之间的边缘完成的。 切割的大小在R和R之间流动。