1

組み合わせ問題を解決するアルゴリズムを c# で探しています。

私はオブジェクト1,2,3,4を持っていると仮定します

これらのオブジェクトを、毎回すべてのオブジェクトを含む複数のグループにグループ化するすべての可能な方法を取得したいと考えています。順序は重要ではありません。例:

<1,2,3,4> <1,2 / 3,4> <1,3 / 2,4> <1,4 / 3,2> <1,2,3 / 4> <1,2, 4 / 3> <1,3,4 / 2> <2,3,4 / 1> <1,2 / 3 / 4 > <1,3 / 2 / 4> <1,4 / 3 / 2> < 2,3 / 1 / 4> <4,3 / 1 / 2> <1 / 2 / 3 / 4>

最初のケースでは、4 つのオブジェクトすべてを含む 1 つのグループがあります。次は、さまざまな方法ですべてのオブジェクトを含む 2 つのグループのケースです。最後のケースは 4 つのグループで、各グループには 1 つのオブジェクトのみが含まれます。

4

3 に答える 3

1

<1>から始めます。新しいオブジェクトが追加されるたびに、以前のソリューションごとに、任意のグループまたは独自の新しいグループに入ることができます。

1: <1>
12: <1> => {<1,2> <1|2>}
123: <1,2> => {<1,2,3> <1,2|3>}, <1|2> => {<1,3|2> <1|2,3> <1|2|3>}
1234: <1,2,3> => {<1,2,3,4> <1,2,3|4>},
      <1,2|3> => {<1,2,4|3> <1,2|3,4> <1,2|3|4>},
      <1,3|2> => {<1,3,4|2> <1,3|2,4> <1,3|2|4>}
于 2010-05-09T07:48:27.140 に答える
0

これはパワーセットのように見えます。hereの別の SO answer に C# コードがいくつかあります。

于 2010-05-09T09:46:06.640 に答える
0

C#アルゴリズムではなく、アルゴリズムが一般的だと思います。すべての可能な方法をグループ化する方法がいくつかあります (いくつかの制限があります) here

于 2010-05-09T07:47:35.800 に答える