optNetwork

connectedComponents

Description

L'action `connectedComponents` est utilisée pour trouver les composantes connexes d'un graphe. Une composante connexe est un sous-graphe dans lequel il existe un chemin entre toute paire de nœuds, et qui est connecté à aucun autre nœud du super-graphe. Cette action est fondamentale en analyse de réseaux pour comprendre la structure et la connectivité d'un graphe, par exemple pour identifier des clusters ou des groupes isolés.

optNetwork.connectedComponents <result=results> <status=rc> / algorithm="AFFOREST" | "AUTOMATIC" | "DFS" | "UNIONFIND", deterministic=TRUE | FALSE, direction="DIRECTED" | "UNDIRECTED", display={...}, distributed=TRUE | FALSE, graph=integer, indexOffset=integer, links={...}, linksVar={...}, logFreqTime=integer, logLevel="AGGRESSIVE" | "BASIC" | "MODERATE" | "NONE", multiLinks=TRUE | FALSE, nodes={...}, nodesVar={...}, nThreads=integer, out={...}, outGraphList={...}, outLinks={...}, outNodes={...}, outputTables={...}, selfLinks=TRUE | FALSE, standardizedLabels=TRUE | FALSE, standardizedLabelsOut=TRUE | FALSE ;
Paramètres
ParamètreDescription
algorithmSpécifie l'algorithme à utiliser pour calculer les composantes connexes. Les options sont 'AFFOREST', 'AUTOMATIC', 'DFS', 'UNIONFIND'.
deterministicLorsqu'il est défini sur True, garantit que chaque invocation (avec la même configuration machine et les mêmes paramètres) produit le même résultat final.
directionSpécifie si le graphe d'entrée doit être considéré comme orienté ('DIRECTED') ou non orienté ('UNDIRECTED').
displaySpécifie une liste de tables de résultats à envoyer au client pour affichage.
distributedLorsqu'il est défini sur True, utilise un graphe distribué.
graphSpécifie le graphe en mémoire à utiliser.
indexOffsetSpécifie le décalage d'index pour les identifiants dans les journaux et les tables de résultats.
linksSpécifie la table de données d'entrée qui contient les informations sur les liens du graphe.
linksVarSpécifie les noms des variables de données pour la table des liens.
logFreqTimeContrôle la fréquence (en secondes) d'affichage des journaux d'itération pour certains algorithmes.
logLevelContrôle la quantité d'informations affichées dans le journal SAS. Les niveaux sont 'NONE', 'BASIC', 'MODERATE', 'AGGRESSIVE'.
multiLinksLorsqu'il est défini sur True, inclut les liens multiples lors de la lecture d'un graphe d'entrée.
nodesSpécifie la table de données d'entrée qui contient les informations sur les nœuds du graphe.
nodesVarSpécifie les noms des variables de données pour la table des nœuds.
nThreadsSpécifie le nombre maximum de threads à utiliser pour le traitement multithread.
outSpécifie la table de données de sortie qui contiendra les informations récapitulatives sur les composantes connexes.
outGraphListSpécifie la table de données de sortie pour contenir les informations récapitulatives sur les graphes en mémoire.
outLinksSpécifie la table de données de sortie pour contenir les informations sur les liens du graphe ainsi que les résultats des algorithmes.
outNodesSpécifie la table de données de sortie pour contenir les informations sur les nœuds du graphe ainsi que les résultats des algorithmes.
outputTablesListe les noms des tables de résultats à sauvegarder en tant que tables CAS sur le serveur.
selfLinksLorsqu'il est défini sur True, inclut les auto-liens (boucles) lors de la lecture d'un graphe d'entrée.
standardizedLabelsLorsqu'il est défini sur True, spécifie que les données du graphe d'entrée sont dans un format standardisé.
standardizedLabelsOutLorsqu'il est défini sur True, demande que les données du graphe de sortie incluent un format standardisé.
Préparation des Données Voir la fiche de ce code dataprep
Création de Données de Liens pour un Graphe

Ce code crée une table CAS `mycas.Links` qui représente les liens d'un graphe non orienté. Le graphe contient trois composantes connexes distinctes pour illustrer le fonctionnement de l'algorithme.

Copié !
1DATA mycas.Links;
2 INFILE DATALINES delimiter=',';
3 INPUT from $ to $ @@;
4 DATALINES;
5A, B, A, C, B, C,
6D, E, D, F, E, F,
7G, H
8;
9RUN;

Exemples

Cet exemple exécute l'action `connectedComponents` sur le graphe défini par `mycas.Links` pour trouver les composantes connexes. Les résultats, qui identifient à quelle composante chaque nœud appartient, sont stockés dans la table `mycas.NodesOut`.

Code SAS® / CAS Code en attente de validation par la communauté
Copié !
1PROC CAS;
2 ACTION optNetwork.connectedComponents /
3 links={name='Links'}
4 outNodes={name='NodesOut', replace=true};
5RUN;
6PROC PRINT DATA=mycas.NodesOut; RUN;
Résultat :
La table `NodesOut` contiendra une ligne pour chaque nœud, avec une colonne `concomp` indiquant l'ID de la composante connexe. Les nœuds A, B, C appartiendront à une composante (par exemple, ID 1), D, E, F à une autre (par exemple, ID 2), et G, H à une troisième (par exemple, ID 3).

Cet exemple utilise un graphe orienté pour trouver les composantes fortement connexes. Une composante est fortement connexe s'il existe un chemin orienté de chaque nœud de la composante vers chaque autre nœud de la même composante. L'option `direction='DIRECTED'` est cruciale ici.

Code SAS® / CAS Code en attente de validation par la communauté
Copié !
1DATA mycas.LinksDirected;
2 INFILE DATALINES delimiter=',';
3 INPUT from $ to $ @@;
4 DATALINES;
5A, B, B, C, C, A,
6D, E, E, F, F, D,
7G, H, H, I, I, G,
8J, K
9;
10RUN;
11PROC CAS;
12 ACTION optNetwork.connectedComponents /
13 direction='DIRECTED'
14 links={name='LinksDirected'}
15 outNodes={name='NodesOutDirected', replace=true};
16RUN;
17PROC PRINT DATA=mycas.NodesOutDirected; RUN;
Résultat :
La table `NodesOutDirected` montrera que les nœuds A, B, C forment une composante fortement connexe, tout comme D, E, F et G, H, I. Le nœud J et le nœud K formeront chacun leur propre composante connexe car il n'y a pas de chemin retour de K à J.

FAQ

Quel est le but de l'action connectedComponents ?
Quels algorithmes peuvent être utilisés pour calculer les composantes connexes ?
Comment l'action gère-t-elle les graphes orientés et non orientés ?
Comment spécifier les données d'entrée pour le graphe ?
Quelles sont les tables de sortie générées par cette action ?

Scénarios associés

Cas d'usage
Détection de réseaux de blanchiment d'argent (Standard)

Une banque souhaite identifier des groupes de comptes clients qui effectuent des transactions circulaires ou isolées entre eux, potentiellement symptomatiques de blanchiment d'a...

Cas d'usage
Analyse d'influence sur réseau social volumineux (Performance)

Un média social souhaite cartographier les communautés d'utilisateurs. Le volume de données est important. Le test vise à vérifier la performance de l'algorithme 'AFFOREST' (opt...

Cas d'usage
Optimisation de chaîne logistique avec dépendances (Cas Limite)

Une usine analyse sa chaîne d'assemblage. Contrairement aux réseaux sociaux, le flux est ici 'ORIENTÉ' (A livre à B). Le test vérifie la gestion des graphes orientés, des boucle...