我想创建一个约束来过滤 nxn 矩阵中的所有重复行,其中每个字段由 0 或 1 组成。矩阵最多可以有 10x10 行和列。例如,我们有以下 4x4 矩阵:
0 1 0 1
1 1 1 0
0 1 0 1
1 0 1 1
那么第 1 行和第 3 行将是相同的,这是不可能的。我一直在思考这个问题 4 个小时,但没有运气。
有人可以给我一个提示吗?
我想创建一个约束来过滤 nxn 矩阵中的所有重复行,其中每个字段由 0 或 1 组成。矩阵最多可以有 10x10 行和列。例如,我们有以下 4x4 矩阵:
0 1 0 1
1 1 1 0
0 1 0 1
1 0 1 1
那么第 1 行和第 3 行将是相同的,这是不可能的。我一直在思考这个问题 4 个小时,但没有运气。
有人可以给我一个提示吗?
正如您所注意到的,您不能“仅仅”让行 (1,0,1,1) 在数据记录关系中出现两次。当然,问题在于数据记录关系存储集合,而不是元素的列表或多集合。处理这个问题的最好方法是添加额外的数据来跟踪一行出现的频率,以将矩阵视为从索引到值的映射。您可以尝试以下方法之一:
myUnorderedMultiset[x,y,z,w]=count -> int(x), int(y), int(z), int(w), int(count).
或者
myMatrix[rowIndex, columnIndex] = value -> int(rowIndex), int(columnIndex), int(value).