optNetwork

minCut

Beschreibung

Berechnet den minimalen Schnitt eines Graphen. Ein minimaler Schnitt ist eine Partition der Knoten eines Graphen in zwei disjunkte Teilmengen, die eine Quelle und eine Senke trennt und bei der die Summe der Gewichte der Kanten, die die beiden Teilmengen verbinden, minimal ist. Diese Aktion ist nützlich in Bereichen wie Netzwerksicherheit, Clusteranalyse und Bildsegmentierung.

optNetwork.minCut <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", maxCuts=integer, maxWeight=double, multiLinks=TRUE | FALSE, nodes={...}, nodesVar={...}, nThreads=integer, outCutSets={...}, outGraphList={...}, outLinks={...}, outNodes={...}, outPartitions={...}, outputTables={...}, selfLinks=TRUE | FALSE, sink="string" | double | 64-bit-integer, source="string" | double | 64-bit-integer, standardizedLabels=TRUE | FALSE, standardizedLabelsOut=TRUE | FALSE;
Einstellungen
ParameterBeschreibung
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 Protokoll- und Ergebnisausgabetabellen an.
linksGibt die Eingabedatentabelle an, die die Graphenkanteninformationen 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 der im SAS-Protokoll angezeigten Informationen.
maxCutsGibt die maximale Anzahl von Schnitten an, die der Algorithmus zurückgeben soll.
maxWeightGibt das maximale Gewicht der vom Algorithmus zurückzugebenden Schnitte an.
multiLinksWenn auf True gesetzt, werden beim Lesen eines Eingabegraphen Mehrfachkanten berücksichtigt.
nodesGibt die Eingabedatentabelle an, die die Graphenknoteninformationen 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.
outCutSetsGibt die Ausgabedatentabelle an, die minimale Schnittmengen enthalten soll.
outGraphListGibt die Ausgabedatentabelle an, die zusammenfassende Informationen über In-Memory-Graphen enthalten soll.
outLinksGibt die Ausgabedatentabelle an, die die Graphenkanteninformationen zusammen mit allen Ergebnissen der Algorithmen enthält, die Metriken für Kanten berechnen.
outNodesGibt die Ausgabedatentabelle an, die die Graphenknoteninformationen zusammen mit allen Ergebnissen der Algorithmen enthält, die Metriken für Knoten berechnen.
outPartitionsGibt die Ausgabedatentabelle an, die minimale Schnittpartitionen enthalten soll.
outputTablesListet die Namen der Ergebnistabellen auf, die als CAS-Tabellen auf dem Server gespeichert werden sollen.
selfLinksWenn auf True gesetzt, werden beim Lesen eines Eingabegraphen Eigenschleifen berücksichtigt.
sinkGibt den Senkenknoten des minimalen Schnitts an.
sourceGibt den Quellknoten des minimalen Schnitts 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 den minimalen Schnitt

Dieser SAS-Code erstellt eine CAS-Tabelle namens 'mycas.LinkSetIn', die die Kanten und deren Gewichte für einen Beispielgraphen enthält. Diese Daten werden verwendet, um die minCut-Aktion zu demonstrieren.

Kopiert!
1DATA mycas.LinkSetIn;
2 INFILE DATALINES delimiter=',';
3 INPUT from $ to $ weight;
4 DATALINES;
5 A,B,2
6 A,C,7
7 B,C,1
8 B,D,3
9 B,E,4
10 C,D,4
11 C,E,3
12 D,F,1
13 E,F,6
14 E,G,5
15 F,G,2
16 G,H,6
17 ;,
18RUN;

Beispiele

Dieses Beispiel findet den minimalen Schnitt zwischen der Quelle 'A' und der Senke 'H' in einem ungerichteten Graphen. Es gibt die Schnittkanten und die resultierenden Knotenpartitionen aus.

SAS® / CAS-Code Code wartet auf Validierung durch die Community
Kopiert!
1PROC CAS;
2 optNetwork.minCut /
3 links={name='LinkSetIn'}
4 SOURCE='A'
5 sink='H'
6 outCutSets={name='CutSets', replace=true}
7 outPartitions={name='NodePartitions', replace=true};
8RUN;
Ergebnis :
Die Ausgabe zeigt einen minimalen Schnittwert, eine Tabelle mit den Schnittkanten ('CutSets') und eine Tabelle, die die resultierenden Knotenpartitionen ('NodePartitions') anzeigt.

Dieses Beispiel sucht nach minimalen Schnitten zwischen Quelle 'A' und Senke 'H' in einem gerichteten Graphen. Es werden bis zu 3 Schnitte angefordert, wobei jeder Schnitt ein Gesamtgewicht von höchstens 10 haben darf.

SAS® / CAS-Code Code wartet auf Validierung durch die Community
Kopiert!
1PROC CAS;
2 optNetwork.minCut /
3 direction='DIRECTED'
4 links={name='LinkSetIn'}
5 SOURCE='A'
6 sink='H'
7 maxCuts=3
8 maxWeight=10
9 outCutSets={name='CutSets', replace=true}
10 outPartitions={name='NodePartitions', replace=true};
11RUN;
Ergebnis :
Die Ausgabe listet bis zu drei Schnitte auf, die die Kriterien erfüllen, zusammen mit ihren Gewichten und den entsprechenden Knotenpartitionen. Wenn weniger als drei Schnitte die Gewichtsbeschränkung von 10 erfüllen, werden nur diese angezeigt.

FAQ

Was ist der Zweck der `minCut`-Aktion im `optNetwork`-Aktionsset?
Welche Funktion haben die Parameter `source` und `sink` in der `minCut`-Aktion?
Wie kann ich die Anzahl der zurückgegebenen Schnitte begrenzen?
Gibt es eine Möglichkeit, Schnitte basierend auf ihrem Gewicht zu filtern?
Was bedeutet der Parameter `direction` und welche Werte kann er annehmen?