optNetwork

minSpanTree

Beschreibung

Die Aktion minSpanTree berechnet den minimalen Spannbaum eines Graphen. Ein minimaler Spannbaum ist eine Teilmenge der Kanten eines zusammenhängenden, kantengewichteten ungerichteten Graphen, die alle Knoten ohne Zyklen und mit der geringstmöglichen Summe der Kantengewichte verbindet. Diese Aktion ist nützlich in Netzwerken, um den kostengünstigsten Weg zur Verbindung aller Punkte zu finden, wie zum Beispiel beim Verlegen von Kabeln oder Pipelines.

optNetwork.minSpanTree <result=results> <status=rc> / 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, source="string" | double | 64-bit-integer, standardizedLabels=TRUE | FALSE, standardizedLabelsOut=TRUE | FALSE ;
Einstellungen
ParameterBeschreibung
deterministicWenn auf True gesetzt, wird sichergestellt, dass jeder Aufruf (mit derselben Maschinenkonfiguration und 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 Kanteninformationen des Graphen enthält.
linksVarGibt die Datenvariablennamen für die Kantentabelle an.
logFreqTimeSteuert die Frequenz n (in Sekunden) für die Anzeige von Iterationsprotokollen für einige Algorithmen.
logLevelSteuert die Menge an Informationen, die im SAS-Log angezeigt wird.
multiLinksWenn auf True gesetzt, werden Mehrfachkanten beim Lesen eines Eingabegraphen einbezogen.
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 für die Multithread-Verarbeitung an.
outGibt die Ausgabedatentabelle an, die die Lösung für das Problem des minimalen kantengewichteten Spannbaums enthalten soll.
outGraphListGibt die Ausgabedatentabelle an, die zusammenfassende Informationen über In-Memory-Graphen enthalten soll.
outLinksGibt die Ausgabedatentabelle an, die die Kanteninformationen des Graphen zusammen mit allen Ergebnissen der Algorithmen enthält, die Metriken für Kanten berechnen.
outNodesGibt die Ausgabedatentabelle an, die die Knoteninformationen des Graphen zusammen mit allen Ergebnissen der 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 Eigenschleifen beim Lesen eines Eingabegraphen einbezogen.
sourceGibt den Quellknoten für das Problem des gerichteten minimalen Spannbaums an.
standardizedLabelsWenn auf True gesetzt, gibt an, dass die Eingabegraphendaten in einem standardisierten Format vorliegen.
standardizedLabelsOutWenn auf True gesetzt, fordert an, dass die Ausgabegraphendaten ein standardisiertes Format enthalten.
Erstellung von Beispieldaten für einen Graphen

Dieser SAS-Code erstellt eine CAS-Tabelle 'mycas.LinkSetIn', die die Kanten und Gewichte eines einfachen ungerichteten Graphen darstellt. Diese Tabelle wird als Eingabe für die Berechnung des minimalen Spannbaums verwendet.

Kopiert!
1DATA mycas.LinkSetIn;
2 INFILE DATALINES delimiter=',';
3 INPUT from $ to $ weight;
4 DATALINES;
5A,B,1
6A,C,4
7B,C,2
8B,D,5
9C,D,1
10;

Beispiele

Dieses Beispiel berechnet den minimalen Spannbaum für den in 'mycas.LinkSetIn' definierten Graphen. Die resultierenden Kanten des minimalen Spannbaums werden in der Tabelle 'mycas.MSTLinks' gespeichert.

SAS® / CAS-Code Code wartet auf Validierung durch die Community
Kopiert!
1PROC CAS;
2 LOADACTIONSET 'optNetwork';
3 ACTION optNetwork.minSpanTree /
4 links={name='LinkSetIn'}
5 out={name='MST', replace=true};
6 RUN;
7 ACTION TABLE.fetch / TABLE='MST';
8 RUN;
9QUIT;
Ergebnis :
Die Aktion gibt eine Tabelle zurück, die die Kanten des minimalen Spannbaums enthält. Für den angegebenen Graphen wären dies die Kanten (A,B), (B,C) und (C,D) mit einem Gesamtgewicht von 1 + 2 + 1 = 4.

Dieses Beispiel zeigt, wie man einen minimalen Spannbaum (oder genauer gesagt, eine Arboreszenz) für einen gerichteten Graphen berechnet, beginnend bei einem angegebenen Quellknoten 'A'. Die resultierenden Kanten werden in der Ausgabetabelle 'mycas.MST_Directed' gespeichert.

SAS® / CAS-Code Code wartet auf Validierung durch die Community
Kopiert!
1PROC CAS;
2 LOADACTIONSET 'optNetwork';
3 ACTION optNetwork.minSpanTree /
4 links={name='LinkSetIn'}
5 direction='DIRECTED'
6 SOURCE='A'
7 out={name='MST_Directed', replace=true};
8 RUN;
9 ACTION TABLE.fetch / TABLE='MST_Directed';
10 RUN;
11QUIT;
Ergebnis :
Die Ausgabetabelle 'MST_Directed' enthält die Kanten, die eine minimale Spann-Arboreszenz vom Knoten 'A' aus bilden. Das Gesamtgewicht des Baumes wird ebenfalls in den Ergebnissen angezeigt.

FAQ

Was ist der Zweck der `minSpanTree`-Aktion?
Was ist ein minimaler Spannbaum?
Welche Eingabetabellen verwendet diese Aktion?
Was ist die Hauptausgabe der `minSpanTree`-Aktion?
Kann diese Aktion auch für gerichtete Graphen verwendet werden?