Las variaciones sin repetición cuentan ordenamientos de una cantidad parcial de elementos diferentes cuando el orden importa.
En una permutación simple se utilizan todos los elementos. En una variación sin repetición se eligen y ordenan solo algunos de ellos.
Por ejemplo, si hay 5 candidatos y queremos asignar 3 puestos diferentes, no usamos a los 5. Elegimos 3 y además importa qué candidato ocupa cada puesto.
Una variación sin repetición de n elementos tomados de k en k es una secuencia de longitud k formada con elementos distintos del conjunto original.
Hay 4 opciones para la primera posición y 3 para la segunda: 4 × 3 = 12.
Si el orden no importara, estaríamos ante una combinación. Si se permitiera repetir, estudiaríamos variaciones con repetición.
La cantidad de variaciones sin repetición de n elementos tomados de k en k es:
También puede escribirse como un producto descendente:
El producto tiene exactamente k factores.
De 6 personas queremos elegir presidente, secretario y tesorero. Los cargos son diferentes, por lo que el orden de asignación importa.
Hay 6 opciones para presidente, 5 para secretario y 4 para tesorero.
Escribe entre 3 y 6 elementos y elige cuántas posiciones se deben ocupar. La simulación genera ordenamientos parciales sin repetir elementos.
Si tomamos todos los elementos, es decir, si k = n, la fórmula se convierte en:
Por lo tanto, las permutaciones simples son un caso particular de las variaciones sin repetición en el que se utilizan todos los elementos.
La función siguiente genera variaciones de longitud k utilizando una construcción recursiva.
function variaciones(elementos, k) {
if (k === 0) return [[]];
const resultados = [];
elementos.forEach((elemento, indice) => {
const restantes = elementos.filter((_, posicion) => posicion !== indice);
variaciones(restantes, k - 1).forEach(resto => {
resultados.push([elemento, ...resto]);
});
});
return resultados;
}
const resultado = variaciones(["A", "B", "C", "D"], 2);
console.log(resultado.map(variacion => variacion.join("")));
En cada etapa se elimina el elemento elegido para impedir que vuelva a aparecer en la misma variación.
Para calcular la cantidad no es necesario generar las variaciones. Podemos usar directamente un producto descendente:
function contarVariaciones(n, k) {
let resultado = 1;
for (let factor = 0; factor < k; factor += 1) {
resultado *= n - factor;
}
return resultado;
}
console.log(contarVariaciones(6, 3));
El resultado es 6 × 5 × 4 = 120. Esta forma suele ser más eficiente que construir las 120 secuencias.
Las variaciones pueden incorporar restricciones. Si un elemento no puede ocupar la primera posición, se reduce la cantidad de opciones iniciales. Si dos elementos no pueden aparecer juntos, debemos filtrar las secuencias o contar casos válidos por separado.
La enumeración es útil en problemas pequeños para verificar cuáles variaciones cumplen las condiciones.
| Método | ¿Se usan todos? | ¿Importa el orden? | ¿Se repite? |
|---|---|---|---|
| Permutación simple | Sí | Sí | No |
| Variación sin repetición | Solo k | Sí | No |
| Combinación sin repetición | Solo k | No | No |
| Variación con repetición | Solo k | Sí | Sí |
Las variaciones sin repetición permiten contar ordenamientos parciales de elementos diferentes. Son apropiadas cuando se ocupan posiciones diferenciadas, el orden importa y ningún elemento puede repetirse.
En el próximo tema estudiaremos las variaciones con repetición, donde un mismo elemento puede utilizarse varias veces.