順序が重要なべき集合のすべての順列を計算するメソッドを作成しようとしています。これらは「アレンジメント」と呼ばれていると思います。これが意味するのは:
{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}, {}}
私の印象では、集合Sが与えられた場合、Sのべき集合のすべてのサブセットのすべての順列を生成する必要があります。したがって、最初にべき集合を生成し、次に順列関数を各集合にマップします。
問題は、これが非常に複雑であるということです-k = 0..nのO(∑n!/ k!)のようなものです。
この種のことを非常に効率的に行う既存のアルゴリズムがあるかどうか疑問に思います(おそらく並列実装)。または、並列べき集合アルゴリズムが存在し、並列置換アルゴリズムが存在する場合でも、2つを組み合わせることができます。
考え?