Algorithm 求流网络的最小割
我试图找到以下网络的最小割集 我使用以下算法:Algorithm 求流网络的最小割,algorithm,graph,flow,ford-fulkerson,minimum-cut,Algorithm,Graph,Flow,Ford Fulkerson,Minimum Cut,我试图找到以下网络的最小割集 我使用以下算法: >P.> Ford Fulkson算法并考虑最终残差图。 在残差图中查找可从源访问的顶点集 从可达顶点到不可达顶点的所有边都是最小割边。打印所有这些边 在第一步中,我的算法找到3条路径: - s->b->h->t **value: 1** - s->d->e->t **value: 1** - s->c->h->i->m->d->g->t **value:
- 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的切割
我错过了什么?为什么我不能像通常那样遍历图以获得最小割 我假设,残差图的定义是在残差图中放置边A->B,如果: a) a->B方向(也称为前缘)的流量和容量有些不同 b) 在方向b->A(也称为后缘)有一些流动 在这个定义中,您的步骤2是错误的 若要查找最小切割,只需从起点穿过前边缘。现在,您可以将可从开始到达的顶点表示为集合R,将其余顶点表示为集合R’。 现在,切割是由R和R'之间的边进行的。
切割的大小是在R和R之间流动。每次增加残差图中某条边的容量时,都需要将另一条边的容量增加相同的量 示例图: 以下是不带后边的残差图和可从
S
到达的顶点集(不构成最小割):
以及具有最小割集的正确残差图:
“可到达的顶点是s、c和h,它们形成了一个等于3.5的切割。”–该切割的权重不是零吗?你能详细说明3.5是从哪里来的吗?@user3290797我在第二张图片上标记了BFS遍历的结果-这个剪切在真实网络中的值是3.5。我想我不明白你的意思,我给出的残差图到底出了什么问题?我通过删除列出的路径来生成残差图。然后以bfs方式遍历剩余图。你能详细解释一下吗?谢谢,这是我错过的一点!只有一件事-在您的示例中,边S->A的值应该是9,而A->S的值应该是1。@Simon谢谢,修正了。