Las variaciones con repetición cuentan secuencias ordenadas de longitud determinada cuando los elementos disponibles pueden utilizarse varias veces.
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.
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ó.
La secuencia AA es válida porque se permite repetir el elemento A.
La cantidad de variaciones con repetición se obtiene multiplicando las mismas n opciones en cada una de las k posiciones:
La potencia aparece porque hay n opciones para la primera posición, n para la segunda y así sucesivamente.
Si un código tiene 4 posiciones y cada posición puede contener uno de 10 dígitos, permitiendo repetirlos, hay:
El código 0000 es válido en este modelo, igual que 1212, porque los dígitos pueden repetirse.
Escribe entre 2 y 4 elementos y elige la longitud de la secuencia. La simulación permite repetir cualquier elemento.
| Característica | Sin repetición | Con repetición |
|---|---|---|
| Opciones por posición | Disminuyen | Se mantienen en n |
| Fórmula | n! / (n - k)! | nk |
| Ejemplo válido | AB, pero no AA | AB y AA |
| Crecimiento | Producto descendente | Potencia |
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.
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.
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.
Si se agregan dígitos, símbolos adicionales o restricciones, el tamaño del espacio cambia y debe analizarse nuevamente.
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.
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.
La cantidad nk también permite estimar la dificultad de recorrer todas las posibilidades.
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.