用于根据某些规则将元素分配到集合的对数

问题描述 投票:-1回答:1

说我有N个元素。我想将它们随机分配到S组。

我想编写一种算法来分发它们,以使每个集合中的元素数量遵循某些规则,即:

  1. 每个集合有k个元素
  2. [任意两个集合之间的交集(S1nS2)具有i个元素
  3. J个元素不属于任何集合。

其中k,i,S,N和J是用户设置的参数。只要满足每个集合和交集的大小,就可以在每个集合中放入哪个元素都没有关系。

如何编写有效分配元素的函数?

我精通python,因此会高度赞赏python或伪代码。

*变量的大小预计约为几千(1000 -10,000)。谢谢=)

python algorithm set solver
1个回答
0
投票

您要解决的问题很难解决您所讨论的大小的输入。让我们仅采用两种特殊情况,它们在参数的范围之内:

  • N = 111S = 111k = 11i = 1J = 0。解决该问题实例的方法是将finite projective plane设为10;这种有限的射影平面的存在是一个长期存在的开放问题,最终于1982年由a computer search which took 183 days to run解决。答案是不存在解决方案。

  • N = 157S = 157k = 13i = 1J = 0。该问题实例的解决方案等效于12阶有限射影平面。在组合论中,是否存在任何解决方案仍然是重要的开放问题。

© www.soinside.com 2019 - 2024. All rights reserved.