11. Permutaciones simples

Las permutaciones simples cuentan los ordenamientos posibles de elementos diferentes cuando se utilizan todos una sola vez.

11.1 Introducción

En los temas anteriores vimos que el factorial cuenta ordenamientos de elementos distintos. Una permutación simple es cada ordenamiento posible de un conjunto de elementos diferentes, utilizando todos exactamente una vez.

El adjetivo “simple” indica que no hay elementos repetidos. Si dos elementos tienen el mismo valor, el conteo cambia y estudiaremos ese caso en el próximo tema.

11.2 Definición

Una permutación simple de n elementos es una secuencia que contiene todos los elementos del conjunto, sin repetir ninguno y respetando un orden determinado.

Conjunto: {A, B, C}

Permutaciones: ABC, ACB, BAC, BCA, CAB, CBA

Las secuencias ABC y BAC contienen los mismos elementos, pero son permutaciones diferentes porque el orden cambió.

11.3 Fórmula de las permutaciones simples

La cantidad de permutaciones simples de n elementos se calcula mediante el factorial:

P(n) = n!

El razonamiento por posiciones es:

Primera posición: n opciones
Segunda posición: n - 1 opciones
Tercera posición: n - 2 opciones
...
Última posición: 1 opción

P(n) = n × (n - 1) × ... × 1 = n!

11.4 Ejemplo con cuatro elementos

Si tenemos 4 tareas diferentes y queremos establecer un orden para ejecutarlas, el número de ordenamientos es:

P(4) = 4! = 4 × 3 × 2 × 1 = 24

Para la primera posición hay 4 opciones. Una vez elegida, quedan 3 para la segunda, 2 para la tercera y 1 para la última.

11.5 Simulación: generar permutaciones

Escribe entre 2 y 5 símbolos diferentes. La simulación calcula el factorial y muestra todos los ordenamientos cuando la cantidad es manejable.

Generador de permutaciones simples

Ejemplo: A, B, C, D

11.6 Un ejemplo en JavaScript

La siguiente función genera permutaciones mediante una estrategia recursiva: elige un elemento, permuta los restantes y combina el elemento elegido con cada resultado.

function permutar(elementos) {
  if (elementos.length === 0) return [[]];

  const resultados = [];
  for (let indice = 0; indice < elementos.length; indice += 1) {
    const elegido = elementos[indice];
    const restantes = elementos.filter((_, posicion) => posicion !== indice);
    for (const resto of permutar(restantes)) {
      resultados.push([elegido, ...resto]);
    }
  }
  return resultados;
}

const resultado = permutar(["A", "B", "C"]);
console.log(resultado.map(permutacion => permutacion.join("")));

El caso base devuelve una lista con una permutación vacía. Ese caso permite completar correctamente el último elemento de cada recorrido.

11.7 Relación con los diagramas de árbol

Las permutaciones pueden representarse con un árbol de decisiones. En el primer nivel hay n ramas; en el segundo quedan n - 1; y así hasta llegar a una hoja.

4 elementos → 4 × 3 × 2 × 1 = 24 hojas
Cada hoja representa un ordenamiento completo.

El diagrama ayuda a comprender por qué aparece el factorial, aunque dibujar todas las ramas deja de ser práctico cuando n crece.

11.8 Verificar la cantidad de resultados

Una forma de comprobar una generación de permutaciones es comparar la cantidad producida con el factorial del número de elementos.

function factorial(n) {
  let resultado = 1;
  for (let valor = 2; valor <= n; valor += 1) {
    resultado *= valor;
  }
  return resultado;
}

const elementos = ["rojo", "verde", "azul"];
console.log(`Cantidad esperada: ${factorial(elementos.length)}`);

Para 3 elementos, cualquier generador correcto debe producir exactamente 3! = 6 ordenamientos distintos.

11.9 Diferencia entre permutación y selección

En una permutación simple se utilizan todos los elementos y el orden importa. Si solo se utilizan algunos elementos, el problema deja de ser una permutación simple completa y se relaciona con variaciones o combinaciones.

Situación¿Se usan todos?¿Importa el orden?Método
Ordenar todos los elementosPermutación simple: n!
Elegir algunos y ordenarlosNoVariación sin repetición
Elegir algunos sin ordenNoNoCombinación sin repetición

11.10 Restricciones en permutaciones

Si el problema impone una condición, no siempre podemos utilizar directamente n!. Por ejemplo, si A debe ocupar la primera posición, solo debemos permutar los elementos restantes.

A fija en la primera posición
Elementos restantes: n - 1

Total = (n - 1)!

Otras restricciones pueden exigir que dos elementos estén juntos, separados o en posiciones determinadas. En esos casos se modifica el conteo o se utilizan técnicas adicionales.

11.11 Aplicaciones en informática

  • Ordenar tareas o procesos diferentes.
  • Generar secuencias de prueba.
  • Analizar todas las disposiciones posibles de elementos.
  • Estudiar algoritmos de búsqueda y retroceso.
  • Calcular configuraciones de posiciones o asignaciones.
  • Evaluar el crecimiento de un espacio de búsqueda factorial.

La cantidad de permutaciones indica rápidamente si es viable generar todas las soluciones o si conviene utilizar restricciones y estrategias de poda.

11.12 Errores frecuentes

  • Usar n! cuando algunos elementos se repiten.
  • Confundir un ordenamiento con una selección sin orden.
  • Permitir repetición de un elemento en la generación.
  • Omitir alguna posición del ordenamiento.
  • Intentar generar todas las permutaciones sin analizar el crecimiento factorial.

11.13 Qué debes recordar de este tema

  • Una permutación simple ordena todos los elementos diferentes.
  • El orden importa y no se repiten elementos.
  • La cantidad de permutaciones simples de n elementos es n!.
  • El conteo puede verse como un producto de opciones decrecientes.
  • Las restricciones modifican el resultado n!.
  • Generar permutaciones es útil para casos pequeños, pero puede ser costoso.

11.14 Conclusión

Las permutaciones simples describen todos los ordenamientos posibles de elementos distintos y constituyen una aplicación directa del factorial. Su estudio permite comprender cómo crecen los espacios de búsqueda y prepara el camino para analizar repeticiones, selecciones parciales y restricciones.

En el próximo tema estudiaremos las permutaciones con elementos repetidos.