Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

find the maximum number of vertex-disjoint paths in a graph with a constraint

Given a undirected graph G=(V,E), each edge is associated with a non-negative value.

How to find the maximum number of vertex-disjoint paths from s to t on the graph G, with a constraint that the sum of paths length is not greater than a predefined value T.

like image 522
wzb5210 Avatar asked Jul 11 '12 19:07

wzb5210


People also ask

How do you find the maximum number of edge-disjoint paths in an undirected graph?

The max number of edge-disjoint s-t paths is equal to the min number of arcs whose removal disconnects t from s. Suppose the removal of F ⊆ E disconnects t from s, and |F| = k. All s-t paths use at least one edge of F. Hence, the number of edge- disjoint paths is at most k.

What is vertex disjoint graph?

Definition 6 (Vertex disjoint paths). Given a graph G = (V,E) and two vertices s, t ∈ G, we say that two or more paths from s to t in G are vertex disjoint if they have no other vertices in common except for s and t, respectively.

What is disjoint path in graph theory?

Given a directed graph and two vertices in it, source 's' and destination 't', find out the maximum number of edge disjoint paths from s to t. Two paths are said edge disjoint if they don't share any edge. There can be maximum two edge disjoint paths from source 0 to destination 7 in the above graph.


2 Answers

You can start with transforming a vertex-disjoint paths problem to edge-disjoint paths problem. See this answer to other question for details.

Now you can solve Minimum-cost flow problem on this graph to find any number of disjoint paths having minimal sum of path lengths. Do do this, assign flow capacity for each edge equal to 1, then search for a minimum-cost flow between s and t with flow equal to the needed number of paths.

To find the maximum number of paths, apply minimum-cost flow procedure on each step of binary search, starting from some initial number of paths, which may be determined by one of the following procedures:

  1. If you expect the maximum number of paths to be large, solve Maximum flow problem for this graph.
  2. If you expect the maximum number of paths to be small, use one-sided binary search (also with minimum-cost flow procedure on each step).
like image 117
Evgeny Kluev Avatar answered Sep 29 '22 22:09

Evgeny Kluev


Since you are only interested in the number of vertex-disjoint paths you can use Menger's theorem (for proof look here) that states as follows:

Let G be a finite undirected graph and x and y two nonadjacent vertices. Then the theorem states that the size of the minimum vertex cut for x and y (the minimum number of vertices whose removal disconnects x and y) is equal to the maximum number of pairwise vertex-independent paths from x to y.

But this doesn't satisfy the constraint that the sum of paths length is not greater than a predefined value T.

For that you'll have to use a version of of Menger's theorem for paths of bounded length that is presented here: http://www.math.elte.hu/~lovasz/scans/mengerian.pdf

like image 28
Ido.Co Avatar answered Sep 29 '22 22:09

Ido.Co