L'action `biconnectedComponents` est utilisée pour trouver les composantes biconnexées et les points d'articulation d'un graphe. Une composante biconnexée (ou bloc) est un sous-graphe connexe maximal qui ne peut pas être déconnecté par la suppression d'un seul nœud. Un point d'articulation est un nœud dont la suppression augmenterait le nombre de composantes connexes du graphe. Cette analyse est fondamentale en théorie des graphes pour comprendre la robustesse et les points de défaillance potentiels d'un réseau.
| Paramètre | Description |
|---|---|
| deterministic | Lorsque défini sur True, garantit que chaque exécution (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é ou non orienté. |
| display | Spécifie une liste de tables de résultats à envoyer au client pour affichage. |
| distributed | Lorsque 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. Par exemple, si trois entités sont trouvées, elles sont étiquetées 0, 1, 2 par défaut. Si la valeur est 4, elles seront étiquetées 4, 5, 6. |
| 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. |
| multiLinks | Lorsque 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 pour contenir les informations récapitulatives sur les composantes biconnexées. |
| outBCTreeLinks | Spécifie la table de données de sortie pour contenir les liens de l'arbre de blocs-coupes (block-cut tree). |
| outBCTreeNodes | Spécifie la table de données de sortie pour contenir les nœuds de l'arbre de blocs-coupes (block-cut tree). |
| outGraphList | Spécifie la table de données de sortie pour contenir des 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 | Lorsque défini sur True, inclut les liens réflexifs (boucles) lors de la lecture d'un graphe d'entrée. |
| standardizedLabels | Lorsque défini sur True, spécifie que les données du graphe d'entrée sont dans un format standardisé. |
| standardizedLabelsOut | Lorsque défini sur True, demande que les données du graphe de sortie incluent un format standardisé. |
Pour utiliser l'action `biconnectedComponents`, il faut d'abord créer une table de liens qui définit la structure du graphe. Chaque ligne de la table représente un lien (ou arête) entre deux nœuds.
| 1 | DATA mycas.LinkSetIn; |
| 2 | INPUT from $ to $ @@; |
| 3 | DATALINES; |
| 4 | A B A C A D B C D E D F E F |
| 5 | ; |
| 6 | RUN; |
Cet exemple trouve les composantes biconnexées et les points d'articulation pour un graphe simple non orienté. Les résultats sont stockés dans les tables `ArtPoints` et `BiConComp`.
| 1 | PROC CAS; |
| 2 | ACTION optNetwork.biconnectedComponents / |
| 3 | links={name='LinkSetIn'}, |
| 4 | outNodes={name='ArtPoints', replace=true}, |
| 5 | out={name='BiConComp', replace=true}; |
| 6 | RUN; |
| 7 | QUIT; |
Cet exemple plus complexe analyse un graphe, identifie les composantes biconnexées et les points d'articulation, puis génère l'arbre de blocs-coupes. L'arbre de blocs-coupes est un graphe auxiliaire qui représente la relation entre les points d'articulation et les composantes biconnexées. Les nœuds de cet arbre sont les points d'articulation et les blocs (composantes biconnexées) du graphe original.
| 1 | PROC CAS; |
| 2 | ACTION optNetwork.biconnectedComponents / |
| 3 | links={name='LinkSetIn'}, |
| 4 | outNodes={name='ArtPoints', replace=true}, |
| 5 | outLinks={name='BiConCompLinks', replace=true}, |
| 6 | outBCTreeNodes={name='BCTreeNodes', replace=true}, |
| 7 | outBCTreeLinks={name='BCTreeLinks', replace=true}; |
| 8 | RUN; |
| 9 | QUIT; |
Une entreprise de transport souhaite identifier les hubs logistiques (nœuds) les plus critiques de son réseau de distribution en Europe. La suppression d'un hub critique (point ...
Un réseau social veut analyser la structure des communautés d'utilisateurs dans différents pays. L'objectif est d'exécuter l'analyse en parallèle pour chaque pays (en utilisant ...
Un administrateur système veut vérifier la résilience de son réseau informatique. Le schéma du réseau contient des liens redondants (multi-liens), des équipements en auto-diagno...