1
$\begingroup$

I have a connected graph, each edge weight represents the maximum flow through that edge. I have a defined sink and source. I want to find out the node that should be removed in order to minimy flow through the network.

I have tried several things, on one hand I tried finding a heuristic... however there is no indicator of how much it can minimize the flow.

Also, I tried running Edmonds-Karp but everytime taking a node from the graph. In this way, it has to be run N times. This is too slow since I have around 100,000 nodes.

I am looking for an approach that is faster.

$\endgroup$
1
  • $\begingroup$ Can you credit the source where you encountered this task/problem? $\endgroup$
    – D.W.
    Commented Nov 6 at 5:38

1 Answer 1

1
$\begingroup$

This problem belongs to the class of problems called Network Interdiction, or Network Inhibition problems. See Phillips (1993). This specific problem is called Most Vital Node.

Assuming digraphs, we can replace each vertex with a capacitated directed edge, and thus consider only the removal of edges instead of vertices.

This problem is called Most Vital Link, and an algorithm was given by Wollmer in 1963. Lubore and Sicilia (1971) improved the algorithm, later followed by Sicilia and Ratliff (1975).

There is one main observation that gives the basis of the algorithm:

Theorem (Lubore and Sicilia, 1971). A necessary condition for an arc $uv$ to be a most vital link in a flow network $(G, s, t, \text{cap})$ is that for any flow $f$, the flow over $uv$ is at least as great as the flow over every arc in a minimum cut.

An algorithm that only consider such arc is a slight improvement over the naive algorithm. You can find the algorithm described in their paper.

If your graph is $s$-$t$-planar, I believe even faster algorithms should exist: Notice that the most vital link is the heaviest edge in a minimal cut when we don't count the heaviest edge. I.e., let $C$ be a minimal cut, and let $$h(C) = \sum_{e \in C} \text{cap}(e) - \max_{e \in C} \text{cap}(e).$$ Then $$\min_{C \text{ a minimal $s$-$t$-cut}} h(C)$$ is the new flow.

$\endgroup$
1
  • $\begingroup$ Thank you for your response! Do you have a source which implements Most Vital Link in code. Sources for it are old and don’t offer implementations $\endgroup$ Commented Nov 7 at 2:59

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.