Scénario de test & Cas d'usage
Análisis de redes y algoritmos de grafos.
Descubrir todas las acciones de optNetworkCrea 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.
| 1 | DATA 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 | ; |
| 15 | RUN; |
| 1 | PROC 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}; |
| 9 | RUN; |
| 10 | QUIT; |
| 1 | PROC 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}; |
| 9 | RUN; |
| 10 | QUIT; |
| 1 | PROC PRINT DATA=mycas.Nodos_NoDirigido(where=(artpoint=1)); |
| 2 | title 'Puntos de Articulación (No Dirigido)'; |
| 3 | RUN; |
| 4 | PROC PRINT DATA=mycas.Nodos_Dirigido(where=(artpoint=1)); |
| 5 | title 'Puntos de Articulación (Dirigido)'; |
| 6 | RUN; |
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.