当前位置:文档之家› 4.3.2 稀疏矩阵-两种转置算法

4.3.2 稀疏矩阵-两种转置算法

数组
Content 数组的基本概念1
特殊矩阵2
稀疏矩阵
3 A 稀疏矩阵的抽象数据类型B 稀疏矩阵的两种转置算法 C 稀疏矩阵的快速转置算法
D 快速转置算法实例演示
PART THREE B 稀疏矩阵的两种转置算法
矩阵的转置
a d
b e
c f T
=
a b c
d e f
•在计算机图形学的领域中,矩阵可用来描述物体所有的点在一个线性空间里的坐标
•在做图像处理或输出时,如果要对一个物体进行旋转/ 平移/ 缩放等操作,就要对描述这个物体的所有矩阵进行运算:
➢在二维空间里矩阵的转置,就相当于得到关于某个点对称的二维图像
➢在三维空间里矩阵的转置,同样是相当于得到关于某个点对称的三维立体
Transpose
•采用二维数组A存储一个普通m×n矩阵,假设将矩阵转置结果存储到n×m矩阵B中
for(int i=0;i<m;i++)
for(int j=0;j<n;j++)
B[j][i]=A[i][j];
上述程序段需要访问矩阵中的每一个元素,时间复杂度为O(m×n)
步骤1:依次访问A的行三元组表中各个三元组<i, j, a
>,交换元素行列号后依次
ij
保存到B的行三元组表中。

步骤2:将B的行三元组表中的行三元组按照行下标值从小到大重新排序。

•步骤1的时间复杂度为O(t)
•步骤2是一个排序过程,采用不同排序算法的时间复杂度为O(t 2) 或O(tlog 2
t)
任何排序算法都可行吗?
•步骤1:对A的行三元组表进行第1次扫描,找到列下标j = 0 的所有三元组<i, 0, a i0>,交换元素行列号后依次保存到B的行三元组表中。

•步骤2:对A的行三元组表进行第2次扫描,找到列下标j = 1 的所有三元组<i, 1, a i1>,交换元素行列号后依次保存到B的行三元组表中。

•……
•步骤n:对A的行三元组表进行第n次扫描,找到列下标j = n-1 的所有三元组<i, n-1, a
>,交换元素行列号后依次保存到B的行三元组表中。

i,n-1
上述算法对A的行三元组表进行了最多n次扫描,每次扫描都要访问所有t个非零元,时间复杂度为O(nt)
上述算法对A的行三元组表进行了最多n次扫描,每次扫描都要访问所有t个非零元,时间复杂度为O(nt)
上述算法对A的行三元组表进行了最多n次扫描,每次扫描都要访问所有t个非零元,时间复杂度为O(nt)
上述算法对A的行三元组表进行了最多n次扫描,每次扫描都要访问所有t个非零元,时间复杂度为O(nt)
END
NEXT:稀疏矩阵的快速转置算法。

相关主题