jueves, 9 de marzo de 2017

Encontrar todas las permutaciones de seis elementos.

Esta vez se trata de encontrar las 720 posibles permutaciones de 6 elementos.

Variables con nombre utilizadas:

  • Elementos=IZQUIERDA(Permutaciones!$A$2;6)
  • Fact2, Fact3, Fact4, Fact5. Son el factorial de de 2, 3, 4, y 5, utilizando la función Fact(n).
Funciones utilizadas:
  • Extrae(texto,pos. inicial, n. caracteres). =EXTRAE(Elementos;G2+1;1)
  • Sustituir(texto;Carácter a sustituir;carácter sustituto). =SUSTITUIR(Elementos;M2;"")
  • Residuo(Dividendo;divisor)
  • =ENTERO($A2/Fact5)
  • =CONTAR.SI(W:W;W2)

Sabemos que el número de permutaciones de n elementos es n! (factorial de n). En este caso, permutaciones de 6 elementos 6*5*4*4*2*1=720. Para encontrar todas las posibles permutaciones de 6 elementos tengo que encontrar un mecanismo que me permita multiplicar matrices. Esas 720 permutaciones son el resultado de multiplicar la matriz con las 120 permutaciones de 5 elementos por seis elementos. Las 120 permutaciones de 5 elementos es el resultado de multiplicar, matricialmente, las 24 permutaciones de 4 elementos por 5 elementos, etc.
En la hoja Aux, columna A, coloco los 720 valores de 6!, con un pequeño truco, empiezo desde cero. En la columna B encontramos, mediante la función RESIDUO, lo que sería el número de permutación de los 120 posibles valores de una permutación de 5 elementos. Así Sucesivamente hasta la columna E.
En la columna G, mediante la función ENTERO(), se calcula el ordinal del elemento que queda mas a la izquierda. Sucesivamente, de las columnas H a la L encontramos los ordinales de 5 elementos, de 4, etc.
En la columna M encontramos el elemento de mas a la izquierda (=EXTRAE(Elementos;G2+1;1)). En N quitamos del conjunto de elementos ese primer elemento encontrado SUSTITUIR(Elementos;M2;""). En el resto de elementos, una vez desaparecido el primero, repetimos sucesivamente la operación. Encontramos un primer elemento de los que quedan y lo quitamos.
Para finalizar concatenamos los elementos encontrados (=M2&O2&Q2&S2&U2&V2). En la columna X compruebo que hay concatenaciones repetidas mediante la función CONTAR.SI
(=CONTAR.SI(W:W;W2)). Esas concatenaciones las paso a la hoja PERMUTACIONES referenciando celdas (=Aux!W2).




No hay comentarios:

Publicar un comentario