问题描述
同一作者的两个recent questions 1 一般用同样的技术解决。对我来说,这就像是一个经过研究并且可能很好解决的问题。
假设这是一个众所周知的问题,我想知道它可能被称为什么以及在哪里可以找到有关它的更多信息
这是我自己对问题的表述:
如果我们有一个集合,M
,MultiSets2,M_1
- M_n
由集合 S
的元素组成,并且我们有一个多组组件 C
,也从 S
中提取,我们如何找到 M
的所有子集,使得对于每个子集,{{1} 的每个元素的重数}} 在其联合中不大于该元素在 S
?3
例如,将 my own answer 解释为第一个问题:
我想我明白你想要的是这样的:
C
屈服
const catalog= ["ad","aab","ace","cd","ba","bd","adf","def"]
const components = ["a","b","a","c","d","e"]
simultaneousItems (catalog,components)
结果中的每个数组都是目录项的子集,可以由提供的组件组合在一起。因此,例如,没有一个输出数组包含 [
["ad","ace"],["ad","ba"],["ad"],["aab","cd"],["aab"],["ace","bd"],["ace"],["cd",["cd"],["ba"],["bd"],[]
]
或 "adf"
,因为我们在组件中没有 "def"
,并且它们都不包含 both { {1}} 和 "f"
,因为我们在组件列表中只有两个 "ad"
。
请注意,我使用 "aab"
作为包含字符串 "a"
、"abc"
和 "a"
的集合的简写。
最初的问题似乎是在寻找最大子集,所以还有一个额外的步骤,这可能是一个同样有趣的问题,但我对上面的版本更好奇。
请不要将我的解决方案视为任何一种算法理想。这是我想到的第一个想法。
这是一个众所周知的问题吗?与背包问题和其他包装问题有一些模糊的关系,但我无法弄清楚要搜索的内容和位置。
1first one 更接近我认为的基本算法问题。我假设 second one 更接近 OP 试图解决的真正问题。 OP 还没有任何反馈,我不确定我的答案是否符合实际需求,但无论如何我觉得这是一个有趣的问题。
2 或 "b"
或 "c"
。 (definition)
3 如果 C = {S_1^m(z_1),S_2^m(z_2),... S_j^m(z_j)} 对于一些整数 j 和 S_1 ,S_2,... S_j 在 S 中,如果 N = { M_a_1,M_a_2,... M_a_k} 是结果中 M 的子集之一,∪ {M_a_1,... M_a_k} = {S_1^m(x_1),S_2^m (x_2),... S_j^m(x_j)},那么对于所有的 i,x_i ≤ z_i.
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)