7. Grafos completos

En un grafo completo, cada vértice está conectado directamente con todos los demás. Esta conectividad máxima permite estudiar combinaciones, redes densas y el crecimiento del número de relaciones.

7.1 Introducción

Un grafo puede tener pocas conexiones o ser muy denso. El caso extremo ocurre cuando todos los pares de vértices diferentes están unidos por una arista.

Esta estructura recibe el nombre de grafo completo. Aunque su definición es sencilla, resulta útil para comprender cuántas relaciones pueden existir como máximo y cómo crece su cantidad cuando agregamos vértices.

7.2 ¿Qué es un grafo completo?

Un grafo simple no dirigido es completo cuando cada par de vértices distintos es adyacente.

Para todo par u, v ∈ V con u ≠ v, existe la arista {u, v}

No faltan conexiones posibles, no hay aristas repetidas y ningún vértice posee un bucle.

7.3 Notación Kₙ

El grafo completo con n vértices se representa mediante la notación Kn. La letra K proviene del término alemán komplett.

GrafoVérticesAristasForma habitual
K110Un punto
K221Un segmento
K333Un triángulo
K446Cuatro nodos totalmente conectados
K5510Cinco nodos totalmente conectados

7.4 Cantidad de aristas

Cada vértice puede conectarse con los otros n − 1 vértices. Si multiplicamos n(n − 1), contamos cada arista dos veces: una desde cada extremo. Por eso dividimos entre dos.

|E(Kₙ)| = n(n − 1) / 2

Por ejemplo, K6 posee 6 × 5 / 2 = 15 aristas.

7.5 Simulación interactiva: construye Kₙ

Mueve el selector para cambiar la cantidad de vértices. La aplicación genera todas las conexiones posibles. Pulsa un nodo para resaltar sus aristas y comprobar su grado.

K₅ tiene 10 aristas.
GrafoK₅
Vértices5
Aristas10
Grado de cada vértice4

Observa que agregar un vértice a Kn exige conectarlo con los n vértices anteriores. Por eso el número de aristas crece mucho más rápido que el de nodos.

7.6 Grado de los vértices

En Kn, cada vértice está conectado con todos los demás. Por lo tanto, todos poseen el mismo grado.

grado(v) = n − 1 para todo v ∈ V(Kₙ)

K8, por ejemplo, tiene ocho vértices de grado 7. Un grafo cuyos vértices tienen el mismo grado se denomina regular; Kn es regular de grado n − 1.

7.7 Crecimiento de las conexiones

La cantidad de aristas crece de manera cuadrática. Duplicar la cantidad de vértices produce aproximadamente cuatro veces más conexiones.

VérticesAristas máximasNuevas aristas al agregar un vértice
5104 respecto de K₄
10459 respecto de K₉
100495099 respecto de K₉₉
1000499500999 respecto de K₉₉₉

7.8 Grafos completos dirigidos

La expresión Kn normalmente se refiere a un grafo simple no dirigido. En un grafo dirigido completamente conectado puede existir un arco desde cada vértice hacia todos los demás.

Arcos dirigidos posibles sin bucles: n(n − 1)

No se divide entre dos porque (A, B) y (B, A) son arcos diferentes.

7.9 Generar Kₙ con JavaScript

Para generar todas las aristas, recorremos cada par una sola vez. El segundo índice comienza después del primero para evitar bucles y duplicados.

function grafoCompleto(n) {
  const vertices = Array.from({ length: n }, (_, i) => i);
  const aristas = [];

  for (let i = 0; i < n; i++) {
    for (let j = i + 1; j < n; j++) {
      aristas.push([i, j]);
    }
  }

  return { vertices, aristas };
}

const k5 = grafoCompleto(5);
console.log(k5.aristas);
console.log("Cantidad:", k5.aristas.length);

7.10 Verificar si un grafo es completo

En un grafo simple podemos comparar la cantidad de aristas existentes con la cantidad máxima posible.

function esCompleto(cantidadVertices, cantidadAristas) {
  const maximo = cantidadVertices * (cantidadVertices - 1) / 2;
  return cantidadAristas === maximo;
}

console.log(esCompleto(4, 6));
console.log(esCompleto(4, 5));

Esta comprobación presupone que el grafo es simple. Si la estructura permite duplicados, primero debemos verificar que cada par diferente aparezca una sola vez.

7.11 Aplicaciones y límites

SituaciónUso de un grafo completoConsideración
Comparar todos los paresCada objeto se relaciona con los demásCosto cuadrático
Red de comunicaciónConexión directa entre equiposDifícil de escalar
Torneo todos contra todosCada participante enfrenta a los demásUna arista por encuentro
Problema del viajanteTodos los destinos pueden conectarseSe agregan pesos a las aristas

La conectividad completa ofrece rutas directas, pero requiere almacenar y procesar muchas aristas cuando n crece.

7.12 Errores comunes

  • Confundir un grafo conectado con un grafo completo.
  • Contar dos veces cada arista al usar n(n − 1).
  • Incluir bucles en Kn.
  • Suponer que un dibujo con muchas líneas necesariamente es completo.
  • Olvidar que todos los vértices de Kn tienen grado n − 1.
  • Ignorar el crecimiento cuadrático de memoria y procesamiento.

7.13 Qué debes recordar de este tema

  • En un grafo completo, cada par de vértices distintos está conectado.
  • Kn representa el grafo completo de n vértices.
  • Kn posee n(n − 1) / 2 aristas.
  • Cada vértice de Kn tiene grado n − 1.
  • Los grafos completos son regulares y están conectados.
  • Su cantidad de aristas crece de forma cuadrática.

7.14 Conclusión

Los grafos completos representan la conectividad máxima dentro de un grafo simple. Sirven para analizar todos los pares posibles, pero su rápido crecimiento obliga a considerar cuidadosamente el costo de almacenamiento y procesamiento.

En el próximo tema estudiaremos los grafos bipartitos, cuyos vértices se dividen en dos conjuntos y solo se conectan entre conjuntos diferentes.