稀疏矩陣的轉置(矩陣轉置和快速轉置)

2021-08-20 18:09:13 字數 1160 閱讀 5144

實現矩陣的轉置:

1.將矩陣的行列值相互轉換。

2.將每個三元組中的i和j交換。

3.重排三元組之間的次序便可實現矩陣的轉置。

void transposesmatrix(tsmatrix m, tsmatrix &t)   

} return;

} // transposesmatrix

快速轉置的原理是:如果能預先確定矩陣m中每一列(即t中每一行)的第乙個非零元在b.data中(上面那圖是b.data)恰當位置。那麼在對a.data中的三元組一次做轉置時,便可直接放到b.data中恰當的位置上去。

設兩個向量:num和cpot

num[col]表示矩陣m中第col列中的非零元素個數。

cpot[col]指m中第col列的第乙個非零元在b.data中的恰當位置。

有下面兩個公式:

cpot[0]=0;

cpot[col]=copt[col-1]+num[col-1] 1<=col

#include #include #define maxsize 1250

#define ok 1

#define error 0

#define true 1

#define flase 0

typedef int elemtype;

typedef structtriple;

typedef structtsmatrix;

void fasttransposesmatrix(tsmatrix m, tsmatrix &t) //快速轉置

//for

}//if

return;

}//fasttransposesmatrix

int main()

fasttransposesmatrix(m, t);

for (int t = 0; t < t.tu; t++)

printf("%d %d %d\n", t.data[t].i, t.data[t].j, t.data[t].e);

return 0;

}

執行++cpot[col]之後從每一列的第乙個元素移到了第二個元素。

稀疏矩陣的轉置與快速轉置

假設在m n的矩陣中,有t個元素不為0。令稀疏因子s t m n 通常認為s 0.05時稱為稀疏矩陣。有時為了節省儲存空間,可以對這類矩陣進行壓縮儲存。所謂的壓縮儲存就是,為多個相同的值分配儲存在乙個空間,對零元不分配空間。而稀疏矩陣是只儲存有效值,無效值只分配乙個空間。在這裡我們用乙個順序表vec...

稀疏矩陣快速轉置

include include typedef structmatrix typedef int spmatrix 100 3 三元陣列別名 spmatrix a,b 建立兩個三元陣列,a為轉置前,b為轉置後 int pos 1000 num 1000 int getthree matrix s,i...

稀疏矩陣快速轉置

稀疏矩陣的儲存不宜用二維陣列儲存每個元素,那樣的話會浪費很多的儲存空間。所以可以使用乙個一維陣列儲存其中的非零元素。這個一維陣列的元素型別是乙個三元組,由非零元素在該稀疏矩陣中的位置 行號和列號對 以及該元組的值構成。而矩陣轉置就是將矩陣行和列上的元素對換。參考演算法5.1中的具體做法,令mu和nu...