Algorithm 在不生成整个集合的情况下,以重复的方式遍历元素的每个组合
我需要迭代每一个可能的元素组合(重复),最多n个元素 我找到了解决这个问题的多种方法。但所有这些都是递归地生成每个可能组合的集合,然后对其进行迭代。虽然这是可行的,但对于大型元素集合和组合大小,它会导致大量内存使用,因此我正在寻找一种解决方案,它允许我从上一个组合计算下一个组合,知道元素的数量和组合的最大大小Algorithm 在不生成整个集合的情况下,以重复的方式遍历元素的每个组合,algorithm,iteration,combinations,Algorithm,Iteration,Combinations,我需要迭代每一个可能的元素组合(重复),最多n个元素 我找到了解决这个问题的多种方法。但所有这些都是递归地生成每个可能组合的集合,然后对其进行迭代。虽然这是可行的,但对于大型元素集合和组合大小,它会导致大量内存使用,因此我正在寻找一种解决方案,它允许我从上一个组合计算下一个组合,知道元素的数量和组合的最大大小 这可能吗?这里是否有任何特定的算法可以工作?生成组合,以便对每个组合进行排序。(这假设元素本身可以很容易地按顺序排列。只要是总顺序,精确的顺序关系就不重要。) 从最小元素的n个重复组成的组
这可能吗?这里是否有任何特定的算法可以工作?生成组合,以便对每个组合进行排序。(这假设元素本身可以很容易地按顺序排列。只要是总顺序,精确的顺序关系就不重要。) 从最小元素的n个重复组成的组合开始。要从任何给定组合生成下一个组合:
1 1 1
1 1 2
1 1 3
1 2 2
1 2 3
1 3 3
2 2 2
2 2 3
2 3 3
3 3 3
生成组合,以便对每个组合进行排序。(这假设元素本身可以很容易地按顺序排列。只要是总顺序,精确的顺序关系就不重要。) 从最小元素的n个重复组成的组合开始。要从任何给定组合生成下一个组合:
1 1 1
1 1 2
1 1 3
1 2 2
1 2 3
1 3 3
2 2 2
2 2 3
2 3 3
3 3 3
你是否在类似C++中提供了类似的行为?我需要遍历组合(元素的顺序不重要,组合的顺序应该是可预测的,但并不重要),所以每个排列都应该被视为相同的组合。您试图解决的问题是什么?有时,您不必在集合上迭代来计算集合上的函数。请看下面的例子。@fjardon我必须选择几个满足一组条件的最佳(按目标函数)组合。所以这实际上是一个优化问题。你是否在类似C++中提供了类似的行为?我需要遍历组合(元素的顺序不重要,组合的顺序应该是可预测的,但并不重要),所以每个排列都应该被视为相同的组合。您试图解决的问题是什么?有时,您不必在集合上迭代来计算集合上的函数。请看下面的例子。@fjardon我必须选择几个满足一组条件的最佳(按目标函数)组合。所以这实际上是一个优化问题。这实际上是我想要避免的方法,主要是因为你们需要保存在内存中的集合的大小。例如,考虑到元素是4字节数,25个元素长集合中有6个元素的593775个组合。它超过2MB,没有任何开销。这就是为什么我要问是否有聪明的数学解决方案。@k.kowalczyk:但你不需要一次生成所有的解决方案。生成一个,用它做任何你需要的事情,然后生成下一个。这就是迭代的意思。算法告诉你如何“生成下一个”。对,我之前误解了答案。这正是我所需要的,谢谢。这实际上是我想要避免的方法,主要是因为你们需要保留在内存中的集合的大小。例如,考虑到元素是4字节数,25个元素长集合中有6个元素的593775个组合。它超过2MB,没有任何开销。这就是为什么我要问是否有聪明的数学解决方案。@k.kowalczyk:但你不需要一次生成所有的解决方案。生成一个,用它做任何你需要的事情,然后生成下一个。这就是迭代的意思。算法告诉你如何“生成下一个”。对,我之前误解了答案。这正是我需要的,谢谢。