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
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.
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?

Zugehörige Szenarien

Anwendungsfall
Erkennung von Geldwäscherings (Anti-Money Laundering)

Eine Bank möchte verdächtige Netzwerke von Konten identifizieren, die Geld untereinander transferieren. Ziel ist es, isolierte Cluster von Kunden zu finden, die stark miteinande...

Anwendungsfall
Stabilitätsanalyse eines Telekommunikationsnetzes (Performance/Volumen)

Ein Telekommunikationsanbieter muss nach einem Unwetter prüfen, ob das Netzwerk fragmentiert wurde. Es müssen Millionen von Verbindungen (Kabeln) zwischen Türmen (Knoten) analys...

Anwendungsfall
Analyse sozialer Interaktionen mit Datenqualitätsproblemen (Edge Case)

Ein soziales Netzwerk analysiert 'Follower'-Beziehungen. Die Daten sind 'schmutzig': Es gibt Eigenreferenzen (Nutzer folgt sich selbst), doppelte Einträge und es ist ein gericht...