(相关资料图)
1、①三元组表表示的矩阵转置的思想方法 第一步:根据A矩阵的行数、列数和非零元总数确定B矩阵的列数、行数和非零元总数。
2、 第二步:当三元组表非空(A矩阵的非零元不为0)时,根据A矩阵三元组表的结点空间data(以下简称为三元组表),将A的三元组表a->data置换为B的三元组表b->data。
3、 ②三元组表的转置 方法一:简单地交换a->data中i和j中的内容,得到按列优先顺序存储倒b->data;再将b->data重排成按行优先顺序的三元组表。
4、 方法二:由于A的列是B的行,因此,按a->data的列序转置,所得到的转置矩阵B的三元组表b->data必定是按行优先存放的。
5、 按这种方法设计的算法,其基本思想是:对A中的每一列col(0≤col≤a->n-1),通过从头至尾扫描三元组表a->data,找出所有列号等于col的那些三元组,将它们的行号和列号互换后依次放人b->data中,即可得到B的按行优先的压缩存贮表示。
6、 ③具体算法: void TransMatrix(TriTupleTable *b,TriTupleTable *a) {//*a,*b是矩阵A、B的三元组表表示,求A转置为B int p,q,col; b->m=a->n; b->n=a->m; //A和B的行列总数互换 b->t=a->t; //非零元总数 if(b->t<=0) Error("A=0"); //A中无非零元,退出 q=0; for(col=0;coln;col++) //对A的每一列 for(p=0;pt;p++) //扫描A的三元组表 if(a->data[p].j==col){ //找列号为col的三元组 b->data[q).i=a->data[p].j; b->data[q].j=a->data[p].i; b->data[q].v=a->data[p].v; q++; } } //TransMatrix ④算法分析 该算法的时间主要耗费在col和p的二重循环上: 若A的列数为n,非零元素个数t,则执行时间为O(n×t),即与A的列数和非零元素个数的乘积成正比。
本文到此分享完毕,希望对大家有所帮助。
X 关闭
-
互联网
2023-05-14
旋转矩阵缩水软件_旋转矩阵的原理
-
e公司
2023-05-14
全球新消息丨事关"天上"网速!中国移动获批开展5G地空通信技术试验
-
九派新闻
2023-05-14
天天视讯!保德县气象台发布大风蓝色预警【Ⅳ级/一般】【2023-05-14】
-
互联网
2023-05-14
台钓调漂方法(台钓)_全球快报
-
证券时报网
2023-05-14
紧盯薄弱环节 政策将更务实管用
-
文旅头条
2023-05-14
盘点|你好!请查收本周的大理文旅要闻
-
青年汽车云小站
2023-05-14
速递!综漫寂静无声在线阅读_综漫 寂静无声
-
城市网
2023-05-14
精彩看点:莜面是什么面粉做的 莜面是什么面
-
太平洋礼物网
2023-05-14
即时看!如何计算叠背窗帘
-
牛游戏网
2023-05-14
《萨默维尔》开发商 X/PGP影响游戏销量

