Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/11.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 - Fatal编程技术网

Algorithm 将布尔矩阵转换为行,其中没有一个条目是另一个的超集

Algorithm 将布尔矩阵转换为行,其中没有一个条目是另一个的超集,algorithm,Algorithm,我有一个布尔值矩阵,其中列是唯一的操作,行是所有可能的解决方案,因此每行使用1来指示此解决方案是否需要关联的唯一操作。我想消除集合中任何其他行的超集的所有行,并返回一个矩阵,其中没有一行是任何其他行的超集 有没有办法在不到n^2的时间内有效地完成这项工作 尝试了图形算法(失败)和常规集合操作,但这还不够有效。如果按照1的数量对行进行排序,我现在可以想到一个解决方案 按1的升序在行上循环 对于每个1,存储以下行的行索引: 在同一列中有一个1 在当前行的下方(即有更多的1) 完成当前行中所有索引

我有一个布尔值矩阵,其中列是唯一的操作,行是所有可能的解决方案,因此每行使用1来指示此解决方案是否需要关联的唯一操作。我想消除集合中任何其他行的超集的所有行,并返回一个矩阵,其中没有一行是任何其他行的超集

有没有办法在不到n^2的时间内有效地完成这项工作


尝试了图形算法(失败)和常规集合操作,但这还不够有效。

如果按照1的数量对行进行排序,我现在可以想到一个解决方案

  • 按1的升序在行上循环

  • 对于每个1,存储以下行的行索引:

    • 在同一列中有一个1
    • 在当前行的下方(即有更多的1)
  • 完成当前行中所有索引的读取后,在开始下一次迭代的步骤2之前,获取行索引列表的交集并删除

  • 这样,复杂性将为O(N^2)

    您好,我们是否可以更改数据输入的存储格式,因为如果它是一个矩阵,那么我们可能需要至少访问每个单元格一次,使得在不到n^2的复杂度下几乎不可能完成。超集是指任何一行都可以执行其他行执行的所有操作,那是超集行吗?