La acción connectedComponents calcula los componentes conectados de un grafo. En un grafo no dirigido, un componente conectado es un subgrafo en el que cualquier par de nodos está conectado entre sí por rutas, y que está conectado a ningún nodo adicional en el supergrafo. En un grafo dirigido, se pueden calcular componentes débilmente conectados (ignorando la dirección de los arcos) o componentes fuertemente conectados (respetando la dirección de los arcos).
| Parámetro | Descripción |
|---|---|
| algorithm | Especifica el algoritmo a utilizar para calcular los componentes conectados. 'AFFOREST' y 'UNIONFIND' son para grafos no dirigidos, mientras que 'DFS' es para grafos dirigidos. 'AUTOMATIC' selecciona el algoritmo apropiado según la direccionalidad del grafo. |
| 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 ('DIRECTED') o no dirigido ('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 para el cálculo, lo que es útil para grafos muy grandes. |
| graph | Especifica el grafo en memoria a utilizar, previamente cargado con acciones como loadGraph o readGraph. |
| indexOffset | Especifica el desplazamiento del índice para los identificadores en el registro y las tablas de datos de resultados. Por defecto es 0. |
| 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, como 'from', 'to' y 'weight'. |
| logFreqTime | Controla la frecuencia en segundos para mostrar los registros de iteración para algoritmos computacionalmente intensivos. |
| logLevel | Controla la cantidad de información que se muestra en el registro de SAS (NONE, BASIC, MODERATE, AGGRESSIVE). |
| multiLinks | Cuando se establece en True, incluye multienlaces (múltiples arcos entre el mismo par de nodos) 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 conectados. |
| 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 cualquier resultado de los algoritmos. |
| outNodes | Especifica la tabla de datos de salida que contendrá la información de los nodos del grafo junto con los resultados del algoritmo (por ejemplo, el ID del componente). |
| outputTables | Lista los nombres de las tablas de resultados para guardar como tablas CAS en el servidor. |
| selfLinks | Cuando se establece en True, incluye autoenlaces (arcos que conectan un nodo consigo mismo) 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. |
Este conjunto de datos define los enlaces de un grafo simple. Contiene dos componentes conectados distintos: {A, B, C, D} y {E, F, G}.
| 1 | DATA mycas.LinkSetIn; |
| 2 | INPUT from $ to $ @@; |
| 3 | DATALINES; |
| 4 | A B A C B C C D E F E G F G |
| 5 | ; |
| 6 | RUN; |
Este ejemplo encuentra los componentes conectados en el grafo no dirigido definido por `LinkSetIn` y guarda los resultados en la tabla `NodeSetOut`. La tabla de salida asignará un ID de componente a cada nodo.
| 1 | PROC CAS; |
| 2 | optNetwork.connectedComponents / |
| 3 | links={name='LinkSetIn'} |
| 4 | outNodes={name='NodeSetOut', replace=true}; |
| 5 | RUN; |
Este ejemplo trata el grafo como dirigido y utiliza el algoritmo de Búsqueda en Profundidad (DFS) para encontrar los componentes fuertemente conectados. Los resultados se guardan en `ConnCompOut` (resumen) y `NodeSetOutDirected` (nodos).
| 1 | PROC CAS; |
| 2 | optNetwork.connectedComponents / |
| 3 | direction='DIRECTED' |
| 4 | algorithm='DFS' |
| 5 | links={name='LinkSetIn'} |
| 6 | out={name='ConnCompOut', replace=true} |
| 7 | outNodes={name='NodeSetOutDirected', replace=true}; |
| 8 | RUN; |