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.
| Paramètre | Description |
|---|---|
| algorithm | Spécifie l'algorithme à utiliser pour calculer les composantes connexes. Les options sont 'AFFOREST', 'AUTOMATIC', 'DFS', 'UNIONFIND'. |
| deterministic | Lorsqu'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. |
| direction | Spécifie si le graphe d'entrée doit être considéré comme orienté ('DIRECTED') ou non orienté ('UNDIRECTED'). |
| display | Spécifie une liste de tables de résultats à envoyer au client pour affichage. |
| distributed | Lorsqu'il est défini sur True, utilise un graphe distribué. |
| graph | Spécifie le graphe en mémoire à utiliser. |
| indexOffset | Spécifie le décalage d'index pour les identifiants dans les journaux et les tables de résultats. |
| links | Spécifie la table de données d'entrée qui contient les informations sur les liens du graphe. |
| linksVar | Spécifie les noms des variables de données pour la table des liens. |
| logFreqTime | Contrôle la fréquence (en secondes) d'affichage des journaux d'itération pour certains algorithmes. |
| logLevel | Contrôle la quantité d'informations affichées dans le journal SAS. Les niveaux sont 'NONE', 'BASIC', 'MODERATE', 'AGGRESSIVE'. |
| multiLinks | Lorsqu'il est défini sur True, inclut les liens multiples lors de la lecture d'un graphe d'entrée. |
| nodes | Spécifie la table de données d'entrée qui contient les informations sur les nœuds du graphe. |
| nodesVar | Spécifie les noms des variables de données pour la table des nœuds. |
| nThreads | Spécifie le nombre maximum de threads à utiliser pour le traitement multithread. |
| out | Spécifie la table de données de sortie qui contiendra les informations récapitulatives sur les composantes connexes. |
| outGraphList | Spécifie la table de données de sortie pour contenir les informations récapitulatives sur les graphes en mémoire. |
| outLinks | Spécifie la table de données de sortie pour contenir les informations sur les liens du graphe ainsi que les résultats des algorithmes. |
| outNodes | Spé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. |
| outputTables | Liste les noms des tables de résultats à sauvegarder en tant que tables CAS sur le serveur. |
| selfLinks | Lorsqu'il est défini sur True, inclut les auto-liens (boucles) lors de la lecture d'un graphe d'entrée. |
| standardizedLabels | Lorsqu'il est défini sur True, spécifie que les données du graphe d'entrée sont dans un format standardisé. |
| standardizedLabelsOut | Lorsqu'il est défini sur True, demande que les données du graphe de sortie incluent un format standardisé. |
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.
| 1 | DATA mycas.Links; |
| 2 | INFILE DATALINES delimiter=','; |
| 3 | INPUT from $ to $ @@; |
| 4 | DATALINES; |
| 5 | A, B, A, C, B, C, |
| 6 | D, E, D, F, E, F, |
| 7 | G, H |
| 8 | ; |
| 9 | RUN; |
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`.
| 1 | PROC CAS; |
| 2 | ACTION optNetwork.connectedComponents / |
| 3 | links={name='Links'} |
| 4 | outNodes={name='NodesOut', replace=true}; |
| 5 | RUN; |
| 6 | PROC PRINT DATA=mycas.NodesOut; RUN; |
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.
| 1 | DATA mycas.LinksDirected; |
| 2 | INFILE DATALINES delimiter=','; |
| 3 | INPUT from $ to $ @@; |
| 4 | DATALINES; |
| 5 | A, B, B, C, C, A, |
| 6 | D, E, E, F, F, D, |
| 7 | G, H, H, I, I, G, |
| 8 | J, K |
| 9 | ; |
| 10 | RUN; |
| 11 | PROC CAS; |
| 12 | ACTION optNetwork.connectedComponents / |
| 13 | direction='DIRECTED' |
| 14 | links={name='LinksDirected'} |
| 15 | outNodes={name='NodesOutDirected', replace=true}; |
| 16 | RUN; |
| 17 | PROC PRINT DATA=mycas.NodesOutDirected; RUN; |
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...
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...
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...