optNetwork

connectedComponents

Beschreibung

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.

optNetwork.connectedComponents <result=results> <status=rc> / algorithm="AFFOREST" | "AUTOMATIC" | "DFS" | "UNIONFIND", deterministic=TRUE | FALSE, direction="DIRECTED" | "UNDIRECTED", display={...}, distributed=TRUE | FALSE, graph=integer, indexOffset=integer, links={...}, linksVar={...}, logFreqTime=integer, logLevel="AGGRESSIVE" | "BASIC" | "MODERATE" | "NONE", multiLinks=TRUE | FALSE, nodes={...}, nodesVar={...}, nThreads=integer, out={...}, outGraphList={...}, outLinks={...}, outNodes={...}, outputTables={...}, selfLinks=TRUE | FALSE, standardizedLabels=TRUE | FALSE, standardizedLabelsOut=TRUE | FALSE ;
Einstellungen
ParameterBeschreibung
algorithmGibt den Algorithmus an, der zur Berechnung der zusammenhängenden Komponenten verwendet werden soll.
deterministicWenn auf True gesetzt, stellt sicher, dass jeder Aufruf (mit derselben Maschinenkonfiguration und denselben Parametereinstellungen) dasselbe Endergebnis liefert.
directionGibt an, ob der Eingabegraph als gerichtet oder ungerichtet betrachtet werden soll.
displayGibt eine Liste von Ergebnistabellen an, die zur Anzeige an den Client gesendet werden sollen.
distributedWenn auf True gesetzt, wird ein verteilter Graph verwendet.
graphGibt den zu verwendenden In-Memory-Graphen an.
indexOffsetGibt den Index-Offset für Bezeichner in den Log- und Ergebnisausgabetabellen an.
linksGibt die Eingabedatentabelle an, die die Link-Informationen des Graphen enthält.
linksVarGibt die Datenvariablennamen für die Link-Tabelle an.
logFreqTimeSteuert die Frequenz n (in Sekunden) für die Anzeige von Iterationsprotokollen für einige Algorithmen.
logLevelSteuert die Menge der im SAS-Log angezeigten Informationen.
multiLinksWenn auf True gesetzt, werden Mehrfachverbindungen beim Lesen eines Eingabegraphen berücksichtigt.
nodesGibt die Eingabedatentabelle an, die die Knoteninformationen des Graphen enthält.
nodesVarGibt die Datenvariablennamen für die Knotentabelle an.
nThreadsGibt die maximale Anzahl von Threads an, die für die Multithread-Verarbeitung verwendet werden sollen.
outGibt die Ausgabedatentabelle an, die die Zusammenfassungsinformationen über die zusammenhängenden Komponenten enthalten soll.
outGraphListGibt die Ausgabedatentabelle an, die Zusammenfassungsinformationen über In-Memory-Graphen enthalten soll.
outLinksGibt die Ausgabedatentabelle an, die die Link-Informationen des Graphen zusammen mit den Ergebnissen von Algorithmen enthält, die Metriken für Links berechnen.
outNodesGibt die Ausgabedatentabelle an, die die Knoteninformationen des Graphen zusammen mit den Ergebnissen von Algorithmen enthält, die Metriken für Knoten berechnen.
outputTablesListet die Namen der Ergebnistabellen auf, die als CAS-Tabellen auf dem Server gespeichert werden sollen.
selfLinksWenn auf True gesetzt, werden Eigenverbindungen beim Lesen eines Eingabegraphen berücksichtigt.
standardizedLabelsWenn auf True gesetzt, gibt an, dass die Eingabegraphdaten in einem standardisierten Format vorliegen.
standardizedLabelsOutWenn auf True gesetzt, fordert an, dass die Ausgabegraphdaten ein standardisiertes Format enthalten.
Erstellung von Testdaten

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.

Kopiert!
1DATA mycas.LinkSetIn;
2 INFILE DATALINES dlm=',';
3 INPUT from $ to $ @@;
4 DATALINES;
5A, B, A, C, B, C,
6D, E, D, F,
7G, H
8;
9RUN;

Beispiele

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.

SAS® / CAS-Code Code wartet auf Validierung durch die Community
Kopiert!
1 
2PROC CAS;
3ACTION optNetwork.connectedComponents / links={name="LinkSetIn"} outNodes={name="NodeSetOut", replace=true} out={name="ConnCompOut", replace=true};
4 
5RUN;
6 
Ergebnis :
Die Ausgabetabelle `NodeSetOut` enthält eine neue Spalte `concomp`, die die Komponenten-ID für jeden Knoten angibt. Die Tabelle `ConnCompOut` fasst die gefundenen Komponenten zusammen und zeigt an, dass es 3 verschiedene Komponenten gibt.

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.

SAS® / CAS-Code Code wartet auf Validierung durch die Community
Kopiert!
1 
2PROC CAS;
3ACTION optNetwork.connectedComponents / links={name="LinkSetIn"} direction="DIRECTED" algorithm="DFS" outNodes={name="NodeSetOut_directed", replace=true} out={name="ConnCompOut_directed", replace=true};
4 
5RUN;
6 
Ergebnis :
Die Ergebnisse zeigen die Komponenten basierend auf der gerichteten Natur des Graphen. Die Ausgabetabellen `NodeSetOut_directed` und `ConnCompOut_directed` werden mit den entsprechenden Ergebnissen aktualisiert, die sich von denen des ungerichteten Beispiels unterscheiden können, wenn die Graphenstruktur dies impliziert.

FAQ

Was ist der Zweck der Aktion `connectedComponents`?
Welche Algorithmen können mit dem Parameter `algorithm` in der Aktion `connectedComponents` verwendet werden?
Was steuert der Parameter `direction`?
Wofür wird die Ausgabetabelle `out` verwendet?
Welche Informationen enthält die Ausgabetabelle `outNodes`?
Kann die Aktion `connectedComponents` mit verteilten Graphen arbeiten?
Was ist der Unterschied zwischen schwach und stark zusammenhängenden Komponenten in einem gerichteten Graphen?
Wie identifiziert die Aktion `connectedComponents` die Komponenten für jeden Knoten?