已阅读5页,还剩17页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
数组 特殊矩阵的压缩存储 稀疏矩阵,第5章 数组和稀疏矩阵,数 组,数组是n(n1)个相同类型数据元素a1, a2, , an构成的有限序列。 数组的性质: (1)数组中的数据元素数目固定。(定长) (2)数组中的数据元素具有相同的数据类型。 (3)数组中的每个数据元素都和一组唯一的下标值对应。 (4)数组是一种随机存储结构。可以随机存取数组中的任意数据元素。,数 组,一维数组:,a5,m,多维数组:,ADT List 数据对象: D=aj1,j2,j3,jd|ji=1,2,bi,i=1,2,d 数据关系: R=r1, r2, rn ri, =| 1jk bk, 1k b 且 ki, 1 ji bi-1,I=2,3,d 基本运算: Value(A,index1,index2,indexd); Assign(A,e, index1,index2,indexd ); Adisp(A,b1 , b2 , bd ) ,抽象数据类型数组的定义,逻 辑 结 构,一维数组:,ai,ai-1 ai+1,线性结构,二维数组:,aij,aij-1 aij+1,ai-1j ai+1j,三维数组:,aijk,aij-1k aij+1k,aijk+1 aijk-1,ai-1jk ai+1jk,线性结构推广,数组的存储结构,由于数组主要随机访问,没有插入和删除,所以采用顺序方式存储。 一维数组的存储:按次序依次存储在一组连续的存储空间中。 LOC(ai) = LOC(a1)+(i-1)*k 多维数组的存储: 问题:计算机内存是一维,如何存储多维数组。 要求:将多维数组中每个元素按某种次序列排列成为一维结构。 两种方法:以行为主序顺序和以列为主序顺序。,二维数组行优先顺序存储结构,Loc(aij ) = Loc(a11) + (i-1)*n + j-1 *d,每个元素占存储空间大小为d,Loc(aij )=首地址+前面所有元素所占存储空间的总数,前i-1行:有(i-1)*n个元素 第i行:有 j-1 元素 aij前共有 (i-1)*n + j-1 个元素,?问题:若第一个元素为a00 (即下标为00)则Loc(aij)=?,行aij前共有 i 行元素 本行前有是 j 个元素,Loc (aij ) = Loc (a00) + ( i * n + j ) * d,Loc(aij ) = Loc(a11) + (j-1)*m + (i-1) *d,前j-1列:有(j-1)*m个元素 第j列:有 i-1 元素 aij前共有 (j-1)*m + i-1 个元素,每个元素占存储空间大小为d,Loc(aij )=首地址+前面所有元素所占存储空间的总数,?问题:若第一个元素为a00 (即下标为00)则Loc(aij)=?,列aij前共有j列元素 本列前有是i个元素,Loc (aij ) = Loc (a00) + ( j* m + i ) * d,二维数组列优先顺序存储结构,三维数组Amnp,Loc (aijk ) = Loc (a111) + (i-1)* n * p + (j-1)* p + k-1) * d,行优先顺序:,Loc (aijk ) = Loc (a111) + (i-1) + (j-1)* m+ (k-1)*m*n * d,列优先顺序:,特殊矩阵的压缩存储,通常可以采用二维数组存储矩阵 空间复杂度:S(m,n)=O(m*n),问题: (1)矩阵中有大量相同的非零元素,这样仍造成空间极大浪费,多个相同的非零元素 只分配一个存储空间,矩阵压缩存储原则,特殊矩阵是指非零元素或零元素的分布有一定规律的矩阵。 对称矩阵、三角矩阵、对角矩阵,对称矩阵特点:aij = aji,只需存储上三角或下三角中的元素,a32 和a23 存储在SA5,矩阵中n*n个元素只需要 n(n+1)/2个存储单元,SAk= aij,K=,ij,ij,下三角矩阵,上三角矩阵,三对角矩阵,稀疏矩阵,设矩阵Am*n中有s个非零元素,若s远远小于矩阵元素的总数(即sm*n), 则称A为稀疏矩阵。,m=5, n=5, s=8 sm*n,由于非零元素在矩阵中的 位置没有规律,所以不但要存 储非零元素的值,而且还要存 储其在矩阵中的位置。,三元组 ( i, j , aij),(1,2,5) (1,5,8) (2,1,1) (2,3,3) (3,2,-2) (4,1,6) (5,2,4) (5,3,-9),存储方式:三元组表和十字链表,1 2 5 1 5 8 2 1 1 2 3 3 3 2 -2 4 1 6 5 2 4 5 3 -9,三元组表稀疏矩阵的顺序存储方式,typedef struct int r, c; /*行号、列号*/ ElemType d; /*非零元素值*/ TupNode; typedef struct int rows,cols,nums; /*行数、列数、非零元素个数*/ TupNode datamaxsize; /*三元组表*/ TSMatrix;,稀疏矩阵的数据类型,便于随机存取,但不适合矩阵的变化(即非零元素的位置及个数的变化)。,2 1 5 5 1 8 1 2 1 3 2 3 2 3 -2 1 4 6 2 5 4 3 5 -9,1 2 1 1 4 6 2 1 5 2 3 -2 2 5 4 3 2 3 3 5 -9 5 1 8,1 2 5 1 5 8 2 1 1 2 3 3 3 2 -2 4 1 6 5 2 4 5 3 -9,?行优先变成列优先,(1)全部传送,(2)分列传送,?T=O(n*t) 效率低,求转置矩阵,1 2 1 1 4 6 2 1 5 2 3 -2 2 5 4 3 2 3 3 5 -9 5 1 8,1 2 5 1 5 8 2 1 1 2 3 3 3 2 -2 4 1 6 5 2 4 5 3 -9,pot1,pot2,pot3,pot4 pot5,最好先确好A中各列传送的起始位置,设 potn 用于存储各列的起始位置,pot1=1 potcol=potcol-1+numcol-1 (numn各列非零个数),col 1 2 3 4 5 num 2 3 2 0 1 pot 1 3 6 8 8,分析: 求num T=O(t) 求 pot T=O(n) 三元传送 T=O(t) T=O(n+t),十字链表稀疏矩阵的链式存储方式,非零结点结构:,分析:将同一行的非零结点链成一个循环单链表 将同一列的非零结点链成一个循环单链表 要求:每个结点设两个指针分别用于行和列链接,为运算方便每个链表设一个头结点,H1,H2,H3,H4,H5,H1,H2,H3,H4,H5,注:i行头结点中只用rptr, i列头结点中只用cptr, 则可合用共享。,行列头结点,利用这个数据域设指针 将各行列头结点链接。,link,行列表头结点存储矩阵的行数和列数,Hm确定十字链表,非零结点:(row, col, value)为非零元素的三元组。 行列头结点:row=col=0 link指向下一个行列头结点。 行列表头结点:row为矩阵的行数 col为阵的列数,结点数据类型,typedef struct mtxn int row,col; struct mtxn *right,*down; union int value; struct mtxn *link; tag; MatNode;,小 结,数组: 逻辑结
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024户外广告牌制作安装合同
- 2024年合作投资协议书模板
- 2024苗木购销合同范本简单版
- 2024股东合作经营合同协议书
- 城市街道广告位租赁合同
- 插画约稿合同样本
- 二房东租房合同租房合同协议范本
- 2024股份制工程合作协议书
- 货物运输合同签订技巧
- 4.1 夯实法治基础(导学案) 2024-2025学年统编版道德与法治九年级上册
- (培训体系)2020年普通话测试培训材料
- 3-4单元测试-2024-2025学年统编版语文六年级上册
- 北师版数学八年级上册 5.8三元一次方程组课件
- 2024混合动力汽车赛道专题报告-2024-10-市场解读
- DB34T 4338-2022 行政规范性文件合法性审核规范
- 企业单位消防安全规范化管理指导手册
- 废旧物资回收投标方案(技术方案)
- 宣传视频拍摄服务投标方案(技术方案)
- 森林防火课件下载
- 3《欢欢喜喜庆国庆》(教学设计)2024-2025学年统编版道德与法治二年级上册
- 2024粮改饲工作总结五篇
评论
0/150
提交评论