1) Gibt es einen besseren Algorithmus als das naive O (| E |. | V |), um die Anzahl der Nachkommen jedes Scheitelpunkts in einer DAG zu berechnen?
2) Gibt es einen Online-Algorithmus, der davon ausgeht, dass Knoten einzeln hinzugefügt werden und eine Verbindung zu einer nicht leeren Teilmenge der vorhandenen Knoten herstellen?
Kontext: Ich interessiere mich für den Fall, dass m = O (n), typischerweise Millionen von Eckpunkten, zig Millionen von Kanten. Alternativ wäre es nützlich, die Anzahl der Nachkommen zu zählen, die auch Senken sind.
Ein probabilistischer Ansatz wäre Min-Hashing, um die Menge der Nachkommen jedes Knotens darzustellen. Die Vereinigung der Min-Hash-Struktur ist trivial, und die Kardinalität der Vereinigung kann aus der Anzahl der Zufälle in den Min-Hashes geschätzt werden.
Ich bin mir jedoch nicht sicher, wie gut sich das bei der Verbreitung der DAG verhalten würde. Intuitiv sieht es so aus, als würden sich Fehler ziemlich schnell verstärken.
Sehr verwandt: /cstheory/553/what-bounds-can-be-put-on-counting-reachable-nodes-in-a-dag Und tatsächlich ein Duplikat von: https: // cstheory.stackexchange.com/questions/18787/what-is-the-fastest-deterministic-algorithm-for-incremental-dag-reachability