APP下载

一种因子化的稀疏矩阵转置算法

2012-11-22

湖南师范大学自然科学学报 2012年3期
关键词:排序

谭 阳

(1.湖南师范大学数学与计算机科学学院,中国 长沙 410081;2.湖南广播电视大学信息技术系,中国 长沙 410004)

1 稀疏矩阵的转置

00130070090000900-400000000 Arraysubscript12345LinevalueColumnvalueElementvalue131321724934942-4

(a) 示例稀疏矩阵A(b) 矩阵A的三元组表示

图1稀疏矩阵A及其三元组表示

目前适用于三元组存储方式的转置算法主要有2种.

1.1 Transpose算法

对已压缩好的三元组的列值进行扫描,首先找出第1列的所有元素,若有,则交换该元素的行值和列值,并依次储存到新的三元组中;再找出第2列的所有元素,第3列的所有元素……重复上述过程,直至所有元素都已存入新的三元组中,新的三元组即为转置后的矩阵.该算法需要对三元组进行多次扫描,若稀疏矩阵A=(ai,j)n×m中含有t个非零元素,则需要进行m×t次比较运算,其时间复杂度为O(n2);所需空间为2×3t,其空间复杂度为O(n).

1.2 快速转置算法

目前计算机上转置稀疏矩阵,通常是采用快速转置算法.此算法同样针对于三元组结构进行转置,但是在转置过程中需要建立两个辅助数组:

i) 用row size[ ]存放先期统计出来的稀疏矩阵A=(ai,j)n×m各列的非零元素个数,即AT各行的非零元素个数.具体方法为:先将该数组清零,然后扫描存储矩阵的三元组,逐个取出非零元素的列值,并将以此列值为下标的辅助数组元素的值累加1.

ii) 用row start[ ]存放先期计算出来的稀疏矩阵A=(ai,j)n×m各行非零元素在转置后的三元组中应存放的位置.具体方法为:转置矩阵的第 0 行从对应三元组的第1个位置开始存放,并循环计算第 2行,第 3行,…,第n行在对应三元组中的开始存放位置.

该算法的

登录APP查看全文

猜你喜欢

排序
排排序
作者简介
作者简介
作者简介(按文章先后排序)
恐怖排序
律句填空排序题的备考策略
节日排序
刻舟求剑
作者简介(按文章先后排序)
2010年