Bei einem gerichteten azyklischen Graphen ist ein Scheitelpunkt eine Quelle, wenn sein Grad Null ist, was bedeutet, dass er nur ausgehende Bögen hat.v ∈ V.
Gibt es einen linearen Zeitalgorithmus, um eine Quelle in einem bestimmten gerichteten azyklischen Graphen zu finden?
Folgefrage: Kann man in linearer Zeit alle Quellen finden?
algorithms
graph-theory
Breezeintopl
quelle
quelle
Antworten:
Wie Yuval erwähnt, ist die Datenstruktur hier wichtig. Ich werde versuchen, eine Lösung für einige der Arten von Adjazenzlisten zu finden:
Wenn Sie die Auswahl der Datenstruktur in Ihren Händen haben, möchten Sie möglicherweise analysieren, welche Vorgänge Sie wie oft ausführen möchten, und eine geeignete Datenstruktur auswählen.
quelle
quelle
Angenommen, Sie haben einen Graphen G = (V, E) im Adjazenzlistenformat. (Um hier klar zu sein, enthält die Liste alle ausgehenden Kanten von der Quelle). Sie können die Umkehrung des Graphen G in linearer Zeit konstruieren. Anschließend können Sie über das inverse Diagramm iterieren und alle Scheitelpunkte mit leerer Adjazenzliste erfassen. Diese Scheitelpunkte haben im inversen Diagramm keine ausgehende Kante, was bedeutet, dass sie im ursprünglichen Diagramm keine eingehenden Kanten haben. Daher sind dies Ihre Quellscheitelpunkte.
Die Laufzeit ist linear. Das Konstruieren der Umkehrung des Graphen dauert maximal O (| V | + | E |). Das Iterieren über die Umkehrung des Graphen benötigt O (| V |) Zeit.
quelle