public SubMatrix UnionStar(SubMatrix subMatrix) { var result = new SubMatrix(this); result.rowIndices.UnionWith(subMatrix.rowIndices); result.columnIndices.IntersectWith(subMatrix.columnIndices); return(result); }
private static bool ContainsNoSuperMatrixOf(HashSet <SubMatrix> set, SubMatrix subMatrixA) { foreach (var subMatrixB in set) { if (subMatrixA.IsProperSubMatrixOf(subMatrixB)) { return(false); } } return(true); }
private static HashSet <SubMatrix> IntializeCover(IntMatrix invertedAdjacency) { var cover = new HashSet <SubMatrix>(); for (int i = 0; i < invertedAdjacency.Height; i++) { var subMatrix = new SubMatrix(); for (int j = 0; j < invertedAdjacency.Width; j++) { if (invertedAdjacency[i, j] == 1) { subMatrix.columnIndices.Add(j); } } if (subMatrix.columnIndices.Count > 0) { subMatrix.rowIndices.Add(i); cover.Add(subMatrix); } } return(cover); }
public bool IsSubMatrixOf(SubMatrix subMatrix) { return(rowIndices.IsSubsetOf(subMatrix.rowIndices) && columnIndices.IsSubsetOf(subMatrix.columnIndices)); }
public SubMatrix(SubMatrix matrix) { rowIndices = new HashSet <int>(matrix.rowIndices); columnIndices = new HashSet <int>(matrix.columnIndices); }