孤独的猫

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

[问题] 

将一个 m×n 的矩阵 X 转置后存放到矩阵 Y 中,其计算复杂度为 O(m*n)。对稀疏矩阵来说,可以用紧凑的存贮方式来减少所需的存贮量,并降低计算复杂度。

已知有 t(t>0) 个非零元素的 m×n 稀疏矩阵 W(每行每列至少有一个非零元素)以紧凑方式存放在数组 X[l:t,1:3]中。X 中某行的三个值为(i,j,v)时表示在 W 的第 i 行第 j 列有一个非零元素 v。假定 X 中的元素已按行号列号递增排序。现要求将 X 转置后以紧凑表示形式存放在数组 Y[l:t,1:3] 中,并且 Y 也按行号列号递增排序。

下面描述了两种紧凑的稀疏矩阵的转置算法: 

算法一见流程图a

算法二见流程图b。争扣外图中:数组元素 S[i] 用来存放X中列号为 i 的元素个数,数组元素 U[j] 用来计算X中第 j 列元素在Y中的行号。 

 

[问题1] 

填充流程图 a 和流程图 b 中的 ①~⑤,使之实现相应的算法。
[问题2] 

分别写出算法一和算法二的计算复杂度。

 

答案:

[问题1]

① k+1→k ② X[j,2] ③ U[X[i,2]] ④ U[X[i,2]] ⑤ i>t
[问题2] 算法1的复杂度为 O(n*t);算法2的复杂度为 O(n+t)

posted on 2011-07-03 11:19  孤独的猫  阅读(185)  评论(0编辑  收藏  举报