La acción `core` calcula la descomposición del núcleo de un grafo. La descomposición del núcleo es una herramienta fundamental en el análisis de redes que ayuda a identificar las partes más densamente conectadas de un grafo. Un k-núcleo (k-core) es un subgrafo inducido en el que cada vértice tiene un grado de al menos k. Esta acción es útil para la visualización de grafos grandes y para comprender la estructura jerárquica de la conectividad de la red.
| Parámetro | Descripción |
|---|---|
| deterministic | Cuando se establece en True, asegura que cada invocación (con la misma configuración de máquina y ajustes de parámetros) produce el mismo resultado final. |
| direction | Especifica si se debe considerar el grafo de entrada como dirigido o no dirigido. |
| 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. |
| graph | Especifica el grafo en memoria a utilizar. |
| indexOffset | Especifica el desplazamiento del índice para los identificadores en las tablas de datos de salida de registro y resultados. |
| 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. |
| logFreqTime | Controla la frecuencia n (en segundos) para mostrar los registros de iteración para algunos algoritmos. |
| logLevel | Controla la cantidad de información que se muestra en el registro de SAS. |
| maxTime | Especifica la cantidad máxima de tiempo que el algoritmo debe emplear. |
| multiLinks | Cuando se establece en True, incluye multienlaces 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. |
| outGraphList | Especifica la tabla de datos de salida para contener información de resumen sobre los grafos en memoria. |
| outLinks | Especifica la tabla de datos de salida para contener la información de los enlaces del grafo junto con cualquier resultado de los algoritmos que calculan métricas en los enlaces. |
| outNodes | Especifica la tabla de datos de salida para contener la información de los nodos del grafo junto con cualquier resultado de los algoritmos que calculan métricas en los nodos. |
| 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 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. |
| timeType | Especifica si se debe usar tiempo de CPU o tiempo real para el límite de tiempo máximo. |
Este código SAS crea una tabla de datos de enlaces simple en la librería `mycas`. La tabla `Links` representa las conexiones en una red social, donde cada fila define un enlace entre dos personas (de 'from' a 'to').
| 1 | DATA mycas.Links; |
| 2 | INPUT from $ to $ @@; |
| 3 | DATALINES; |
| 4 | A B A C A D B C |
| 5 | B D C D C E D E |
| 6 | D F E F E G F G |
| 7 | ; |
| 8 | RUN; |
Este ejemplo calcula la descomposición del núcleo para el grafo de entrada definido en la tabla `mycas.Links`. Los resultados, que incluyen el número de núcleo para cada nodo, se guardan en la tabla `mycas.OutNodes`.
| 1 | PROC CAS; |
| 2 | ACTION network.core / |
| 3 | links={name='Links'} |
| 4 | outNodes={name='OutNodes', replace=true}; |
| 5 | RUN; |
| 6 | QUIT; |
Este ejemplo trata el grafo como dirigido usando el parámetro `direction='DIRECTED'`. En un grafo dirigido, el grado de un nodo se divide en grado de entrada y grado de salida, lo que afecta el cálculo del núcleo. Los resultados se guardan en una nueva tabla para comparación.
| 1 | PROC CAS; |
| 2 | ACTION network.core / |
| 3 | links={name='Links'} |
| 4 | direction='DIRECTED' |
| 5 | outNodes={name='OutNodes_Directed', replace=true}; |
| 6 | RUN; |
| 7 | QUIT; |
Después de calcular la descomposición del núcleo, este ejemplo utiliza la acción `freq` del action set `simple` para obtener la distribución de los números de núcleo en el grafo. Esto ayuda a entender la estructura de densidad del grafo.
| 1 | PROC CAS; |
| 2 | ACTION network.core / |
| 3 | links={name='Links'} |
| 4 | outNodes={name='OutNodes', replace=true}; |
| 5 | ACTION SIMPLE.freq / |
| 6 | TABLE={name='OutNodes'} |
| 7 | inputs={'core'}; |
| 8 | RUN; |
| 9 | QUIT; |