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
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 Protokoll- und Ergebnisausgabetabellen an.
links Gibt die Eingabedatentabelle an, die die Graphenkanteninformationen enthält.
linksVar Gibt die Datenvariablennamen für die Kantentabelle 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-Protokoll angezeigten Informationen.
maxCuts Gibt die maximale Anzahl von Schnitten an, die der Algorithmus zurückgeben soll.
maxWeight Gibt das maximale Gewicht der vom Algorithmus zurückzugebenden Schnitte an.
multiLinks Wenn auf True gesetzt, werden beim Lesen eines Eingabegraphen Mehrfachkanten berücksichtigt.
nodes Gibt die Eingabedatentabelle an, die die Graphenknoteninformationen 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.
outCutSets Gibt die Ausgabedatentabelle an, die minimale Schnittmengen enthalten soll.
outGraphList Gibt die Ausgabedatentabelle an, die zusammenfassende Informationen über In-Memory-Graphen enthalten soll.
outLinks Gibt die Ausgabedatentabelle an, die die Graphenkanteninformationen zusammen mit allen Ergebnissen der Algorithmen enthält, die Metriken für Kanten berechnen.
outNodes Gibt die Ausgabedatentabelle an, die die Graphenknoteninformationen zusammen mit allen Ergebnissen der Algorithmen enthält, die Metriken für Knoten berechnen.
outPartitions Gibt die Ausgabedatentabelle an, die minimale Schnittpartitionen enthalten soll.
outputTables Listet die Namen der Ergebnistabellen auf, die als CAS-Tabellen auf dem Server gespeichert werden sollen.
selfLinks Wenn auf True gesetzt, werden beim Lesen eines Eingabegraphen Eigenschleifen berücksichtigt.
sink Gibt den Senkenknoten des minimalen Schnitts an.
source Gibt den Quellknoten des minimalen Schnitts an.
standardizedLabels Wenn auf True gesetzt, gibt an, dass die Eingabegraphendaten in einem standardisierten Format vorliegen.
standardizedLabelsOut Wenn 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?