Für einen sich ändernden gerichteten Graphen möchte ich Informationen über stark verbundene Komponenten pflegen. Die Diagrammoperationen sind inkrementell: nur Scheitelpunktaddition und Kantenaddition. Welche Datenstrukturen erzielen für diese Operationen die bekannteste amortisierte Komplexität?
Wenn der Graph ungerichtet wäre, wäre die Antwort die Union-Find-Struktur. Und da ungerichtete Graphen als Sonderfälle gerichteter Graphen angesehen werden können, überträgt sich die (noch so geringfügige) superkonstante Untergrenze.
Für eine lineare Obergrenze können die stark verbundenen Komponenten nach jeder Kantenaddition von Grund auf neu berechnet werden, ohne dass Daten recycelt werden müssen. Ich frage mich, ob es einen Weg gibt, es besser zu machen.
In der Umgebung, in der ich dies benötige, erwarte ich, dass nicht triviale SCCs eher die Ausnahme als die Regel sind. Und wenn keine Zyklen vorhanden sind, kann ich insgesamt eine lineare Zeit erreichen (dh eine amortisierte konstante Zeit pro Operation). [EDIT:] Lassen Sie mich klarstellen, was ich meine. Natürlich muss ich in Abwesenheit von Zyklen die SCCs überhaupt nicht verfolgen. Die amortisierte konstante Zeit ist für das, was ich in meiner Umgebung mache , außer für die Sorge um SCCs.
Daher würde mich auch Datenstrukturen interessieren, die im Allgemeinen nicht besser als die obige Obergrenze sind, aber eine amortisierte konstante Zeit pro Operation verwenden, solange der Graph eine DAG bleibt.
Antworten:
Nach meinem besten Wissen wird in [1] mit der beste Algorithmus für dekremental stark verbundene Komponenten vorgestelltO(mn−−√logn) erwartete Gesamtaktualisierungszeit.
Update: Der neue beste Algorithmus für dekrementelle SCCs istO(m(logn)4) präsentiert in [5]
Der beste Algorithmus für inkrementelle stark verbundene Komponenten wird in [2] mit vorgestelltO(m1/2) Aktualisierungszeit pro Flanke.
Es ist eine offene Frage, ob diese beiden Probleme schneller gelöst werden können.
Für volldynamisch stark verbundene Komponenten sind bedingte Untergrenzen bekannt. Worst-Case-Untergrenzen sind auch für die dekrementelle / inkrementelle Wartung stark verbundener Komponenten bekannt. Einzelheiten finden Sie in [3] und [4].
Alle diese Ergebnisse gelten für allgemeine Diagramme. Bessere Ergebnisse sind für planare Graphen bekannt.
Das Ergebnis, das Sie über DAGs erwähnen, ist bekannt:
quelle