optNetwork

connectedComponents

Descripción

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).

proc cas; optNetwork.connectedComponents / links={name="LinkSetIn"} outNodes={name="NodeSetOut", replace=true}; run;
Parámetros
ParámetroDescripción
algorithmEspecifica 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.
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 ('DIRECTED') o no dirigido ('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 para el cálculo, lo que es útil para grafos muy grandes.
graphEspecifica el grafo en memoria a utilizar, previamente cargado con acciones como loadGraph o readGraph.
indexOffsetEspecifica el desplazamiento del índice para los identificadores en el registro y las tablas de datos de resultados. Por defecto es 0.
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, como 'from', 'to' y 'weight'.
logFreqTimeControla la frecuencia en segundos para mostrar los registros de iteración para algoritmos computacionalmente intensivos.
logLevelControla la cantidad de información que se muestra en el registro de SAS (NONE, BASIC, MODERATE, AGGRESSIVE).
multiLinksCuando se establece en True, incluye multienlaces (múltiples arcos entre el mismo par de nodos) 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 conectados.
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 cualquier resultado de los algoritmos.
outNodesEspecifica 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).
outputTablesLista los nombres de las tablas de resultados para guardar como tablas CAS en el servidor.
selfLinksCuando se establece en True, incluye autoenlaces (arcos que conectan un nodo consigo mismo) 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 Datos de Muestra

Este conjunto de datos define los enlaces de un grafo simple. Contiene dos componentes conectados distintos: {A, B, C, D} y {E, F, G}.

¡Copiado!
1DATA mycas.LinkSetIn;
2 INPUT from $ to $ @@;
3 DATALINES;
4 A B A C B C C D E F E G F G
5 ;
6RUN;

Ejemplos

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.

Código SAS® / CAS Código en espera de validación por la comunidad
¡Copiado!
1PROC CAS;
2 optNetwork.connectedComponents /
3 links={name='LinkSetIn'}
4 outNodes={name='NodeSetOut', replace=true};
5RUN;
Resultado :
La tabla de salida `NodeSetOut` contendrá una columna 'concomp' que identifica el componente al que pertenece cada nodo. Los nodos A, B, C y D tendrán el mismo ID de componente (por ejemplo, 1), y los nodos E, F y G tendrán otro ID de componente (por ejemplo, 2).

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).

Código SAS® / CAS Código en espera de validación por la comunidad
¡Copiado!
1PROC 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};
8RUN;
Resultado :
La tabla `ConnCompOut` proporcionará un resumen de los componentes encontrados. La tabla `NodeSetOutDirected` asignará un ID de componente fuertemente conectado a cada nodo. Dado que el grafo es tratado como dirigido, los resultados de los componentes pueden ser diferentes al del grafo no dirigido, reflejando las rutas direccionales y los ciclos.

FAQ

¿Cuál es el propósito de la acción `connectedComponents` en SAS Viya?
¿Qué algoritmos se pueden especificar para encontrar componentes conectados?
¿Cómo se diferencia entre un grafo dirigido y uno no dirigido en esta acción?
¿Qué tablas de datos se utilizan como entrada para la acción `connectedComponents`?
¿Cuáles son las tablas de salida principales que se pueden generar?
¿Qué indica el resultado `numComponents`?
¿Para qué sirve el parámetro `distributed`?