6

I have a DAG which I would like to do a topological sort on but there is a catch. I also have a relation NotBetween(X,Y,Z) which means that in the sort the node Y cant come "in between" node X or node Y. In other words, Y < X OR Z < Y.

I've thought about several approaches to this, but can't find a solution. Maybe I can turn every NonBetween relation into "regular edges" and then do a standard topological sort?

Have you heard of any similar problem or solution to this?

John L.
  • 39,205
  • 4
  • 34
  • 93
Isak
  • 75
  • 5

2 Answers2

1

The decision version of your problem of deciding whether the DAG contains such an order is NP-complete, even if all (X,Y,Z)s are disjoint. It is proven in Appendix B in [1].

[1] Guttmann, W., & Maucher, M. (2006). Constrained ordering.

xskxzr
  • 7,613
  • 5
  • 24
  • 47
-1

EDIT: As pointed out in the comments this doesn't work!

Copy your graph into $G'$ and for every triple of nodes $(u,v,w)$, if NotBetween$(u,v,w)$ then add the edges $v\rightarrow u$ and $w\rightarrow v$ to $G'$ (if they don't exist already). If the graph has a cycle the problem is infeasible. Otherwise the topological sort on this new graph $G'$ is a valid topo sort for $G$ respecting NotBetween.

This is clearly $O(V^3)$ because you can implement this with 3 nested loops, then resulting graph has at most $O(V^2)$ edges, and the topological sort of $G'$ will take time $O(V^2)$.

If your relation NotBetween is not a black box and actually has some "known shape" you might be able to skip some triples and do better.

elbrunovsky
  • 119
  • 2