Sto provando a scrivere un metodo che calcoli tutte le permutazioni di un gruppo elettrogeno in cui l'ordine è importante. Credo che questi siano chiamati "accordi". Quello che voglio dire con questo è:Algoritmo di arrangiamento efficiente in 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}, {}}
ecc La mia impressione è che, dato un insieme S, dovrei generare ogni permutazione di ogni sottoinsieme della Powerset di S. Quindi, prima di generare il Powerset, poi mappare una permutazione funzione su ogni set.
Il problema è che questo è immensamente complesso - qualcosa come O (Σn!/K!) Con k = 0..n.
Mi chiedo se esistono algoritmi esistenti che facciano questo genere di cose in modo molto efficiente (forse un'implementazione parallela). O forse anche se esiste un algoritmo parallelo di powerset e esiste un algoritmo di permutazione parallelo, posso combinare i due.
Pensieri?
Forse controlla questo post: http://stackoverflow.com/questions/1506078 – squiguy
possibile duplicato di [Fast permutation -> number -> algoritmi di permutazione mapping] (http://stackoverflow.com/questions/1506078/fast -permutation-number-permutation-mapping-algorithms) – Makoto
Non penso che sia un duplicato. Ho letto quella discussione e mi chiede qualcosa di molto diverso. Le soluzioni sono in qualche modo simili nel tema, ma sono certamente abbastanza diverse da giustificare thread separati. – rhombidodecahedron