Algorithm 将布尔矩阵转换为行,其中没有一个条目是另一个的超集
我有一个布尔值矩阵,其中列是唯一的操作,行是所有可能的解决方案,因此每行使用1来指示此解决方案是否需要关联的唯一操作。我想消除集合中任何其他行的超集的所有行,并返回一个矩阵,其中没有一行是任何其他行的超集 有没有办法在不到n^2的时间内有效地完成这项工作Algorithm 将布尔矩阵转换为行,其中没有一个条目是另一个的超集,algorithm,Algorithm,我有一个布尔值矩阵,其中列是唯一的操作,行是所有可能的解决方案,因此每行使用1来指示此解决方案是否需要关联的唯一操作。我想消除集合中任何其他行的超集的所有行,并返回一个矩阵,其中没有一行是任何其他行的超集 有没有办法在不到n^2的时间内有效地完成这项工作 尝试了图形算法(失败)和常规集合操作,但这还不够有效。如果按照1的数量对行进行排序,我现在可以想到一个解决方案 按1的升序在行上循环 对于每个1,存储以下行的行索引: 在同一列中有一个1 在当前行的下方(即有更多的1) 完成当前行中所有索引
尝试了图形算法(失败)和常规集合操作,但这还不够有效。如果按照1的数量对行进行排序,我现在可以想到一个解决方案
- 在同一列中有一个1
- 在当前行的下方(即有更多的1)
这样,复杂性将为O(N^2) 您好,我们是否可以更改数据输入的存储格式,因为如果它是一个矩阵,那么我们可能需要至少访问每个单元格一次,使得在不到n^2的复杂度下几乎不可能完成。超集是指任何一行都可以执行其他行执行的所有操作,那是超集行吗?