【问题标题】:find the number of all possible combinations with conflicts找出所有可能有冲突的组合的数量
【发布时间】: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


【解决方案1】:

冲突集可以建模为图中的边。您正在询问图中独立顶点集的数量

图 G 的独立顶点集是顶点的子集,使得子集中没有两个顶点代表 G 的一条边 - http://mathworld.wolfram.com/IndependentVertexSet.html

上面的链接还提到了一个叫做独立多项式的东西,它可以用来计算这些东西——尽管这只有在冲突图有一个很好的结构时才有用。确定独立集数量的一般问题已知是#P-complete(有关此复杂性类的定义,请参见https://en.wikipedia.org/wiki/Sharp-P-complete),因此您的问题几乎不可能有简单的答案。在某些情况下,已应用马尔可夫链技术近似这个数字。见http://www.researchgate.net/publication/221590282_Approximately_Counting_Up_To_Four_(Extended_Abstract)

【讨论】:

  • 这个链接真的很有帮助,但是现在的问题是,关于你的数据或问题实例,你怎么知道哪个图表是正确的。
  • 看来你是在深水区。好消息是有大量与该问题相关的文献。坏消息是,文献中没有你所希望的那种简单的公式或算法。我已经编辑了我的答案(如果你愿意,你可以接受)以反映这一点。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-04-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多