【发布时间】:2015-09-05 17:47:23
【问题描述】:
我正在尝试解决一个优化问题,但首先我必须找到 n 个元素的所有可能组合的数量,但要考虑一些冲突。一个可能的例子是:
元素:{1,2,3,4} 冲突:{1,2},{3,4}
术语“冲突”是指不能将属于同一冲突集的数字分配到同一组合中。此外,冲突集并不总是不相交的,每个冲突集中的元素总是两个。
到目前为止,我只发现了如何计算所有可能的组合,即 2^n。
谢谢。
【问题讨论】:
-
请提供更多信息。您是否尝试过任何代码/语言?考虑对元素和冲突进行排序以便更快地进行比较。
-
不,我没有,我现在搜索的是可能组合的数量。
-
如果我对您的理解正确,您想计算给定集合的子集数,但要遵守不包含作为子集的任何给定子集列表的约束。禁止子集是否不相交(如您的示例中的 {1,2} 和 {3,4})?如果是这样——计算它们似乎相当简单,因为任何有效的无冲突子集都可以唯一地表示为冲突集并集的补集以及一系列正确冲突子集的子集套。如果冲突集包括非不相交集(例如 {1,2} 和 {1,4}),则计算它们很棘手
-
嗨约翰,所以在我的优化问题中,冲突集不是不相交的。例如:元素:{1,2,3,4,5,6} 冲突集:{1,2},{1,3},{2,3},{2,6}
-
如果它们不是不相交的,那么似乎需要使用包含/排除原则——这很少会导致紧凑的公式。
标签: combinations conflict