15. Variaciones con repetición

Las variaciones con repetición cuentan secuencias ordenadas de longitud determinada cuando los elementos disponibles pueden utilizarse varias veces.

15.1 Introducción

En las variaciones sin repetición, una vez elegido un elemento, ya no podía volver a utilizarse. En las variaciones con repetición, cada posición puede elegir nuevamente cualquiera de los elementos disponibles.

Este modelo aparece en códigos, secuencias, configuraciones y contraseñas donde un símbolo puede aparecer más de una vez.

15.2 Definición

Una variación con repetición de n elementos tomadas de k en k es una secuencia ordenada de longitud k en la que cada posición puede utilizar cualquiera de los n elementos, incluso uno que ya apareció.

Elementos: {A, B, C}
Secuencias de longitud 2:
AA, AB, AC, BA, BB, BC,
CA, CB, CC

La secuencia AA es válida porque se permite repetir el elemento A.

15.3 Fórmula

La cantidad de variaciones con repetición se obtiene multiplicando las mismas n opciones en cada una de las k posiciones:

VR(n, k) = nk

La potencia aparece porque hay n opciones para la primera posición, n para la segunda y así sucesivamente.

15.4 Ejemplo con un código

Si un código tiene 4 posiciones y cada posición puede contener uno de 10 dígitos, permitiendo repetirlos, hay:

VR(10, 4) = 104 = 10.000 códigos

El código 0000 es válido en este modelo, igual que 1212, porque los dígitos pueden repetirse.

15.5 Simulación: generar secuencias con repetición

Escribe entre 2 y 4 elementos y elige la longitud de la secuencia. La simulación permite repetir cualquier elemento.

Generador de variaciones con repetición

15.6 Diferencia con las variaciones sin repetición

CaracterísticaSin repeticiónCon repetición
Opciones por posiciónDisminuyenSe mantienen en n
Fórmulan! / (n - k)!nk
Ejemplo válidoAB, pero no AAAB y AA
CrecimientoProducto descendentePotencia

15.7 Un ejemplo en JavaScript

El siguiente código genera secuencias de longitud k sin eliminar el elemento elegido, por lo que puede volver a utilizarlo.

function variacionesConRepeticion(elementos, k) {
  if (k === 0) return [[]];
  const resultados = [];

  for (const elemento of elementos) {
    for (const resto of variacionesConRepeticion(elementos, k - 1)) {
      resultados.push([elemento, ...resto]);
    }
  }
  return resultados;
}

const resultado = variacionesConRepeticion(["A", "B", "C"], 2);
console.log(resultado.map(secuencia => secuencia.join("")));

En cada nivel se recorren todos los elementos, incluso los que ya formaron parte de la secuencia parcial.

15.8 Calcular sin enumerar

Si solo necesitamos conocer la cantidad, no hace falta construir las secuencias:

function contarVariacionesConRepeticion(n, k) {
  return n ** k;
}

console.log(contarVariacionesConRepeticion(3, 4));

Con 3 elementos y 4 posiciones hay 34 = 81 secuencias. Generarlas todas puede ser innecesario si solo se necesita el total.

15.9 Relación con códigos y cadenas

Una cadena de longitud k formada con un alfabeto de n símbolos tiene nk posibilidades si cada posición puede repetir cualquier símbolo.

Alfabeto de 26 letras, cadena de 3 posiciones:
263 = 17.576 cadenas

Si se agregan dígitos, símbolos adicionales o restricciones, el tamaño del espacio cambia y debe analizarse nuevamente.

15.10 Restricciones

La fórmula nk supone que todas las opciones son válidas en todas las posiciones. Una restricción puede reducir el número de opciones de una posición.

Primera posición: 3 opciones
Segunda posición: 2 opciones
Tercera posición: 3 opciones

Total = 3 × 2 × 3 = 18

Cuando las cantidades varían, ya no usamos directamente nk; aplicamos el principio del producto con la cantidad de opciones válida en cada etapa.

15.11 Aplicaciones en informática

  • Contar códigos con símbolos repetibles.
  • Calcular cadenas de longitud fija.
  • Analizar configuraciones de parámetros independientes.
  • Estimar espacios de búsqueda de contraseñas.
  • Generar casos de prueba con valores repetidos.
  • Modelar secuencias de estados o decisiones.

La cantidad nk también permite estimar la dificultad de recorrer todas las posibilidades.

15.12 Errores frecuentes

  • Usar n! cuando se forman secuencias de longitud k.
  • Restar opciones después de elegir un elemento aunque la repetición esté permitida.
  • Confundir una variación con una combinación.
  • Olvidar que el orden distingue las secuencias.
  • Generar un espacio de búsqueda enorme sin analizar primero nk.

15.13 Qué debes recordar de este tema

  • Las variaciones con repetición forman secuencias ordenadas.
  • Se utilizan k posiciones y cada una puede elegir cualquiera de los n elementos.
  • Un elemento puede aparecer varias veces.
  • La fórmula es VR(n, k) = nk.
  • La potencia proviene de multiplicar n opciones en cada posición.
  • Las restricciones pueden cambiar la cantidad de opciones por etapa.

15.14 Conclusión

Las variaciones con repetición modelan secuencias en las que importa el orden y los elementos pueden reutilizarse. Su fórmula nk es una aplicación directa del principio del producto.

En el próximo tema estudiaremos las combinaciones sin repetición, donde el orden de los elementos seleccionados deja de importar.