En este tutorial, implementamos una canalización de análisis de gráficos a gran escala y de nivel de producción en NetworKit, centrándonos en la velocidad, la eficiencia de la memoria y las API con versiones seguras en NetworKit 11.2.1. Generamos una red libre a gran escala, extraemos el componente conectado más grande y luego calculamos señales estructurales de la columna vertebral mediante descomposición de k-core y clasificación de centralidad. También detectamos comunidades con PLM y cuantificamos la calidad mediante modularidad; estimar la estructura de distancias utilizando diámetros efectivos y estimados; y, finalmente, dispersar el gráfico para reducir el costo y al mismo tiempo preservar las propiedades clave. Exportamos el gráfico disperso como una lista de bordes para poder reutilizarlo en flujos de trabajo posteriores, evaluaciones comparativas o preprocesamiento de ML de gráficos.
Configuramos el entorno Colab con NetworKit y utilidades de monitoreo, y bloqueamos una semilla aleatoria estable. Configuramos el uso de subprocesos para que coincida con el tiempo de ejecución y definimos ayudantes de sincronización y seguimiento de RAM para cada etapa principal. Elegimos un ajuste preestablecido de escala que controla el tamaño del gráfico y los botones de aproximación para que el proceso siga siendo grande pero manejable.
Generamos un gráfico grande de Barabási-Albert e inmediatamente registramos su tamaño y huella de tiempo de ejecución. Calculamos componentes conectados para comprender la fragmentación y diagnosticar rápidamente la topología. Extraemos el componente conectado de mayor tamaño y lo compactamos para mejorar el rendimiento y la fiabilidad del resto de la tubería.
print(“Nodos de PageRank superior:”, top_pr.tolist()) print(“Puntuaciones de PageRank superior:”, pr_scores[top_pr].tolist()) t0 = tic() abw = nk.centrality. AproxBetweenness(G, epsilon=AB_EPS) abw.run() toc(t0, “AproxBetweenness”) abw_scores = np.array(abw.scores(), dtype=np.float64) top_abw = np.argsort(-abw_scores)[:15]
print(“Nodos de intervalo aproximado superior:”, top_abw.tolist()) print(“Puntuaciones de intervalo aproximado superior:”, abw_scores[top_abw].tolist()) force_cleanup()
Calculamos la descomposición central para medir la degeneración e identificar la columna vertebral de alta densidad de la red. Extraemos un subgrafo principal utilizando un umbral de percentil central alto para centrarnos en nodos estructuralmente importantes. Ejecutamos PageRank y aproximamos la intermediación para clasificar los nodos por influencia y comportamiento similar a un puente a escala.
Detectamos comunidades que utilizan PLM y registramos la cantidad de comunidades encontradas en el gráfico grande. Calculamos la modularidad y resumimos las estadísticas del tamaño de la comunidad para validar la estructura en lugar de simplemente confiar en la partición. Estimamos el comportamiento de la distancia global utilizando el diámetro efectivo y el diámetro estimado de una manera segura para API para NetworkorKit 11.2.1.
Dispersamos el gráfico utilizando similitud local para reducir la cantidad de aristas y al mismo tiempo conservamos una estructura útil para el análisis posterior. Volvemos a ejecutar PageRank, PLM y el diámetro efectivo en el gráfico disperso para comprobar si las señales clave siguen siendo consistentes. Exportamos el gráfico disperso como una lista de bordes para poder reutilizarlo en sesiones, herramientas o experimentos adicionales.
En conclusión, desarrollamos un flujo de trabajo NetworKit escalable de extremo a extremo que refleja el análisis real de redes grandes: comenzamos desde la generación, estabilizamos la topología con extracción LCC, caracterizamos la estructura a través de núcleos y centralidades, descubrimos comunidades y las validamos con modularidad, y capturamos el comportamiento de la distancia global a través de estimaciones de diámetro. Luego aplicamos dispersión para reducir el gráfico mientras lo manteníamos analíticamente significativo y lo guardamos para canalizaciones repetibles. El tutorial proporciona una plantilla práctica que podemos reutilizar para conjuntos de datos reales reemplazando el generador con un lector de lista de bordes, manteniendo las mismas etapas de análisis, seguimiento del rendimiento y pasos de exportación.
Consulte los códigos completos aquí. Además, no dude en seguirnos en Twitter y no olvide unirse a nuestro SubReddit de más de 120.000 ML y suscribirse a nuestro boletín. ¡Esperar! estas en telegrama? Ahora también puedes unirte a nosotros en Telegram.