Ich suche nach einer Lösung für das folgende Problem und frage mich, ob mich jemand auf eine bestehende Forschung zu diesem Thema hinweisen könnte. Ich komme aus einer realen Anwendung von Graphen. Nehmen Sie also Kontakt mit mir auf, wenn meine Terminologie nicht genau stimmt.
Ich habe ein Datenbanksystem, in dem Benutzer Objekte hinzufügen / entfernen / verschieben können, indem sie Beziehungen erstellen / löschen und ändern. Als solches kann ich die Objekte als Eckpunkte in einem Diagramm sehen und die Beziehungen als Kanten und Kanten können abhängig von der Art der Beziehungen (entweder Zusammensetzung, Assoziation oder Aggregation) gewichtet werden.
Aus Sicht des Benutzers kann das Hinzufügen eines neuen Elements mit einem einzigen Klick erfolgen. Unter der Haube erstellt das Programm ein Diagramm mit Objekten, die durch Beziehungen verknüpft sind. Dieses Diagramm wird dann dem Hauptdiagramm hinzugefügt, das die gesamte Datenbank definiert. Das Entfernen eines Elements ist umgekehrt, wenn Verknüpfungen / Kanten getrennt werden und der Graph zu zwei disjunkten Graphen wird, wobei 1 die Datenbank ist und der andere aus Eckpunkten besteht, die vom Element und seinen Unterelementen gebildet werden.
Ich brauche einen sehr schnellen Weg, um festzustellen, wann ich disjunkte Graphen habe und wann 2 disjunkte Graphen wieder zu 1 werden. Ich habe einen kurzen Blick auf Holm, de Lichtenberg und Thorup ( 2001 ; pdf ) geworfen . Es scheint der richtige Weg zu sein, aber der Autor hat erwähnt, dass nur ein Diagramm mit einer festen Anzahl von Eckpunkten in Betracht gezogen wird. Fragen Sie sich nur, ob sich Algorithmen normalerweise auf das Hinzufügen / Entfernen von Scheitelpunkten erstrecken, indem Sie das Hinzufügen von Kanten nur schrittweise durchführen? Oder gab es Arbeiten, die speziell auf ein solches Szenario zugeschnitten waren?
quelle