optNetwork biconnectedComponents

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

Scénario de test & Cas d'usage

Contexto empresarial

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 terminan en el mismo almacén (auto-enlaces o bucles), y múltiples rutas idénticas registradas entre dos centros de distribución (multi-enlaces). El objetivo es probar si la acción puede manejar estos casos límite y cómo la direccionalidad afecta el análisis.
Sobre el conjunto : optNetwork

Análisis de redes y algoritmos de grafos.

Descubrir todas las acciones de optNetwork
Preparación de datos

Crea una tabla de enlaces con auto-enlaces (un nodo conectado a sí mismo), multi-enlaces (múltiples conexiones entre el mismo par de nodos) y una estructura que cambia significativamente si se considera dirigida o no.

¡Copiado!
1DATA mycas.RedLogisticaSucia;
2 INFILE DATALINES delimiter=',';
3 LENGTH from $ 4 to $ 4;
4 INPUT from $ to $;
5 DATALINES;
6 WH_A,WH_B /* Enlace normal */
7 WH_B,WH_C /* WH_B es un punto de articulación */
8 WH_C,WH_A /* Cierra un ciclo */
9 WH_C,WH_D /* Conexión a otro componente */
10 WH_D,WH_D /* Auto-enlace o bucle */
11 WH_E,WH_F /* Multi-enlace 1 */
12 WH_E,WH_F /* Multi-enlace 2 */
13 WH_G,WH_H /* Enlace que será unidireccional */
14 ;
15RUN;

Étapes de réalisation

1
Ejecutar el análisis como un grafo no dirigido, permitiendo explícitamente auto-enlaces y multi-enlaces.
¡Copiado!
1PROC CAS;
2 ACTION optNetwork.biconnectedComponents /
3 links={name='RedLogisticaSucia'}
4 selfLinks=TRUE
5 multiLinks=TRUE
6 direction='UNDIRECTED'
7 outNodes={name='Nodos_NoDirigido', replace=true}
8 outLinks={name='Enlaces_NoDirigido', replace=true};
9RUN;
10QUIT;
2
Ejecutar el análisis de nuevo, pero esta vez como un grafo dirigido, para comparar los resultados.
¡Copiado!
1PROC CAS;
2 ACTION optNetwork.biconnectedComponents /
3 links={name='RedLogisticaSucia'}
4 selfLinks=TRUE
5 multiLinks=TRUE
6 direction='DIRECTED'
7 outNodes={name='Nodos_Dirigido', replace=true}
8 outLinks={name='Enlaces_Dirigido', replace=true};
9RUN;
10QUIT;
3
Comparar los puntos de articulación identificados en ambos análisis.
¡Copiado!
1PROC PRINT DATA=mycas.Nodos_NoDirigido(where=(artpoint=1));
2 title 'Puntos de Articulación (No Dirigido)';
3RUN;
4PROC PRINT DATA=mycas.Nodos_Dirigido(where=(artpoint=1));
5 title 'Puntos de Articulación (Dirigido)';
6RUN;

Resultado esperado


La acción debe procesar los datos sin errores en ambos casos. En el análisis no dirigido, 'WH_C' será el único punto de articulación. El ciclo 'WH_A-WH_B-WH_C' y el enlace 'WH_E-WH_F' formarán componentes biconexos robustos. En el análisis dirigido, los resultados cambiarán: 'WH_G' podría convertirse en un punto de articulación si solo tiene una salida hacia 'WH_H' y no hay camino de regreso. El resultado demostrará que la acción maneja correctamente datos imperfectos y que la elección del parámetro `direction` es crucial para una interpretación correcta del modelo de red.