Problem
Given:
- A directed graph
G
- A source vertex
s
in G and a target vertext
in G - A set
S
of vertices of G
I want to find a collection of paths from s
to t
that covers S
.
Then I want to partition the collection of paths into subcollections of vertex-disjoint paths.
Under these constraints, the objective is to minimise the number of subcollections.
Example
For instance, [C1 = {p1,p2,p3}, C2= {p4,p5}, C3= {p6,p7}] is a solution if:
- each p_i is a path from s to t
- p1,p2,p3 have no vertices in common except s and t;
- p4, p5 have no vertices in common except s and t;
- p6,p7 have no vertices in common except s and t;
- collectively, the 7 paths cover all vertices of S.
In that case, the number of subcollections is 3.
Question
What are some good algorithms or heuristics for this optimisation problem?
I already know min cost flow, and disjoint path algos, but they don't apply in my settings.
I tried min cost flow / node disjoint paths but one run only gives one collection at a time. I don't know how to adjust cost to cover the unexplored vertices.