L'action cycle calcule les cycles (boucles fermées) d'un graphe. Elle permet d'identifier des relations circulaires dans des données, comme des dépendances de processus ou des flux financiers suspects. Elle prend en charge les graphes dirigés et non dirigés et offre des filtres sur la longueur et le poids des cycles.
| Paramètre | Description |
|---|---|
| links | Spécifie la table d'entrée contenant les liens (arcs) du graphe. |
| direction | Définit le type de graphe : 'DIRECTED' (dirigé) ou 'UNDIRECTED' (non dirigé). La valeur par défaut est UNDIRECTED. |
| maxCycles | Spécifie le nombre maximum de cycles à retourner. La valeur par défaut est 1. Utilisez 'ALL' pour tout retourner. |
| minLength | Définit le nombre minimum de liens qu'un cycle doit contenir pour être inclus dans les résultats. |
| maxLength | Définit le nombre maximum de liens qu'un cycle peut contenir. |
| outCyclesLinks | Spécifie la table de sortie CAS qui contiendra les identifiants et attributs des liens composant les cycles détectés. |
| algorithm | Choisit l'algorithme d'énumération : 'BACKTRACK' (par défaut si maxLength > 20) ou 'BUILD'. |
Création d'une table de liens représentant un graphe simple contenant un cycle A->B->C->A.
| 1 | DATA casuser.LinkSetIn; INPUT from $ to $ weight; DATALINES; |
| 2 | A B 1 |
| 3 | B C 1 |
| 4 | C A 1 |
| 5 | A D 1 |
| 6 | ; RUN; |
Recherche d'un cycle dans un graphe dirigé en utilisant les paramètres par défaut.
| 1 | |
| 2 | PROC CAS; |
| 3 | optNetwork.cycle / direction="DIRECTED" links={name="LinkSetIn"} outCyclesLinks={name="CyclesFound", replace=true}; |
| 4 | |
| 5 | RUN; |
| 6 |
Recherche de tous les cycles possibles ayant une longueur minimale de 3 liens, sans limite de nombre de cycles.
| 1 | |
| 2 | PROC CAS; |
| 3 | optNetwork.cycle / direction="DIRECTED" links={name="LinkSetIn"} minLength=3 maxCycles="ALL" outCyclesLinks={name="AllCycles", replace=true} outNodes={name="CycleNodes", replace=true}; |
| 4 | |
| 5 | RUN; |
| 6 |
Une banque souhaite identifier des schémas de transactions suspects où l'argent circule entre plusieurs comptes pour revenir finalement au compte d'origine (boucles financières)...
Un administrateur réseau analyse la topologie physique d'un datacenter. Il doit identifier les boucles de câblage involontaires (switching loops) dans une infrastructure massive...
Dans une chaîne d'approvisionnement, on cherche des dépendances circulaires invalides (A a besoin de B qui a besoin de A). Le test se concentre sur le filtrage précis des cycles...