Die Aktion `connectedComponents` wird verwendet, um die zusammenhängenden Komponenten eines Graphen zu finden. In der Graphentheorie ist eine zusammenhängende Komponente eines ungerichteten Graphen ein Teilgraph, in dem es einen Pfad zwischen zwei beliebigen Knoten gibt und der mit keinem zusätzlichen Knoten im Übergraphen verbunden ist. Diese Aktion ist nützlich für die Analyse von Netzwerkstrukturen, wie z. B. die Identifizierung von Clustern in sozialen Netzwerken oder die Segmentierung von Infrastrukturnetzwerken.
| Parameter | Beschreibung |
|---|---|
| algorithm | Gibt den Algorithmus an, der zur Berechnung der zusammenhängenden Komponenten verwendet werden soll. |
| deterministic | Wenn auf True gesetzt, stellt sicher, dass jeder Aufruf (mit derselben Maschinenkonfiguration und denselben Parametereinstellungen) dasselbe Endergebnis liefert. |
| direction | Gibt an, ob der Eingabegraph als gerichtet oder ungerichtet betrachtet werden soll. |
| display | Gibt eine Liste von Ergebnistabellen an, die zur Anzeige an den Client gesendet werden sollen. |
| distributed | Wenn auf True gesetzt, wird ein verteilter Graph verwendet. |
| graph | Gibt den zu verwendenden In-Memory-Graphen an. |
| indexOffset | Gibt den Index-Offset für Bezeichner in den Log- und Ergebnisausgabetabellen an. |
| links | Gibt die Eingabedatentabelle an, die die Link-Informationen des Graphen enthält. |
| linksVar | Gibt die Datenvariablennamen für die Link-Tabelle an. |
| logFreqTime | Steuert die Frequenz n (in Sekunden) für die Anzeige von Iterationsprotokollen für einige Algorithmen. |
| logLevel | Steuert die Menge der im SAS-Log angezeigten Informationen. |
| multiLinks | Wenn auf True gesetzt, werden Mehrfachverbindungen beim Lesen eines Eingabegraphen berücksichtigt. |
| nodes | Gibt die Eingabedatentabelle an, die die Knoteninformationen des Graphen enthält. |
| nodesVar | Gibt die Datenvariablennamen für die Knotentabelle an. |
| nThreads | Gibt die maximale Anzahl von Threads an, die für die Multithread-Verarbeitung verwendet werden sollen. |
| out | Gibt die Ausgabedatentabelle an, die die Zusammenfassungsinformationen über die zusammenhängenden Komponenten enthalten soll. |
| outGraphList | Gibt die Ausgabedatentabelle an, die Zusammenfassungsinformationen über In-Memory-Graphen enthalten soll. |
| outLinks | Gibt die Ausgabedatentabelle an, die die Link-Informationen des Graphen zusammen mit den Ergebnissen von Algorithmen enthält, die Metriken für Links berechnen. |
| outNodes | Gibt die Ausgabedatentabelle an, die die Knoteninformationen des Graphen zusammen mit den Ergebnissen von Algorithmen enthält, die Metriken für Knoten berechnen. |
| outputTables | Listet die Namen der Ergebnistabellen auf, die als CAS-Tabellen auf dem Server gespeichert werden sollen. |
| selfLinks | Wenn auf True gesetzt, werden Eigenverbindungen beim Lesen eines Eingabegraphen berücksichtigt. |
| standardizedLabels | Wenn auf True gesetzt, gibt an, dass die Eingabegraphdaten in einem standardisierten Format vorliegen. |
| standardizedLabelsOut | Wenn auf True gesetzt, fordert an, dass die Ausgabegraphdaten ein standardisiertes Format enthalten. |
Dieser Code erstellt eine Beispieltabelle `mycas.LinkSetIn`, die die Verbindungen eines Graphen darstellt. Der Graph besteht aus drei separaten Clustern (Komponenten), die ideal sind, um die Funktionalität der Aktion `connectedComponents` zu testen.
| 1 | DATA mycas.LinkSetIn; |
| 2 | INFILE DATALINES dlm=','; |
| 3 | INPUT from $ to $ @@; |
| 4 | DATALINES; |
| 5 | A, B, A, C, B, C, |
| 6 | D, E, D, F, |
| 7 | G, H |
| 8 | ; |
| 9 | RUN; |
Dieses Beispiel findet die zusammenhängenden Komponenten in dem zuvor erstellten ungerichteten Graphen. Die Ergebnisse werden in den Tabellen `NodeSetOut` (für die Komponentenzugehörigkeit jedes Knotens) und `ConnCompOut` (für eine Zusammenfassung der Komponenten) gespeichert.
| 1 | |
| 2 | PROC CAS; |
| 3 | ACTION optNetwork.connectedComponents / links={name="LinkSetIn"} outNodes={name="NodeSetOut", replace=true} out={name="ConnCompOut", replace=true}; |
| 4 | |
| 5 | RUN; |
| 6 |
Dieses Beispiel verwendet den DFS-Algorithmus (Depth-First Search), um die schwach zusammenhängenden Komponenten in einem gerichteten Graphen zu finden. Die Angabe `direction="DIRECTED"` ist entscheidend, um die Verbindungen als unidirektional zu behandeln.
| 1 | |
| 2 | PROC CAS; |
| 3 | ACTION optNetwork.connectedComponents / links={name="LinkSetIn"} direction="DIRECTED" algorithm="DFS" outNodes={name="NodeSetOut_directed", replace=true} out={name="ConnCompOut_directed", replace=true}; |
| 4 | |
| 5 | RUN; |
| 6 |