Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

119
Vistas
Tiempo Complejidad de la función de permutación ¿Debería ser T((n!)^2)?

Problema: dada una matriz de números de enteros distintos, devuelve todas las permutaciones posibles.

Por ejemplo, [1,2,3] tiene las siguientes permutaciones: [ [1,2,3], [1,3,2], [2,1,3], [2,3,1], [3 ,1,2], [3,2,1] ].

Esta es mi implementación de javascript, similar a la solución estándar para este problema. Encontré muchos lugares diciendo que esta complejidad de tiempo debe ser T(n*n!). Pero según tengo entendido, debería ser T((n!)^2). Nuevamente puedo estar equivocado!!.

Solución JavaScript

 var permute = function(nums) { if(nums.length === 0) return []; if(nums.length ===1){ return [[...nums]]; } let results = []; const len = nums.length; for(let i=0; i<len; i++){ // eg: [1,2,3,4] const temp = nums[i]; nums[i] = nums[len-1]; nums[len-1] = temp; // [4,2,3,1] const n = nums.pop(); // [4,2,3] const prems = permute(nums); prems.forEach(perm => perm.push(n)); results = results.concat(prems); nums.push(nums[i]) // [4,2,3,4] nums[i] = temp; // [1,2,3,4] } return results; };

Así es como obtuve la respuesta como T((n!)^2)

así que para el exterior,

1ra iteración
  • Cada iteración hará una llamada recursiva con una matriz de elementos n-1
  • ¡Entonces los resultados, que serán todas las permutaciones con n-1 elementos, serán de tamaño (n-1)!
  • ¡Así que tenemos que recorrer (n-1)! elementos para agregar el elemento reventado.
Para iteraciones
Entonces, para la primera llamada recursiva, esto sucederá n veces (el ciclo externo va de 0 a n)

Entonces, para la primera llamada recursiva T-(n*(n-1)!)

Dado que el tamaño del árbol de recurrencia es n! la complejidad de tiempo final debería ser - T(n! n (n-1)!) = T((n!)^2).

Me estoy perdiendo de algo ??

about 4 years ago · Santiago Trujillo
1 Respuestas
Responde la pregunta

0

Creo que tu respuesta es así:

Para el bucle exterior, n iteraciones y para permutaciones n! Por lo tanto, la complejidad temporal de este algoritmo es el tiempo factorial, que creo que Σ((ni) * T(ni)) -> O(n*n!) es su respuesta

yo de 0 a n

about 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda