如何将稀疏矩阵划分为最小数量的连接组件,以使每个组件在整个组件中具有公共行或列。我应该用什么数据结构在最短的时间内完成这项任务。我认为这样做我必须最大化每个组件中的元素数量,这样在输入时我存储了每行和每列中的元素数量。我对列表进行了排序,然后用max(min(行中的元素,列中的元素))对行或列进行了排序,即
row 5-1 column 4-2
row 4-1 column 3-2
row 3-2 column 2-3
row 2-2 column 1-3
row 1-10
表示矩阵:
x
x
x x
x x
xxxxxxxxxx
(x表示非零位置)(此矩阵的最终输出应为4)
左下角是1,1
然后我将首先删除第1列。然后我将不得不更新剩余的数组,这会占用大量的时间,并且每个行和列的存储列表也不可行,因为它使用了大量的内存。我只需要告诉最小分区数,而不是实际分区矩阵。在给定的矩阵中,可以通过将(row1,row2,row3,colum2-(1,2))作为分区进行分区。
编辑:或者等效地,我们可以将其视为一组具有两个与之关联的数字的元素,并且我们输出最小数量的分区,使得每个分区具有两个数中的一个作为公共数。
答案 0 :(得分:0)
我相信您会发现这些演讲幻灯片相关:http://www.cs.indiana.edu/classes/b673/notes/GraphPartitioning.pdf