Estoy tratando de escribir un método que calculará todas las permutaciones de un conjunto de potencia donde el orden importa. Creo que estos se llaman "arreglos". Lo que quiero decir con esto es:algoritmo de disposición eficiente en java
{a} -> {{a}, {}}
{a,b} -> {{a,b}, {b,a}, {a}, {b}, {}}
{a,b,c} -> {{a,b,c}, {a,c,b}, {b,a,c}, {b,c,a}, {c,a,b}, {c,b,a}, {a,b}, {a,c}, {b,a}, {b,c}, {c,a}, {c,b}, {a}, {b}, {c}, {}}
etc. Mi impresión es que, dado un conjunto S, que debería generar todas las combinaciones de cada subconjunto de la powerset de S. Así que primero generar el powerset, a continuación, asignar una permutación función en cada conjunto.
El problema es que esto es inmensamente complejo, algo así como O (Σn!/K!) Con k = 0..n.
Me pregunto si hay algoritmos existentes que hacen este tipo de cosas de manera muy eficiente (tal vez una implementación paralela). O quizás, incluso si existe un algoritmo paralelo de powerset y existe un algoritmo de permutación paralelo, puedo combinar los dos.
¿Pensamientos?
Tal vez, consulte esta publicación: http://stackoverflow.com/questions/1506078 – squiguy
posible duplicado de [Permutación rápida -> número -> algoritmos de asignación de permutación] (http://stackoverflow.com/questions/1506078/fast) -permutation-number-permutation-mapping-algorithms) – Makoto
No creo que sea un duplicado. Leo ese hilo y pide algo bastante diferente. Las soluciones son algo similares en el tema pero son ciertamente lo suficientemente diferentes como para garantizar hilos separados. – rhombidodecahedron