Algorithm 嵌套集的算法
我收集了大量集合,其中一些集合是彼此的子集,如:Algorithm 嵌套集的算法,algorithm,sorting,set,directed-acyclic-graphs,partial-ordering,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} 除了比较集合的所有组合之外,还有什么方法可以做到这一点(当集合数量很大时,这是禁止的)。这似乎接近一些封面问题,但我找不到
[{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}
这个问题似乎与和有关
这几乎是的一个副本,但我对一个非纯函数性的解决方案持开放态度。[{1,2,3,4},{1,2,3},{1,2},{1}]我怀疑当最终的图形是一个完整的图形时,是否有可能避免O(N^2)?我觉得我应该能够利用偏序性来做得更好。你可以从按大小排序集合开始,当你看下一个集合时,你可以开始将它与前一组的大小顺序进行比较,如果它是其中一个的超集,那么它也是整个子图的超集,并且你不需要考虑那些较小的集合。参见链接自的文件。您是否希望得到包含所有肋骨的完整图形?在构建DAG之后,您将如何使用它?