设置简化

时间:2017-08-09 18:38:27

标签: algorithm language-agnostic set compression

说我有两套,set1 = {a,b,c,d,e,f}set2 = {a,b,c,d,e,g}。我没有明确地表达这些,而是​​想创建像

这样的东西
common = {a,b,c,d,e}
set1 = common + f
set2 = common + g

如果我们想要代表{a,b,c,h},我们可以将其表示为common - d - e + h

我的目标基本上是能够生成要使用的最佳公共部分。只有一个共同的部分,这不是太具有挑战性,但我需要允许不止一个(但不是无限制,或获得的好处将是微不足道的)。

最佳,我的意思是“表达的元素数量最少”。因此,在上面的示例中,使用common变量“成本”5(元素数量)。然后设置1和2都是成本2(一个用于引用公共,一个用于添加额外元素),总计为7.没有替换,这些将花费12来存储(每个6个元素)。类似地,从引用中减去一个元素“cost”1。

另一个例子, {a,b,c,d}, {a,c,d,e}, {e,f,g,h} and {e,f}

可能是

common1 = {a,c,d}
common2 = {e,f,g}
set1 = common1 + b
set2 = common1 + e
set3 = common2 + h
set4 = common2 - g

通过允许多个共同部分,这变得更具挑战性。是否存在此类问题的名称或类似问题?看起来它可能与压缩有关,但我无法找到太多资源,从哪里开始。

其他一些可能相关的细节:

  • 允许引用多个公共部分来表示一组可能有效,但不是必需的。
  • 对于我的用例,这些集合通常是大约20个元素和大约10个不同的集合。

0 个答案:

没有答案