十五、稀疏矩阵的乘法运算 您所在的位置:网站首页 三个矩阵相乘结果还是矩阵吗 十五、稀疏矩阵的乘法运算

十五、稀疏矩阵的乘法运算

2023-11-03 00:30| 来源: 网络整理| 查看: 265

十五、稀疏矩阵的乘法运算

文章目录 十五、稀疏矩阵的乘法运算题目描述解题思路上机代码

题目描述

数据压缩是提高传输、存储效率一种技术。教材第5章介绍了两种简单的压缩存储方法。

本实验要求实现两个稀疏矩阵相乘积的算法**。其中稀疏矩阵非零元素数量小于100.**

输入:

第1个稀疏矩阵的行数

列数非零元个数(三个数都大于0)三元组

第2个稀疏矩阵的行数

列数非零元个数(三个数都大于0)三元组

以行为主序输入稀疏矩阵三元组表

输出:

乘积矩阵的行数 列数 非零元个数(三个数都大于0) 三元组

测试输入期待的输出时间限制内存限制额外进程测试用例 13441 1 31 4 52 2 -13 1 24241 2 22 1 13 1 -23 2 43231,2,62,1,-13,2,41秒256KB0 解题思路

教材第 100 页指出,为了便于随机存取任意一行的非零元,需要知道每一行的第一个非零元在三元组表中的位置。因此,把指示 “行” 信息的辅助数组 cpot 固定在稀疏矩阵的存储结构中,称这种 “带行链接信息” 的三元组表为行逻辑链接的顺序表。

/* 行逻辑链接顺序表 */ typedef struct { Triple data[1000]; //非零元三元组表 int rpos[1000]; //各行第一个非零元的位置表 int mu, nu, tu; //矩阵的行数、列数和非零元个数 }RLSMatrix;

教材第 102 页给出了稀疏矩阵乘法的基本操作描述和算法流程实现。

矩阵乘法

上机代码 #include #include #include #include #include using namespace std; //定义三元组和顺序表 typedef struct { int i, j; int e; }Triple; typedef struct { Triple data[1000]; int rpos[1000]; int mu, nu, tu; }RLSMatrix; int rpos[1000]; int num[1000]; int main() { int arow = 0, brow = 0, tp = 0; int col = 0, ccol = 0; int p = 0, t = 0, q = 0; RLSMatrix M, N, Q; //输入M、N矩阵数据 scanf("%d%d%d", &M.mu, &M.nu, &M.tu); for (int i = 1; i


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有