Stark verbundene Komponente
In der mathematischen Theorie von Regie Graphen, eine Grafik soll sein stark verbunden Wenn jeder Scheitelpunkt ist erreichbar von jedem anderen Scheitelpunkt. Das stark verbundene Komponenten einer willkürlichen gerichteten Grafikform a Trennwand in Subgraphen, die selbst stark verbunden sind. Es ist möglich, die Starke zu testen Konnektivität einer Grafik oder um seine stark verbundenen Komponenten zu finden, in lineare Zeit (das heißt θ (V+E)).
Definitionen
A gerichteter Graph wird genannt stark verbunden Wenn da ein ... ist Weg in jeder Richtung zwischen jedem Eckpaar des Diagramms. Das heißt, vom ersten Scheitelpunkt im Paar zum zweiten und ein weiterer Weg existiert ein weiterer Weg vom zweiten Scheitelpunkt zum ersten. In einer gerichteten Grafik G Das kann selbst nicht stark verbunden sein, ein Paar Eckpunkte u und v sollen stark miteinander verbunden sein, wenn ein Pfad in jede Richtung zwischen ihnen liegt.
Das binäre Beziehung stark verbunden zu sein ist ein Äquivalenzbeziehung, und die induzierte Subgraphen von seinem Äquivalenzklassen werden genannt stark verbundene Komponenten. Äquivalent, a stark verbundene Komponente einer gerichteten Grafik G ist ein Untergraph, der stark verbunden ist und ist maximal mit dieser Eigenschaft: keine zusätzlichen Kanten oder Eckpunkte von G Kann in den Untergraph aufgenommen werden, ohne seine Eigenschaft zu brechen, stark verbunden zu sein. Die Sammlung von stark verbundenen Komponenten bildet a Trennwand der Gruppe von Scheitelpunkten von G. Eine stark verbundene Komponente wird genannt trivial Wenn besteht aus einem einzelnen Scheitelpunkt, der nicht mit einer Kante mit sich selbst verbunden ist und nicht trivial Andernfalls.[1]
Wenn jede stark verbundene Komponente ist Vertrag abgeschlossen Zu einem einzelnen Scheitelpunkt ist die resultierende Grafik a Regie acyclische Graphen, das Kondensation von G. Ein gerichteter Diagramm ist nur dann acyclisch, wenn es keine stark verbundenen Subgraphen mit mehr als einem Scheitelpunkt hat, da ein gerichteter Zyklus stark verbunden ist und jede nicht triviale stark verbundene Komponente mindestens einen gerichteten Zyklus enthält.
Algorithmen
DFS-basierte lineare Zeitalgorithmen
Mehrere Algorithmen basieren auf Tiefe erste Suche Berechnen Sie stark verbundene Komponenten in lineare Zeit.
- Kosarajus Algorithmus verwendet zwei Pässe von Tiefe erste Suche. In der ursprünglichen Grafik wird der erste verwendet, um die Reihenfolge auszuwählen, in der die äußere Schleife der zweiten Tiefe erste Suchentests für die bereits besuchten Scheitelpunkte für bereits besucht und rekursiv untersucht, wenn nicht. Die zweite Tiefe erste Suche ist auf der GRAPE GRAPER des ursprünglichen Diagramms und jede rekursive Erkundung findet eine einzige neue stark verbundene Komponente.[2][3] Es ist nach nach S. Rao Kosaraju, der es 1978 beschrieb (aber seine Ergebnisse nicht veröffentlichte); Micha Sharir später 1981 veröffentlicht.[4]
- Tarjans stark verbundener Komponentenalgorithmus, herausgegeben von Robert Tarjan 1972,,[5] führt einen einzelnen Pass der Tiefe Erstsuche durch. Es unterhält a Stapel von Scheitelpunkten, die von der Suche untersucht wurden, aber noch nicht einer Komponente zugeordnet sind, und berechnet "niedrige Zahlen" jedes Scheitelpunkts (eine Indexzahl der höchsten Vorfahren, die in einem Schritt von einem Nachkommen des Scheitelxe erreicht werden können), den es zur Bestimmung verwendet Wenn ein Satz Scheitelpunkte aus dem Stapel in eine neue Komponente gestoßen werden sollte.
- Das Pfadbasierter starker Komponentenalgorithmus Verwendet eine Tiefe erste Suche wie Tarjans Algorithmus, aber mit zwei Stapeln. Einer der Stapel wird verwendet, um die noch nicht zugewiesenen Eckpunkte im Auge zu behalten, während der andere den aktuellen Pfad im ersten Suchbaum der Tiefe im Auge behält. Die erste lineare Zeitversion dieses Algorithmus wurde von veröffentlicht von Edsger W. Dijkstra 1976.[6]
Obwohl Kosarajus Algorithmus konzeptionell einfach ist, benötigen Tarjans und der pathbasierte Algorithmus nur einen Tiefe-First-Suche eher als zwei.
Erreichbarkeitsbasierte Algorithmen
Vorherige lineare Zeitalgorithmen basieren auf Tiefe-First-Suche Dies wird allgemein als schwer zu parallel zu betrachtet. Fleischer et al.[7] im Jahr 2000 vorgeschlagen a Divide-and-Conquer Ansatz basierend auf Erreichbarkeit Abfragen und solche Algorithmen werden in der Regel als erreichbar-basierte SCC-Algorithmen bezeichnet. Die Idee dieses Ansatzes besteht darin, einen zufälligen Pivot -Scheitelpunkt auszuwählen und Abfragen für die Erreichbarkeit von Vorwärts- und Rückwärtsverträglichkeit von diesem Scheitelpunkt anzuwenden. Die beiden Abfragen unterteilt sich der Scheitelpunkt in 4 Teilmengen: Scheitelpunkte, die entweder eins oder keine der Suchanfragen erreicht haben. Man kann zeigen, dass eine stark verbundene Komponente in einem der Teilmengen enthalten sein muss. Die von beiden Suchanfragen erreichte Vertex -Teilmenge bildet eine stark verbundene Komponente, und der Algorithmus wird dann auf den anderen 3 Teilmengen zurückgeführt.
Die erwartete sequentielle Laufzeit dieses Algorithmus ist O (nProtokolln) ein Faktor von O (logn) Mehr als die klassischen Algorithmen. Die Parallelität stammt aus: (1) Die Erreichbarkeitsanfragen können leichter parallelisiert werden (z. B. durch a Breite-First-Suche (BFS), und es kann schnell sein, wenn der Durchmesser des Diagramms klein ist); und (2) die Unabhängigkeit zwischen den Unteraufgaben im Divide-and-Conquer-Prozess. Dieser Algorithmus funktioniert in realen Grafiken gut.[3] hat jedoch keine theoretische Garantie für die Parallelität (überlegen Sie, ob ein Diagramm keine Kanten hat, der Algorithmus erfordert O ((n) Ebenen von Rekursionen).
Blelloch et al.[8] Im Jahr 2016 zeigt, dass, wenn die Erreichbarkeitsanfragen in einer zufälligen Reihenfolge angewendet werden, die Kosten von O (nProtokolln) immer noch hält. Darüber hinaus können die Abfragen dann auf Präfix-Doubing-Weise (d. H. 1, 2, 4, 8 Abfragen) angegriffen werden und gleichzeitig in einer Runde laufen. Die Gesamt Spanne Von diesem Algorithmus ist Protokoll2 n Erreichbarkeitsabfragen, die wahrscheinlich die optimale Parallelität sind, die mit dem aufreichbarkeitsbasierten Ansatz erreicht werden kann.
Erzeugen Sie zufällige stark verbundene Graphen
Peter M. Maurer beschreibt einen Algorithmus zur Erzeugung zufälliger stark verbundener Graphen.[9] basierend auf einer Änderung eines Algorithmus für Starke KonnektivitätsvergrößerungDas Problem, so wenige Kanten wie möglich hinzuzufügen, um ein Diagramm stark verbunden zu machen. Wenn der Algorithmus in Verbindung mit den Gilbert- oder Erdős-Rényi-Modellen mit Knoten-Relabring verwendet wird, kann der Algorithmus eine stark verbundene Grafik erzeugen n Knoten ohne Einschränkung der Arten von Strukturen, die erzeugt werden können.
Anwendungen
Algorithmen zum Auffinden stark verbundener Komponenten können zur Lösung verwendet werden 2-Satsfabilität Probleme (Systeme von Booleschen Variablen mit Einschränkungen für die Werte von Variablenpaaren): AS Aspvall, Plass & Tarjan (1979) gezeigt, a 2-Satsfabilität Die Instanz ist nur dann, wenn es eine Variable gibt v so dass v und seine Komplement sind beide in derselben stark verbundenen Komponente der Implikationsgrafik der Instanz.[10]
Stark verbundene Komponenten werden auch verwendet, um die zu berechnen Dulmage -Mendelsohn -Zersetzung, eine Klassifizierung der Kanten von a Bipartitale Grafik, je nachdem, ob sie Teil von a sein können oder nicht Perfektes Matching in der Grafik.[11]
Verwandte Ergebnisse
Ein gerichteter Diagramm ist nur dann miteinander verbunden, wenn es eine hat Ohrenzersetzung, eine Partition der Kanten in eine Sequenz von gerichteten Pfaden und Zyklen, so dass der erste Untergraphen in der Sequenz ein Zyklus ist und jeder nachfolgende Untergraph entweder ein Zyklus ist Subgraphen.
Entsprechend Robbins 'Theorem, eine ungerichtete Grafik kann sein orientiert so, dass es stark miteinander verbunden wird, wenn und nur wenn es so ist 2-nordnechtungsbedingt. Eine Möglichkeit, dieses Ergebnis zu beweisen, besteht darin, eine Ohrzerlegung des zugrunde liegenden undirezierten Diagramms zu finden und dann jedes Ohr konsistent zu orientieren.[12]
Siehe auch
- Clique (Graphentheorie)
- Verbundene Komponente (Graphentheorie)
- Modulare Zerlegung
- Schwache Komponente
Verweise
- ^ https://www.fi.muni.cz/reports/files/2010/fimu-rs-2010-10.pdf[Bare URL PDF]
- ^ Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest, und Clifford Stein. Einführung in Algorithmen, Zweite Ausgabe. MIT Press und McGraw-Hill, 2001. ISBN0-262-03293-7. Abschnitt 22.5, S. 552–557.
- ^ a b Hong, Sungpack; Rodia, Nicole C.; Olukotun, Kunle (2013), "Bei der schnellen parallele Erkennung von stark verbundenen Komponenten (SCC) in kleinen Weltgrafiken" (PDF), Verfahren der Internationalen Konferenz über Hochleistungs -Computing, Networking, Speicher und Analyse - SC '13, S. 1–11, doi:10.1145/2503210.2503246, ISBN 9781450323789, S2CID 2156324
- ^ Sharir, Micha (1981), "Ein starker Konnektivitätsalgorithmus und seine Anwendungen in der Datenflussanalyse", Computer und Mathematik mit Anwendungen, 7: 67–72, doi:10.1016/0898-1221 (81) 90008-0
- ^ Tarjan, R. E. (1972), "Tiefen- und Lineare Graph-Algorithmen", Siam Journal über Computing, 1 (2): 146–160, doi:10.1137/0201010
- ^ Dijkstra, Edsger (1976), Eine Disziplin der Programmierung, NJ: Prentice Hall, Ch. 25.
- ^ Fleischer, Lisa K.; Hendrickson, Bruce; Pınar, Ali (2000), "Bei der Identifizierung stark verbundener Komponenten parallel" (PDF), Parallele und verteilte Verarbeitung, Vorlesungsnotizen in Informatik, Vol. 1800, S. 505–511, doi:10.1007/3-540-45591-4_68, ISBN 978-3-540-67442-9
- ^ Blelloch, Guy E.; Gu, Yan; Shun, Julian; Sun, Yihan (2016), "Parallelität bei randomisierten inkrementellen Algorithmen" (PDF), Verfahren des 28. ACM -Symposiums zur Parallelität in Algorithmen und Architekturen - SPAA '16, S. 467–478, doi:10.1145/2935764.2935766, ISBN 9781450342100.
- ^ Maurer, P. M., Erzeugen stark verbundener Zufallsgrafiken (PDF), Int'l Conf. Modellierung, Sim. und vis. Methoden Msv'17, Csrea Press, ISBN 1-60132-465-0, abgerufen 27. Dezember, 2019
- ^ Aspvall, Bengt; Plass, Michael F.; Tarjan, Robert E. (1979), "Ein linearer Zeitalgorithmus zum Testen der Wahrheit bestimmter quantifizierter boolescher Formeln", Informationsverarbeitungsbriefe, 8 (3): 121–123, doi:10.1016/0020-0190 (79) 90002-4.
- ^ Dulmage, A. L. & Mendelsohn, N. S. (1958), "Bedeckungen von zweigliedrigen Grafiken", Dürfen. J. Math., 10: 517–534, doi:10.4153/CJM-1958-052-0, S2CID 123363425.
- ^ Robbins, H. E. (1939), "ein Satz in Grafiken, mit einer Anwendung auf ein Problem bei der Verkehrskontrolle", Amerikanischer mathematischer Monat, 46 (5): 281–283, doi:10.2307/2303897, JStor 2303897.
Externe Links
- Java -Implementierung zur Berechnung stark verbundener Komponenten In der JBPT -Bibliothek (siehe StreitconnectedComponents -Klasse).
- C ++ Implementierung stark verbundener Komponenten