Reduzieren redundanter Kanten aus einem Abhängigkeitsdiagramm

Ich habe eine DAG von Abhängigkeiten, die viele redundante Kanten enthält (siehe Beispiel unten). Ich möchte einen "schnellen" Algorithmus (dh kann ein Diagramm mit mehreren tausend Knoten / Kanten verarbeiten), der ein minimales Subdiagramm findet. Zum Beispiel: A -> B -> C A -> C in...