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.
| Parameter | Beschreibung |
|---|---|
| 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. |
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.
| 1 | DATA 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 | ;, |
| 18 | RUN; |
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.
| 1 | PROC 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}; |
| 8 | RUN; |
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.
| 1 | PROC 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}; |
| 11 | RUN; |