2

I have a directed, colored graph (each node has a color), and I want to find if a path from node A to node B exists such that the path goes through each color at MOST once.

I think this problem can be formulated using network flow. Somehow a penalty can be placed on nodes of the same color that makes the flow 0 or infinity if a node is repeated.

Thanks!

Raphael
  • 73,212
  • 30
  • 182
  • 400
PK5144
  • 69
  • 1

2 Answers2

3

I understand from your question that you are asking for a polynomial-time algorithm for solving the problem. It is unlikely there is one for the problem.

Taking the hint of @jjohn, this is exactly the same problem as in the Kleinberg-Tardos book, Exercise 8.12. They call the problem evasive path. Here, color classes represent different zones, and you must get from $s$ to $t$ visiting each zone at most once.

There are at least two straightforward reductions. The other one is from directed Hamiltonian path, and the other one from set partitioning, i.e. exact cover. If you still care about solving the problem, you can do it in $O^*(2^k)$-time, where $k$ is the number of colors.

Juho
  • 22,905
  • 7
  • 63
  • 117
0

This is NPC and we can reduce a $k$-SAT problem (usually $3$-SAT) to this.

Firstly given a $3$-SAT problem, we can construct a full-connected directed graph: a source node $s$, a sink node $t$ and some layers. Each layer comes from a clause in the SAT problem and have $3$ (or $k$) nodes.

Then we let each pair of nodes form a zone/color if they are oppositie, i.e., $x$ and $\bar{x}$. So it's easy to see that we can find such a path from $s$ to $t$, if and only if there is a solution for the SAT problem.