Die Aktion `cycle` im Aktionssatz `optNetwork` berechnet die elementaren Zyklen eines Graphen. Ein elementarer Zyklus ist ein Pfad, der am selben Knoten beginnt und endet, wobei kein Knoten (außer dem Start-/Endknoten) und kein Link mehr als einmal durchlaufen wird. Diese Aktion ist nützlich für die Analyse von Rückkopplungsschleifen in Netzwerken, wie z.B. in Lieferketten, Finanztransaktionen oder Abhängigkeitsstrukturen. Sie unterstützt sowohl gerichtete als auch ungerichtete Graphen und bietet Parameter zur Einschränkung der Suche nach Zykluslänge, Linkgewicht oder Anzahl der Ergebnisse.
| Parameter | Beschreibung |
|---|---|
| links | Gibt die Eingabedatentabelle an, die die Link-Informationen (Kanten) des Graphen enthält. |
| nodes | Gibt die Eingabedatentabelle an, die die Knoteninformationen des Graphen enthält. |
| direction | Gibt an, ob der Graph als gerichtet ('DIRECTED') oder ungerichtet ('UNDIRECTED') betrachtet werden soll. Standard ist 'UNDIRECTED'. |
| maxCycles | Begrenzt die Anzahl der zurückzugebenden Zyklen. Kann auf eine ganze Zahl oder 'ALL' gesetzt werden. Standard ist 1. |
| minLength | Gibt die minimale Anzahl von Links an, die ein Zyklus haben muss, um in das Ergebnis aufgenommen zu werden. |
| maxLength | Gibt die maximale Anzahl von Links an, die ein Zyklus haben darf, um in das Ergebnis aufgenommen zu werden. |
| out | Gibt die Ausgabedatentabelle an, die die Knoten der gefundenen Zyklen enthält. |
| outCyclesLinks | Gibt die Ausgabedatentabelle an, die die Links der gefundenen Zyklen enthält. |
| algorithm | Spezifiziert den Algorithmus zur Zyklusaufzählung: 'BACKTRACK' (Backtracking-Algorithmus) oder 'BUILD' (Building-Algorithmus). |
Erzeugt eine Datentabelle `LinkSetIn`, die einen einfachen gerichteten Graphen mit zwei Zyklen (A-B-C-A und A-D-E-A) darstellt.
| 1 | DATA mycas.LinkSetIn; INPUT from $ to $ weight; DATALINES; |
| 2 | A B 1 |
| 3 | B C 1 |
| 4 | C A 1 |
| 5 | A D 1 |
| 6 | D E 1 |
| 7 | E A 1 |
| 8 | ; RUN; |
Führt die Aktion `cycle` aus, um alle Zyklen im Graphen zu finden und die Knoten der Zyklen in der Tabelle `Cycles` zu speichern.
| 1 | |
| 2 | PROC CAS; |
| 3 | optNetwork.cycle / direction="DIRECTED" links={name="LinkSetIn"} out={name="Cycles"} maxCycles="ALL"; |
| 4 | |
| 5 | RUN; |
| 6 |
Sucht nach Zyklen mit einer genauen Länge von 3 Links, verwendet den BACKTRACK-Algorithmus und gibt sowohl Knoten als auch Links der Zyklen aus.
| 1 | |
| 2 | PROC CAS; |
| 3 | optNetwork.cycle / direction="DIRECTED" links={name="LinkSetIn"} algorithm="BACKTRACK" minLength=3 maxLength=3 out={name="CyclesNodes"} outCyclesLinks={name="CyclesLinks"} maxCycles="ALL"; |
| 4 | |
| 5 | RUN; |
| 6 |
Eine Bank möchte verdächtige Transaktionsmuster identifizieren, bei denen Geld über mehrere Konten im Kreis fließt (Smurfing/Structuring), um die Herkunft zu verschleiern. Es so...
Ein Logistikunternehmen analysiert ein massives Netzwerk von Lieferrouten auf ineffiziente Rückführungen. Da das Netzwerk riesig ist, soll der Test die Performance prüfen und di...
Ein Netzwerkadministrator sucht nach spezifischen Routing-Problemen in einem IT-Netzwerk. Es sind nur 'kurze' Schleifen von Interesse (Länge 3 bis 4), da längere Pfade als valid...