嵌套集嵌套算法

时间:2017-09-13 03:09:13

标签: algorithm sorting set directed-acyclic-graphs partial-ordering

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

[{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}{1, 5}等公共元素的集合。

此问题似乎与Topological sortingLinear Extensions of a partial order有关。

这几乎与Generate a DAG from a poset using stricly functional programming重复,但我对一个不是纯粹功能的解决方案持开放态度。

0 个答案:

没有答案