La acción cycle calcula los ciclos (caminos cerrados simples) de un grafo de entrada. Un ciclo se define como un camino que comienza y termina en el mismo nodo y no repite ningún otro nodo. Esta acción es fundamental para analizar estructuras cíclicas en redes, como dependencias circulares, detección de fraudes en transacciones o análisis de bucles en procesos.
| Parámetro | Descripción |
|---|---|
| algorithm | Especifica el algoritmo a utilizar para enumerar ciclos: 'BACKTRACK' (algoritmo de retroceso, predeterminado si maxLength > 20) o 'BUILD' (algoritmo de construcción, predeterminado en otros casos). |
| direction | Especifica si el grafo se considera dirigido ('DIRECTED') o no dirigido ('UNDIRECTED'). El valor predeterminado es 'UNDIRECTED'. |
| links | Especifica la tabla de entrada que contiene la información de los enlaces (aristas) del grafo. |
| maxCycles | Especifica el número máximo de ciclos que se devolverán. Puede ser un entero de 64 bits o 'ALL'. El valor predeterminado es 1. |
| maxLength | Especifica el número máximo de enlaces permitidos en un ciclo. |
| minLength | Especifica el número mínimo de enlaces requeridos en un ciclo. El valor predeterminado es 1. |
| out | Especifica la tabla de salida que contendrá los nodos de los ciclos identificados. |
| outCyclesLinks | Especifica la tabla de salida que contendrá los enlaces de los ciclos identificados. |
| maxTime | Especifica el tiempo máximo de ejecución permitido para el algoritmo. |
Se define un conjunto de datos que representa enlaces entre nodos, creando deliberadamente estructuras cíclicas (ej. A->B->C->A) para su análisis.
| 1 | |
| 2 | DATA mycas.LinkSetIn; |
| 3 | INPUT from $ to $ weight; |
| 4 | DATALINES; |
| 5 | A B 1 B C 1 C A 1 A D 1 D E 1 E A 1 F G 1 G H 1 H F 1; |
| 6 | |
| 7 | RUN; |
| 8 |
Ejecuta la acción cycle en un grafo dirigido para encontrar un único ciclo (comportamiento predeterminado de maxCycles=1).
| 1 | |
| 2 | PROC CAS; |
| 3 | optNetwork.cycle direction="DIRECTED" links={name="LinkSetIn"} out={name="CyclesNodes"} outCyclesLinks={name="CyclesLinks"}; |
| 4 | |
| 5 | RUN; |
| 6 |
Busca todos los ciclos posibles en el grafo ('maxCycles="ALL"') e impone una restricción de longitud mínima de 3 enlaces.
| 1 | |
| 2 | PROC CAS; |
| 3 | optNetwork.cycle direction="DIRECTED" links={name="LinkSetIn"} maxCycles="ALL" minLength=3 out={name="AllCyclesNodes"} outCyclesLinks={name="AllCyclesLinks"}; |
| 4 | |
| 5 | RUN; |
| 6 |
Una unidad de inteligencia financiera investiga patrones de lavado de dinero tipo 'carrusel'. El objetivo es identificar fondos que pasan por múltiples cuentas testaferros para ...
Un proveedor de servicios de internet analiza la topología de su red nacional para asegurar redundancia. Dado el gran volumen de nodos (routers/switches), se requiere validar qu...
En un sistema de orquestación de procesos de negocio (BPM), es crítico detectar tareas que dependen de sí mismas (error de configuración) o bucles inmediatos entre dos tareas qu...