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 Worten A ist Voraussetzung für B und B ist Voraussetzung für C und auch A ist Voraussetzung für C. In diesem Fall ist A -> C redundant (da B bereits erforderlich ist, um C zu erreichen, und A erforderlich ist, um B zu erreichen) .
Es ist schon eine Weile her, seit ich Algorithmen studiert habe, und ich bin mir nicht sicher, wo ich anfangen soll.
Übrigens ist es nicht kritisch, dass der Algorithmus das globale Minimum findet, das lokale Minimum ist in Ordnung (die Kantenreduzierung ist nur eine Laufzeitoptimierung für die nächste Verarbeitungsstufe).
Mir ist auch klar, dass dies eine CS-Qualitätssicherung ist und keine Programmierung, aber mein Programm ist in Python geschrieben. Daher würde ich mich besonders freuen, wenn ich ein Python-Modul oder Open Source für diese Reduzierung kennenlernen würde, falls Sie davon wissen.
Danke im Voraus!