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
deterministicCuando 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.
directionEspecifica si se debe considerar el grafo de entrada como dirigido o no dirigido. El valor predeterminado es 'UNDIRECTED'.
displayEspecifica una lista de tablas de resultados para enviar al cliente para su visualización.
distributedCuando se establece en True, utiliza un grafo distribuido.
graphEspecifica el grafo en memoria a utilizar.
indexOffsetEspecifica el desplazamiento del índice para los identificadores en las tablas de datos de salida de registro y resultados.
linksEspecifica la tabla de datos de entrada que contiene la información de los enlaces del grafo.
linksVarEspecifica los nombres de las variables de datos para la tabla de enlaces.
logFreqTimeControla la frecuencia n (en segundos) para mostrar los registros de iteración para algunos algoritmos.
logLevelControla la cantidad de información que se muestra en el registro de SAS.
multiLinksCuando se establece en True, incluye multienlaces cuando se lee un grafo de entrada.
nodesEspecifica la tabla de datos de entrada que contiene la información de los nodos del grafo.
nodesVarEspecifica los nombres de las variables de datos para la tabla de nodos.
nThreadsEspecifica el número máximo de hilos a utilizar para el procesamiento multihilo.
outEspecifica la tabla de datos de salida que contendrá la información de resumen sobre los componentes biconexos.
outBCTreeLinksEspecifica la tabla de datos de salida que contendrá los enlaces en el árbol de bloques y cortes (block-cut tree).
outBCTreeNodesEspecifica la tabla de datos de salida que contendrá los nodos en el árbol de bloques y cortes (block-cut tree).
outGraphListEspecifica la tabla de datos de salida que contendrá información de resumen sobre los grafos en memoria.
outLinksEspecifica 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.
outNodesEspecifica 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.
outputTablesLista los nombres de las tablas de resultados para guardar como tablas CAS en el servidor.
selfLinksCuando se establece en True, incluye auto-enlaces (bucles) cuando se lee un grafo de entrada.
standardizedLabelsCuando se establece en True, especifica que los datos del grafo de entrada están en un formato estandarizado.
standardizedLabelsOutCuando 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...