日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

行逻辑连接的顺序表实现稀疏矩阵乘法

發布時間:2023/12/14 编程问答 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 行逻辑连接的顺序表实现稀疏矩阵乘法 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

?

行邏輯連接順序表

采用一位三元結構體組記錄的每一個元素在矩陣中的具體位置,采用一維數組記錄每行第一個非元素的位置,具有記錄行數,列數和非元素總個數的結構體成員變量。

算法思想

逐行求積,每次處理一行,設立一個一維數組ctemp對應乘積結果中的對應行元素構成的數組。

將前乘矩陣M當前行的非0元素找到對應在后乘矩陣N中的對應行,依次去乘其行中每一列的非0元素,然后累加到ctemp對應的元素的位置上。

每行運算結束進行壓縮存儲到矩陣Q中。

注意事項

本示例中將矩陣的行號和列號與所用數據結構對應,因此三元順序組和儲存行信息的數組下標為0的位置屬于浪費位置,可通過修改代碼中部分變量的值更正。

以下為可運行源碼,內含例子驗證正確性。

#include <stdio.h> const int MAXSIZE = 100;//最多非0元素個數 const int MAXRC = 100;//矩陣最多行數 typedef int ElemType; typedef struct{int i,j;ElemType e; }Triple; typedef struct{Triple data[MAXSIZE+1];//非0三元組表int rpos[MAXRC+1];//各行第一個非0元的位置表 int mu,nu,tu;//矩陣行數、列數與非0元素個數 }RLSMatrix; //行邏輯連接的矩陣M*N算法函數 int MultSMatrix(RLSMatrix M,RLSMatrix N,RLSMatrix &Q){int ccol=0;//行累加器 //可運算性判斷 if(M.nu!=N.mu)return -1;//Q的初始化 Q.mu=M.mu;Q.nu=N.nu;Q.tu=0;//Q為非0矩陣才有運算必要if(M.tu*N.tu!=0) {//當前處理的M的行標 int arow;//按行處理,arow即是前乘矩陣M的行號也是結果矩陣Q的行號 for(arow=1;arow<=M.mu;++arow) {//行元素累加器清0 int ctemp[M.nu]={0};//每計算 一行設置當前行的第一個非0元素位置為之前行所有非0 元素之和+1 Q.rpos[arow]=Q.tu+1;//當前行的下一行第一個非0元素在M.data中的位置,如果是最后一行取所有的非0元素之和+1 int tp=0;if(arow<M.mu)tp=M.rpos[arow+1];else{tp=M.tu+1;} int p=0;int q=0;int t=0; //對當前行的每一個非0元素處理 計算其對應的位置乘積和 int brow=0;for(p=M.rpos[arow];p<tp;++p) {//找到該元素對應的N的行號 brow = M.data[p].j;//取找到的N對應行下一行第一個元素的位置,如果是最后一行取所有的非0元素之和+1 if(brow<N.mu)t=N.rpos[brow+1];elset=N.tu+1;//N對應行位置上的元素與M當前位置元素相乘,累加進入ctemp行累加器對應位置 for(q=N.rpos[brow];q<t;++q){ccol=N.data[q].j;ctemp[ccol]+=M.data[p].e*N.data[q].e;} }//累加器上對應位置壓縮存儲 for(ccol=1;ccol<=Q.nu;++ccol){if(ctemp[ccol]){if(++Q.tu>MAXSIZE)return -1;Q.data[Q.tu].i=arow;Q.data[Q.tu].j=ccol;Q.data[Q.tu].e=ctemp[ccol];}}}Q.rpos[arow]=Q.tu+1;}return 1; } int main(){RLSMatrix M={{{0,0,0},{1,1,3},{1,4,5},{2,2,-1},{3,1,2}},{0,1,3,4,5},3,4,4};RLSMatrix N={{{0,0,0},{1,2,2},{2,1,1},{3,1,-2},{3,2,4}},{0,1,2,3,5},4,2,4};RLSMatrix M0={{{0,0,0},{1,1,1},{1,2,2},{1,3,3},{2,1,4},{2,2,5},{2,3,6}},{0,1,4,0},2,3,6};RLSMatrix N0={{{0,0,0},{1,1,1},{1,2,2},{2,1,3},{2,2,4},{3,1,5},{3,2,6}},{0,1,3,5,0},3,2,6};RLSMatrix Q;MultSMatrix(M0,N0,Q);for(int i=1;i<=Q.tu;i++)printf("%4d%4d%4d\n%5d\n%5d%5d%5d\n%5d\n\n",Q.data[i].i,Q.data[i].j,Q.data[i].e,Q.rpos[i],Q.mu,Q.nu,Q.tu,i);}

?

?

?

?

總結

以上是生活随笔為你收集整理的行逻辑连接的顺序表实现稀疏矩阵乘法的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 日本一本在线观看 | 日本在线视频播放 | 熟女高潮一区二区三区视频 | 91精品国产91久久久久久黑人 | 青草视频在线观看免费 | c逼| 大帝av | xxxxx色| 日韩精品无码一本二本三本色 | av网站在线免费播放 | 亚洲人成人一区二区在线观看 | 午夜小影院 | 欧美一级特黄aaaaaa大片在线观看 | v天堂中文在线 | 在线视频区| 国产电影一区二区三区 | 日韩美女少妇 | 中文字幕亚洲不卡 | 欧美国产三级 | 97xxx| 亚洲看 | 日爽夜爽 | 伊人啪啪网| 性欧美巨大乳 | 肉色超薄丝袜脚交一区二区图片 | 国产精品久久婷婷六月丁香 | 99re久久| 日韩在线综合 | 久久亚洲精品视频 | aaa成人 | 性xxxxx大片免费视频 | 日韩乱码人妻无码系列中文字幕 | 色久婷婷| 亚洲精品国产片 | 免费午夜视频 | 波多野结衣在线观看一区二区三区 | 91精品福利| 少妇吹潮| 水密桃av| 天天摸天天舔 | 九九九视频在线观看 | 在线观看中文 | 暖暖视频日本 | 91黄色大片 | 欧美午夜理伦三级在线观看 | 国产在线视频第一页 | 青青草网站 | 草视频在线观看 | 国产毛片3| 国产精品色呦呦 | 色婷婷av一区二区三区之红樱桃 | 成人自拍网站 | 在线观看深夜视频 | 婷婷爱五月天 | 国产第9页| 狠狠干网| 中文字幕人成人乱码亚洲电影 | 欧美成人dvd在线视频 | 亚洲v国产v | 不卡中文字幕av | 91人人澡人人爽 | 水蜜桃av在线 | 国产乱人乱偷精品视频a人人澡 | 精品二区视频 | 免费成人黄 | 日日干,夜夜操 | 日韩bbw| 日本九九热 | 国产免费久久精品国产传媒 | 精品人妻无码一区二区三 | 狼人综合av| 国产综合欧美 | 亚洲欧洲免费视频 | 国产精品theporn | 成人在线直播 | 18色av | 婷婷久草| 国产精品主播在线 | 性猛交ⅹxxx富婆video | 日韩av在线播放不卡 | 毛片日本| 91在线中文 | av网站国产| 色批网站 | 精品久久久久久亚洲综合网站 | 午夜一本 | 超碰在97 | 椎名由奈av一区二区三区 | 日韩精品极品视频 | 成人在线一区二区三区 | 日本一级淫片色费放 | 91色网站| 国产精品9191| 欧美精品一区二区三区视频 | 麻豆视频在线 | 国产视频www | 五月天男人天堂 | 成人午夜福利一区二区 | 成人免费毛片网 |