3

我有大量集合,其中一些是彼此的子集,例如:

[{1, 2, 3, 4}, {1, 2}, {1, 5}, {1, 2, 3, 4, 5}, {2, 6}]

我想获取这个集合并输出子集关系的偏序 DAG

{1, 2, 3, 4, 5} >= {1, 2, 3, 4} >= {1, 2}
{1, 2, 3, 4, 5} >= {1, 5}
{2, 6}

除了比较集合的所有组合(当有大量集合时这是禁止的)之外,有没有办法做到这一点。这似乎接近于一些设置封面问题,但是,我找不到可以减少的问题。

一种优化是创建一个倒排索引,这将有助于避免比较没有像{2, 6}and这样的公共元素的集合{1, 5}

这个问题似乎与偏序的拓扑排序线性扩展有关

这几乎是Generate a DAG from a poset using stricly functional programming的复制品,但我对非纯功能性的解决方案持开放态度。

4

0 回答 0