将稀疏矩阵划分为最小数量的组件

时间:2013-10-04 16:03:13

标签: algorithm data-structures graph matrix graph-algorithm

如何将稀疏矩阵划分为最小数量的连接组件,以使每个组件在整个组件中具有公共行或列。我应该用什么数据结构在最短的时间内完成这项任务。我认为这样做我必须最大化每个组件中的元素数量,这样在输入时我存储了每行和每列中的元素数量。我对列表进行了排序,然后用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))作为分区进行分区。

编辑:或者等效地,我们可以将其视为一组具有两个与之关联的数字的元素,并且我们输出最小数量的分区,使得每个分区具有两个数中的一个作为公共数。

1 个答案:

答案 0 :(得分:0)

我相信您会发现这些演讲幻灯片相关:http://www.cs.indiana.edu/classes/b673/notes/GraphPartitioning.pdf