Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Ford-Fulkerson不规则性(多顶点vs.回流)_Java_Algorithm_Max Flow_Ford Fulkerson - Fatal编程技术网

Java Ford-Fulkerson不规则性(多顶点vs.回流)

Java Ford-Fulkerson不规则性(多顶点vs.回流),java,algorithm,max-flow,ford-fulkerson,Java,Algorithm,Max Flow,Ford Fulkerson,到目前为止,我一直在研究顶点之间只有一条有向边的图。对于我用来测试实现的所有示例,都给出了正确的答案。然而,当我使用一个包含两个方向的边的顶点的图时,我并没有得到正确的答案。我一直在将这样一条向后运行的边视为这两个顶点之间的回流,因为回流和另一条向后运行的“管道”似乎是等价的。我的假设是错误的吗?假设两条边的容量分别为“a”和“b”U--[a]->V和V--[b]->U相当于一条边的容量U--[a-b]->V是错误的。假设a>b,负流量高达-b在第一种情况下是合法的,但在第二种情况下是非法的 只

到目前为止,我一直在研究顶点之间只有一条有向边的图。对于我用来测试实现的所有示例,都给出了正确的答案。然而,当我使用一个包含两个方向的边的顶点的图时,我并没有得到正确的答案。我一直在将这样一条向后运行的边视为这两个顶点之间的回流,因为回流和另一条向后运行的“管道”似乎是等价的。我的假设是错误的吗?

假设两条边的容量分别为“a”和“b”
U--[a]->V
V--[b]->U
相当于一条边的容量
U--[a-b]->V
是错误的。假设a>b,负流量高达-b在第一种情况下是合法的,但在第二种情况下是非法的

只能将同方向边的流量相加。在下图中,将两个相反的管道从E添加到F和F添加到E会使它们从图中消失,从而改变最佳解决方案。

只有懂行话的人才能理解你的意思。另一方面,这感觉像是一道数学题是的,也就是说,几周前不是我,哈哈。我现在不愿意发布我的代码,因为这涉及到一个仍有待提交的家庭作业问题:-)我认为(我有限的测试意味着)我的实现适用于简单的案例,他们将进行评分(即顶点之间只有一条边),但我的假设似乎是错误的,这一事实让我担心我的其余实现。你能提供一个显示问题的最小图吗?同样,问题很可能存在于代码中;因此,如果不查看您的代码,将很难修复…我可以调查以尝试找到一个更简单的示例,但现在,这是我一直使用的图形(请注意,我选择的边与pdf中的边不同)。如果你给我一秒钟的时间,我可以在白板上发布一系列我在其中工作的照片。我选择路径的顺序与我的实现相同(是的,每个路径看起来都是有效的),但除此之外,都是手工选择的,但我的结果与计算机的结果一致。请注意,在我的网格中,空单元格和显式“0”都表示值“0”。此外,图上绿色表示流量,红色表示回流。我忽略了用上面的假设拍摄我的初始图形(尽管所有剩余的图片都反映了这一点),但本质上,我将反向运行的边组合成一个带有流动和回流的“边”。我完全明白你在这里所说的(我会记住这一点),但当我求解时,我宁愿将边U--[a]-->V和V--[b]-->U视为一条“边”,其流为“a”,回流为“b”。我想这真的可以看作是两条边。关于我在白板上的工作,请参见上面的评论(关于问题本身)。编程方面,由于您似乎对图形使用了矩阵表示,因此我建议保留“当前流”矩阵(使用当前流值)和“原始流”矩阵(设置每条边的原始最大值和最小值)。可能会有更多的最佳答案,但这一个将使编程更容易,而代价是增加内存消耗。小图形没有问题(对于大图形,不要使用矩阵)。