optNetwork

cycle

Description

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.

optNetwork.cycle / algorithm="BACKTRACK" | "BUILD", direction="DIRECTED" | "UNDIRECTED", links={name="table_liens"}, nodes={name="table_noeuds"}, maxCycles=entier | "ALL", minLength=entier, maxLength=entier, outCyclesLinks={name="table_sortie_liens"}, outNodes={name="table_sortie_noeuds"};
Paramètres
ParamètreDescription
linksSpécifie la table d'entrée contenant les liens (arcs) du graphe.
directionDéfinit le type de graphe : 'DIRECTED' (dirigé) ou 'UNDIRECTED' (non dirigé). La valeur par défaut est UNDIRECTED.
maxCyclesSpécifie le nombre maximum de cycles à retourner. La valeur par défaut est 1. Utilisez 'ALL' pour tout retourner.
minLengthDéfinit le nombre minimum de liens qu'un cycle doit contenir pour être inclus dans les résultats.
maxLengthDéfinit le nombre maximum de liens qu'un cycle peut contenir.
outCyclesLinksSpécifie la table de sortie CAS qui contiendra les identifiants et attributs des liens composant les cycles détectés.
algorithmChoisit l'algorithme d'énumération : 'BACKTRACK' (par défaut si maxLength > 20) ou 'BUILD'.
Préparation des Données Voir la fiche de ce code dataprep
Création des données de graphe

Création d'une table de liens représentant un graphe simple contenant un cycle A->B->C->A.

Copié !
1DATA casuser.LinkSetIn; INPUT from $ to $ weight; DATALINES;
2A B 1
3B C 1
4C A 1
5A D 1
6; RUN;

Exemples

Recherche d'un cycle dans un graphe dirigé en utilisant les paramètres par défaut.

Code SAS® / CAS Code en attente de validation par la communauté
Copié !
1 
2PROC CAS;
3optNetwork.cycle / direction="DIRECTED" links={name="LinkSetIn"} outCyclesLinks={name="CyclesFound", replace=true};
4 
5RUN;
6 
Résultat :
Génération de la table 'CyclesFound' contenant les liens A-B, B-C et C-A qui forment le cycle.

Recherche de tous les cycles possibles ayant une longueur minimale de 3 liens, sans limite de nombre de cycles.

Code SAS® / CAS Code en attente de validation par la communauté
Copié !
1 
2PROC CAS;
3optNetwork.cycle / direction="DIRECTED" links={name="LinkSetIn"} minLength=3 maxCycles="ALL" outCyclesLinks={name="AllCycles", replace=true} outNodes={name="CycleNodes", replace=true};
4 
5RUN;
6 
Résultat :
Création des tables 'AllCycles' (liens) et 'CycleNodes' (nœuds) listant l'intégralité des cycles respectant la longueur minimale.

FAQ

Quelle est la fonction principale de l'action cycle ?
Quels algorithmes peuvent être utilisés pour l'énumération des cycles ?
Comment spécifier si le graphe doit être traité comme orienté ou non ?
Est-il possible de limiter le nombre de cycles trouvés ?
Comment filtrer les cycles selon leur longueur ou leur poids ?
Quelles sont les tables d'entrée requises ?
Où sont stockés les résultats des cycles détectés ?

Scénarios associés

Cas d'usage
Détection de blanchiment d'argent (Smurfing)

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)...

Cas d'usage
Analyse de redondance réseau (Volumétrie)

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...

Cas d'usage
Validation de processus logistique (Cas Limite)

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...