当前位置:首页 » 文件管理 » 矩阵压缩算法

矩阵压缩算法

发布时间: 2022-07-12 22:42:06

‘壹’ 稀疏矩阵的压缩存储只需要存储什么

非零元素。

对于一个用二维数组存储的稀疏矩阵Amn,如果假设存储每个数组元素需要L个字节,那么存储整个矩阵需要m*n*L个字节。但是,这些存储空间的大部分存放的是0元素,从而造成大量的空间浪费。为了节省存储空间,可以只存储其中的非0元素。

(1)矩阵压缩算法扩展阅读

稀疏矩阵算法的最大特点是通过只存储和处理非零元素从而大幅度降低存储空间需求以及计算复杂度,代价则是必须使用专门的稀疏矩阵压缩存储数据结构。稀疏矩阵算法是典型的不规则算法,计算访存比很低,并且计算过程中的访存轨迹与稀疏矩阵的稀疏结构相关。

‘贰’ 数据结构 设计算法实现一个10行10列的对称矩阵的压缩和解压缩,并要求打印出对应的内容。

#include<stdio.h>
#include<string.h>

void Press()
{
int a[10][10];
int code[10*10];
int i,j,id;
for(i=0;i<10;i++)
{
for(j=0;j<10;j++)
scanf("%d",&a[i][j]);
}
id=0;
for(i=0;i<10;i++)
{
for(j=0;j<=i;j++)
{
code[id]=a[i][j];
id++;
}
}
for(i=0;i<id;i++)printf("%d ",code[i]);
puts("");
}
void DePress()
{
int a[10][10];
int code[10*10];
int i,j,id;
id=0;
for(i=0;i<10;i++)
{
for(j=0;j<=i;j++)
{
scanf("%d",&a[i][j]);
a[j][i]=a[i][j];
}
}
for(i=0;i<10;i++)
{
for(j=0;j<10;j++)
{
printf("%d ",a[i][j]);
}
puts("");
}

}
int main()
{
int cmd;
puts("输入命令(1、压缩,2、解压缩):");
scanf("%d",&cmd);
if(cmd==1)
{
Press();//压缩
}
else
{
DePress();//解压缩
}
return 0;
}
/*
1
1 2
1 2 3
1 2 3 4
1 2 3 4 5
1 2 3 4 5 6
1 2 3 4 5 6 7
1 2 3 4 5 6 7 8
1 2 3 4 5 6 7 8 9
1 2 3 4 5 6 7 8 9 10
*/

‘叁’ 怎样压缩矩阵元素的存储空间

AC
稀疏矩阵(SparseMatrix):是矩阵中的一种特殊情况,其非零元素的个数远小于零元素的个数.
压缩存储:为多个值相同的元素只分配一个存储空间;对0元素不分配空间.目的是节省大量存储空间.
当使用三元组顺序表(又称有序的双下标法)压缩存储稀疏矩阵时,对矩阵中的每个非零元素用三个域分别表示其所在的行号,列号和元素值.它的特点是,非零元在表中按行序有序存储,因此便于进行依行顺序处理的矩阵运算.当矩阵中的非0元素少于1/3时即可节省存储空间.

‘肆’ 用C语言编写:特殊矩阵的压缩存储算法的实现(对称矩阵、三角矩阵、对角矩阵)

可以用十字链表 三元组表 或者其他 都可以对特殊矩阵进行压缩存储

‘伍’ 特殊矩阵的压缩存储算法的实现

还不简单。就这样那样这样那样的。我以为你以为的、

‘陆’ 数据结构(c版):编写算法,将上下三角矩阵压缩为一个数组矩阵

将那个上三角压缩成一维数组的公式倒过来求解就可以得到原始的二维坐标了

‘柒’ 稀疏矩阵的压缩存储思想

为了节省存储空间并且加快处理速度,需要对这类矩阵进行压缩存储,压缩存储的原则是:不重复存储相同元素;不存储零值元素。稀疏矩阵,有三元组表示法、带辅助行向量的二元组表示法(也即行逻辑链表的顺序表),十字链表表示法等。算法基本思想:num[col]:第col列的非零元素个数;cpot[col]:第col列第一个非零元在b.data中的恰当位置;在转置过程中,指示该列下一个非零元在b.data中的位置。

‘捌’ 对稀疏矩阵进行压缩存储的目的是什么

对稀疏矩阵进行压缩存储目的是节省存储空间。

存储矩阵的一般方法是采用二维数组,其优点是可以随机地访问每一个元素,因而能够较容易地实现矩阵的各种运算。

但对于稀疏矩阵而言,若用二维数组来表示,会重复存储了很多个0了,浪费空间,而且要花费时间来进行零元素的无效计算。所以必须考虑对稀疏矩阵进行压缩存储。



(8)矩阵压缩算法扩展阅读

优点

稀疏矩阵的计算速度更快,因为MATLAB只对非零元素进行操作,这是稀疏矩阵的一个突出的优点。假设矩阵A,B中的矩阵一样,计算2*A需要一百万次的浮点运算,而计算2*B只需要2000次浮点运算。

因为MATLAB不能自动创建稀疏矩阵,所以要用特殊的命令来得到稀疏矩阵。算术和逻辑运算都适用于稀疏矩阵。对于一个用二维数组存储的稀疏矩阵Amn,如果假设存储每个数组元素需要L个字节,那么存储整个矩阵需要m*n*L个字节。

‘玖’ 特殊矩阵的压缩存储:上三角、对称、下三角存储,有三个问题。求大侠们解答~亲一个~这个图能看清吗

1.k=n*(n+1)/2的原因是:对于三角矩阵,从1到N的总和是这么多,也就是说整个矩阵有这么多元素。另外正三角阵对应正方形。
对称矩阵满足A的转置也就是自身的特点,元素上,a[i,j] = a[j,i]。实际上的存储可以利用三角阵。所以老实说我对于他对称阵算法为什么少一个元素也有疑惑。
可能是三角阵可以对应不等长的矩阵,所以造成了k值不一样。
2.上三角阵,存在的元素是满足[1<= j <=n, i >= j]的关系[这里用i表横坐标j表纵坐标],如果是长3宽4的当然不能和长4宽3的相提并论,试着画画就明白了。
3.对称阵不会出现像三角阵那样有一小角还是其他数字的情况。这个其他数字就是(6+1)-1=6。
4.压缩存储,只是将部分符合条件的矩阵减少一部分的存储空间。老实说我也感觉不很有用,除非他处理的数据本身必然具备此类特点。
5.固定的,多试几次自己记下来然后找找就好。如果没记错的话,在矩阵上画画就可以看出来。
6.stdlib.h是标准的输入输出库,最为常用,至少里面包括了scanf等函数,只要你需要printf你就不能扔掉它。否则会出现函数未定义的问题。毕竟语言本身不提供函数类库,类库需要另行引用。

热点内容
安卓模拟器root怎么关闭 发布:2025-01-20 06:02:03 浏览:17
宽屏企业网站源码 发布:2025-01-20 05:55:54 浏览:451
局域网电脑访问权限 发布:2025-01-20 05:55:44 浏览:823
javaandroid游戏开发 发布:2025-01-20 05:54:19 浏览:72
数据库映射是什么 发布:2025-01-20 05:41:52 浏览:981
中国植物数据库 发布:2025-01-20 05:38:50 浏览:334
C语言能吗 发布:2025-01-20 05:37:25 浏览:558
onedrive存储位置 发布:2025-01-20 05:35:16 浏览:826
导航广播怎么存储电台 发布:2025-01-20 05:35:14 浏览:310
歌的压缩包 发布:2025-01-20 05:23:53 浏览:391