Mögliche parallele Ausführungstränge (in DAG) erkennen
-
Ich würde gerne in einem DAG (https://en.wikipedia.org/wiki/Directed_acyclic_graph) mit "Jobs" die
mögliche parallelisierbarkeit erkennen - also geschachtelte Gruppen die parallel zueinander laufen könnenbisher habe ich dazu nur "Series-parallel partial order" (https://en.wikipedia.org/wiki/Series-parallel_partial_order) gefunden
aber noch keinen konkreten Algorithmusmit "Topolocial order" (https://www.youtube.com/watch?v=PfiFnXg2G2I) bekomme ich schon mal die mindest-Reihenfolge raus in der ich
ausführen könnte - aber eben nicht parallelkennt jemand Algorithmen(Namen?) für sowas?
-
das auch noch gefunden: https://parasol.tamu.edu/dsmft/research/scheduling/
-
eher das hier: https://parasol.tamu.edu/groups/amatogroup/research/scheduling/scheduling_algorithms/
-
Was genau ist dein Ziel? Sollen die Jobs so früh wie möglich ausgeführt werden? Gibt es Beschränkungen, wie viele Jobs gleichzeitig laufen können? Falls nicht, starte einfach eine parallele Breitensuche von allen Knoten mit Eingangsgrad 0. Oder anders ausgedrückt: Füge einen künstlichen Knoten s sowie Kanten zu allen Knoten mit Eingangsgrad 0 hinzu. Der Abstand eines Knotens zu s bestimmt dann den Zeitpunkt, zu dem dieser Job ausgeführt wird. Die Abstände kannst du mit einer Breitensuche von s aus bestimmen.