61、矩形矩阵的原地转置算法研究

矩形矩阵的原地转置算法研究

1. 引言

在矩阵运算中,矩阵转置是一个常见的操作。对于一个 $m$ 行 $n$ 列的矩形矩阵 $A$,其转置矩阵 $A^T$ 是一个 $n$ 行 $m$ 列的矩阵。目前,在稠密线性代数库中,当 $m \neq n$ 时,往往缺乏高效的原地转置算法。

这里介绍一种新的算法,它在原地转置矩形矩阵时所需的额外存储空间很少甚至不需要。该算法的最坏情况复杂度为 $O(N \log N)$,其中 $N = mn$。当使用大小为 IWORK 字的位向量时,能进一步提高效率;当 IWORK = 0 时,不使用额外存储;当 IWORK = m*n/ws ($ws$ 为字大小)时,算法复杂度为 $O(N)$。

该算法基于对长度为 $q = mn - 1$ 的置换 $P$ 的循环跟踪。置换 $P$ 由 Fortran 和 C 语言的标准存储布局所诱导的 $A$ 到 $A^T$ 的映射定义。通过位向量可以标记 $P$ 的哪些循环已被访问,从而轻松确定每个新循环的起始点。

2. 基本原地转置算法 IPT

以下是基本原地转置算法 IPT 的代码:

ALGORITHM IPT (m,n,A)
DO cnt = 1, mn-2
    k = P(cnt)
    DO WHILE (k > cnt)
        k = P(k)
    END DO
    IF (k = cnt) then
        Transpose that part
   
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值