Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Algorithm 嵌套集的算法_Algorithm_Sorting_Set_Directed Acyclic Graphs_Partial Ordering - Fatal编程技术网

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之后,您将如何使用它?