41. Grafos aleatorios

Un grafo aleatorio se genera mediante reglas probabilísticas. En lugar de estudiar una única estructura, analizamos qué propiedades aparecen normalmente al variar el tamaño y la probabilidad de conexión.

41.1 Introducción

Muchas redes reales contienen incertidumbre: conexiones que aparecen, fallan o todavía no conocemos. Los grafos aleatorios ofrecen modelos para experimentar con esa variabilidad.

Una realización individual puede ser irregular, pero al repetir el experimento emergen patrones sobre grados, componentes, distancias y conectividad.

41.2 Variables aleatorias y realizaciones

El modelo describe una distribución de probabilidad sobre un conjunto de grafos. Cada ejecución produce una realización concreta.

Modelo probabilístico + resultado del azar = una realización

Dos realizaciones con los mismos parámetros pueden tener cantidades diferentes de aristas y componentes.

41.3 Modelo Erdős–Rényi G(n,p)

El modelo G(n,p) contiene n vértices. Cada una de las posibles aristas no dirigidas aparece de forma independiente con probabilidad p.

n = cantidad de vértices
p = probabilidad independiente de cada arista

Con p = 0 se obtiene un grafo vacío; con p = 1, el grafo completo Kn.

41.4 Cantidad de aristas posibles

En un grafo simple no dirigido hay una posible arista por cada par no ordenado de vértices.

N = C(n,2) = n(n − 1) / 2

La cantidad real de aristas en G(n,p) sigue una distribución binomial con N ensayos y probabilidad p.

41.5 Número esperado de aristas

El valor esperado se obtiene sumando la probabilidad de aparición de cada arista.

E[|E|] = p · n(n − 1) / 2

Es un promedio de muchas realizaciones; una muestra particular no tiene por qué coincidir exactamente con él.

41.6 Laboratorio G(n,p)

Modifica n y p, y genera varias realizaciones. Los colores representan componentes conexas; la componente más grande aparece primero en el resumen.

Parámetros

Medidas observadas

Aristas0
Grado medio0
Componentes0
Componente mayor0
Vértices aislados0

Diagnóstico

Generando la primera realización.
Realización generada.
Aristas esperadas0
Grado esperado0
Densidad observada0
ConectadoNo

41.7 Distribución del grado

El grado de un vértice cuenta éxitos entre sus n − 1 posibles vecinos, por lo que sigue una distribución binomial.

grado(v) ~ Binomial(n − 1,p)
E[grado(v)] = (n − 1)p

La suma de grados continúa siendo 2|E| en cada realización.

41.8 Modelo G(n,m)

En G(n,m) se elige uniformemente un grafo con n vértices y exactamente m aristas.

ModeloSe fijaVaría
G(n,p)Probabilidad pCantidad de aristas
G(n,m)Cantidad mQué pares aparecen

41.9 Componentes y transición

Para probabilidades muy pequeñas predominan componentes diminutas. Al crecer el grado medio alrededor de 1, comienza a aparecer una componente gigante que contiene una fracción importante de los vértices.

En términos asintóticos, la transición ocurre cerca de p ≈ 1/n.

No es un límite exacto para una realización pequeña, sino un cambio probabilístico observado al crecer n.

41.10 Umbral de conectividad

La conectividad completa requiere una probabilidad mayor que la necesaria para formar una componente gigante.

Umbral asintótico de conectividad: p ≈ ln(n)/n

Cerca del umbral, pequeñas variaciones de p producen cambios grandes en la probabilidad de obtener un grafo conectado.

41.11 Vértices aislados

Un vértice queda aislado si fallan sus n − 1 conexiones posibles.

P(grado(v)=0) = (1 − p)n−1

La desaparición de los últimos vértices aislados está estrechamente relacionada con el umbral de conectividad.

41.12 Triángulos y agrupamiento

Cada terna de vértices forma un triángulo cuando aparecen sus tres aristas, evento de probabilidad p³.

E[triángulos] = C(n,3)p³

En G(n,p), el coeficiente de agrupamiento esperado es aproximadamente p, porque dos vecinos se conectan con esa probabilidad.

41.13 Generación en JavaScript

function generarGnp(n, p) {
  const grafo = Array.from({ length: n }, () => []);

  for (let u = 0; u < n; u++) {
    for (let v = u + 1; v < n; v++) {
      if (Math.random() < p) {
        grafo[u].push(v);
        grafo[v].push(u);
      }
    }
  }
  return grafo;
}

Recorrer solo u < v evita probar dos veces el mismo par y evita bucles.

41.14 Medición mediante simulaciones

Para estimar una probabilidad se generan muchas realizaciones, se mide cada una y se calcula la proporción de éxitos.

let conectados = 0;
for (let ensayo = 0; ensayo < repeticiones; ensayo++) {
  const grafo = generarGnp(n, p);
  if (esConectado(grafo)) conectados++;
}
const probabilidadEstimada = conectados / repeticiones;

Más repeticiones reducen el ruido de muestreo, aunque aumentan el tiempo de cálculo.

41.15 Reproducibilidad

Math.random() no permite fijar una semilla de forma estándar. Para experimentos reproducibles conviene usar un generador pseudoaleatorio que acepte semilla.

Se deben registrar semilla, parámetros, cantidad de repeticiones y versión del procedimiento de generación.

41.16 Limitaciones de Erdős–Rényi

La independencia de aristas simplifica el análisis, pero muchas redes reales muestran grados muy desiguales, agrupamiento alto y comunidades.

G(n,p) es un buen modelo nulo: ayuda a decidir si una propiedad observada es más intensa de lo esperable por azar independiente.

41.17 Otros modelos aleatorios

  • Configuración: conserva una secuencia de grados deseada.
  • Watts–Strogatz: combina agrupamiento alto y caminos cortos.
  • Barabási–Albert: usa conexión preferencial y produce hubs.
  • Bloques estocásticos: modela comunidades con probabilidades internas y externas.
  • Grafos geométricos: conecta puntos cercanos en un espacio.

41.18 Aplicaciones

  • Probar algoritmos sobre familias de entradas controladas.
  • Modelar fallos y enlaces inciertos.
  • Estudiar epidemias y difusión.
  • Comparar redes reales con un modelo nulo.
  • Analizar transiciones de conectividad.
  • Generar datos sintéticos para experimentos.

41.19 Errores comunes y puntos clave

  • Confundir valor esperado con resultado garantizado.
  • Generar dos veces cada arista no dirigida.
  • Extraer conclusiones de una sola realización.
  • No fijar semillas cuando se necesita reproducibilidad.
  • Aplicar G(n,p) a toda red real sin validar sus supuestos.
  • Los umbrales son resultados asintóticos y probabilísticos.
  • En G(n,p), E[grado]=(n−1)p y E[|E|]=p·n(n−1)/2.

41.20 Conclusión

Los grafos aleatorios permiten estudiar cómo propiedades globales emergen de decisiones locales probabilísticas. Repetir experimentos revela transiciones que una realización aislada puede ocultar.

En el próximo tema aplicaremos conceptos de grafos al análisis de redes sociales, donde grados, comunidades y difusión adquieren interpretaciones concretas.