C# 组合数学分组

C# 组合数学分组,c#,grouping,combinatorics,C#,Grouping,Combinatorics,我正在寻找一种c#算法,它可以解决一个组合问题: 假设我有对象1,2,3,4 我想获得所有可能的方法,将这些对象分组到多个组中,每次都包含所有对象。秩序并不重要。例如: 在第一种情况下,有一个组包含所有4个对象。接下来是两个组的案例,它们以许多不同的方式包含所有对象。最后一种情况是4个组,每个组只包含一个对象。我认为算法是常见的,而不是C算法。 有一些方法可以对所有可能的方法进行分组(有一些限制)我认为算法是常见的,而不是C算法。 有一些方法可以对所有可能的方式进行分组(有一些限制)从开始。

我正在寻找一种c#算法,它可以解决一个组合问题:

假设我有对象1,2,3,4

我想获得所有可能的方法,将这些对象分组到多个组中,每次都包含所有对象。秩序并不重要。例如:


在第一种情况下,有一个组包含所有4个对象。接下来是两个组的案例,它们以许多不同的方式包含所有对象。最后一种情况是4个组,每个组只包含一个对象。

我认为算法是常见的,而不是C算法。
有一些方法可以对所有可能的方法进行分组(有一些限制)

我认为算法是常见的,而不是C算法。 有一些方法可以对所有可能的方式进行分组(有一些限制)

从开始。添加每个新对象后,对于以前的每个解决方案,它可以进入任何组或自己的新组

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>}
1:
12:  => { }
123:  => { },  => {  }
1234:  => { },
=> {  },
=> {  }
从开始。添加每个新对象后,对于以前的每个解决方案,它可以进入任何组或自己的新组

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>}
1:
12:  => { }
123:  => { },  => {  }
1234:  => { },
=> {  },
=> {  }

这看起来像一个。在另一个SO答案中有一些C代码。

这看起来像一个。在另一个SO答案中有一些C代码。

那么
<1,2/3/4>和其他大小为3的分组呢?那么
<1,2/3/4>和其他大小为3的分组呢?