optNetwork

biconnectedComponents

Descripción

La acción `biconnectedComponents` se utiliza en el análisis de redes para identificar componentes biconexos y puntos de articulación en un grafo. En teoría de grafos, un componente biconexo (o bloque) es un subgrafo biconexo máximo. Un grafo es biconexo si permanece conectado incluso después de eliminar cualquier nodo individual. Los puntos de articulación son nodos cuya eliminación aumentaría el número de componentes conectados del grafo. Esta acción es fundamental para analizar la robustez y vulnerabilidad de una red, como redes de comunicación, eléctricas o sociales, ya que permite identificar puntos críticos de fallo.

optNetwork.biconnectedComponents { 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={...}, outBCTreeLinks={...}, outBCTreeNodes={...}, outGraphList={...}, outLinks={...}, outNodes={...}, outputTables={...}, selfLinks=TRUE | FALSE, standardizedLabels=TRUE | FALSE, standardizedLabelsOut=TRUE | FALSE };
Parámetros
ParámetroDescripción
deterministic Cuando se establece en True, asegura que cada invocación (con la misma configuración de máquina y ajustes de parámetros) produzca el mismo resultado final.
direction Especifica si se debe considerar el grafo de entrada como dirigido o no dirigido. El valor predeterminado es 'UNDIRECTED'.
display Especifica una lista de tablas de resultados para enviar al cliente para su visualización.
distributed Cuando se establece en True, utiliza un grafo distribuido.
graph Especifica el grafo en memoria a utilizar.
indexOffset Especifica el desplazamiento del índice para los identificadores en las tablas de datos de salida de registro y resultados.
links Especifica la tabla de datos de entrada que contiene la información de los enlaces del grafo.
linksVar Especifica los nombres de las variables de datos para la tabla de enlaces.
logFreqTime Controla la frecuencia n (en segundos) para mostrar los registros de iteración para algunos algoritmos.
logLevel Controla la cantidad de información que se muestra en el registro de SAS.
multiLinks Cuando se establece en True, incluye multienlaces cuando se lee un grafo de entrada.
nodes Especifica la tabla de datos de entrada que contiene la información de los nodos del grafo.
nodesVar Especifica los nombres de las variables de datos para la tabla de nodos.
nThreads Especifica el número máximo de hilos a utilizar para el procesamiento multihilo.
out Especifica la tabla de datos de salida que contendrá la información de resumen sobre los componentes biconexos.
outBCTreeLinks Especifica la tabla de datos de salida que contendrá los enlaces en el árbol de bloques y cortes (block-cut tree).
outBCTreeNodes Especifica la tabla de datos de salida que contendrá los nodos en el árbol de bloques y cortes (block-cut tree).
outGraphList Especifica la tabla de datos de salida que contendrá información de resumen sobre los grafos en memoria.
outLinks Especifica la tabla de datos de salida que contendrá la información de los enlaces del grafo junto con los resultados de los algoritmos que calculan métricas en los enlaces.
outNodes Especifica la tabla de datos de salida que contendrá la información de los nodos del grafo junto con los resultados de los algoritmos que calculan métricas en los nodos.
outputTables Lista los nombres de las tablas de resultados para guardar como tablas CAS en el servidor.
selfLinks Cuando se establece en True, incluye auto-enlaces (bucles) cuando se lee un grafo de entrada.
standardizedLabels Cuando se establece en True, especifica que los datos del grafo de entrada están en un formato estandarizado.
standardizedLabelsOut Cuando se establece en True, solicita que los datos del grafo de salida incluyan un formato estandarizado.
Creación de un Conjunto de Datos de Enlaces de Grafo

Este código SAS crea una tabla CAS llamada `LinkSetIn` que representa los enlaces de un grafo no dirigido. Esta tabla se utilizará como entrada para los ejemplos de la acción `biconnectedComponents`.

¡Copiado!
1DATA mycas.LinkSetIn;
2 INFILE DATALINES delimiter=',';
3 INPUT from $ to $ @@;
4 DATALINES;
5 A,B A,F B,C B,E C,D
6 D,E D,G G,H G,I H,I
7 J,K K,L L,M M,J
8 ;
9RUN;

Ejemplos

Este ejemplo encuentra los componentes biconexos y los puntos de articulación para el grafo no dirigido definido en `LinkSetIn`. Es el uso más simple de la acción para un análisis de robustez básico.

Código SAS® / CAS Código en espera de validación por la comunidad
¡Copiado!
1PROC CAS;
2 ACTION optNetwork.biconnectedComponents /
3 links={name='LinkSetIn'}
4 outNodes={name='outArtPoints', replace=true}
5 outLinks={name='outBiconnectedComponents', replace=true};
6RUN;
7QUIT;
Resultado :
La acción genera dos tablas de salida. La tabla `outArtPoints` lista los nodos que son puntos de articulación (en este caso, 'B', 'D' y 'G'). La tabla `outBiconnectedComponents` lista los enlaces para cada componente biconexo, identificando los bloques del grafo.

Este ejemplo realiza un análisis más profundo generando el árbol de bloques y cortes. Esta estructura de datos es un árbol que representa la relación entre los puntos de articulación (cortes) y los componentes biconexos (bloques) de un grafo. Es extremadamente útil para visualizaciones avanzadas y para comprender la estructura jerárquica de la conectividad de la red.

Código SAS® / CAS Código en espera de validación por la comunidad
¡Copiado!
1PROC CAS;
2 ACTION optNetwork.biconnectedComponents /
3 links={name='LinkSetIn'}
4 outNodes={name='outArtPoints', replace=true}
5 outLinks={name='outBiComponents', replace=true}
6 outBCTreeNodes={name='outBCTreeNodes', replace=true}
7 outBCTreeLinks={name='outBCTreeLinks', replace=true};
8RUN;
9QUIT;
Resultado :
Se generan cuatro tablas de salida: `outArtPoints` (puntos de articulación), `outBiComponents` (enlaces por componente biconexo), `outBCTreeNodes` (nodos del árbol de bloques y cortes, distinguiendo entre nodos originales y bloques) y `outBCTreeLinks` (enlaces que estructuran el árbol de bloques y cortes). Este análisis es crucial para entender las vulnerabilidades estructurales de la red y cómo los diferentes bloques están interconectados a través de los puntos de articulación.

Escenarios asociados

Caso de uso
Análisis de Puntos Críticos en una Red de Comunicaciones

Una empresa de telecomunicaciones necesita identificar los routers y conmutadores críticos (puntos de articulación) en su infraestructura de red. La caída de uno de estos nodos ...

Caso de uso
Análisis de Vulnerabilidad en una Cadena de Suministro a Gran Escala

Una corporación multinacional quiere analizar su compleja red de proveedores para identificar dependencias críticas. Un proveedor que actúa como punto de articulación podría int...

Caso de uso
Análisis de una Red Logística con Datos Imperfectos (Bucles y Enlaces Múltiples)

Un analista de logística está trabajando con datos de rutas de transporte extraídos de un sistema heredado. Los datos son 'sucios' y contienen anomalías: rutas que empiezan y te...