Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/12.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
Algorithm 最佳减少最大流量_Algorithm_Graph - Fatal编程技术网

Algorithm 最佳减少最大流量

Algorithm 最佳减少最大流量,algorithm,graph,Algorithm,Graph,给定一个参数k,我试图从一个有向图中删除k条边,这样最大流就尽可能减少。该图有一个源s和一个汇t,每条边的容量为一。图表可能包含也可能不包含循环 我提出的解决方案是首先对图进行拓扑排序,使用一种“原谅”循环的算法——也许可以忽略引导我们返回源的边。然后(假设k>=1): 这行得通,还是我完全偏离了轨道?我想你完全偏离了轨道。您的算法可能根本不会减少流量,但可以将最大流量至少减少k(或使其为0) 你知道最大流量最小切割定理吗?我知道这一点,因为我记住了“s-t流量的最大值等于必须移除的最小容量,这

给定一个参数k,我试图从一个有向图中删除k条边,这样最大流就尽可能减少。该图有一个源s和一个汇t,每条边的容量为一。图表可能包含也可能不包含循环

我提出的解决方案是首先对图进行拓扑排序,使用一种“原谅”循环的算法——也许可以忽略引导我们返回源的边。然后(假设k>=1):


这行得通,还是我完全偏离了轨道?

我想你完全偏离了轨道。您的算法可能根本不会减少流量,但可以将最大流量至少减少k(或使其为0)


你知道最大流量最小切割定理吗?

我知道这一点,因为我记住了“s-t流量的最大值等于必须移除的最小容量,这样就不会有流量从s流到t”,但我现在还不清楚这对我在这种情况下有何帮助。我们想在图中找到s-t切割并去掉穿过切割的边吗?@Arlck:我建议你自己尝试回答这个问题。“找到最小切割”可以通过能够找到“最大流”的算法来实现,比如福特-富尔克森算法。但你到底想做什么?你说减少最大流量是什么意思?@Christian:我们已经用Ford Fulkerson这样的算法找到了最大流量,但现在我们想有策略地删除k边,以便尽可能减少。我记得去年在我的计算机科学课程中回答过这个问题,我只是不记得我回答了什么哈哈:P IIRC最大流算法将图形划分为两组A,B,这样沿A到B的边的流是有容量的,这意味着这些边是流的“瓶颈”(在军事术语中)。如果你切割这些边缘,你肯定会最大程度地减少总流量。
i = 0
for each vertex u order by topological(u)
   for each edge (u, v) order by topological(v) descending
       if topological(v) > topological(u) then
            delete (u, v)
            if ++i = k then return
       else
            // edge doesn't contribute to max flow, ignore