




已阅读5页,还剩3页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
稀疏矩阵数据结构与算法稀疏矩阵的存储结构是三元组表,在运算算法中,用矩阵逻辑结构定位数据处理范围,选择算法主序,发现驱动元素或变量的数据映射范围,根据已知实体与目标实体间的映射关系和输出实体的逻辑结构,选择算法主序,输出结构与输出方法。在源程序分析中发现原子功能模块。说明:本文面对的是有一定计算机软件认识的大学生或者程序设计人员。 1转置算法 稀疏矩阵在数据结构中不是重点,但是稀疏矩阵既是数据处理的大范围内,又具有一般程序设计与算法结构的基本特征。大学阶段遇到的科学计算类程序不多,稀疏矩阵运算(转置、乘法)的算法是应掌握的起步阶段喜欢分享1转置算法算法对运算数据关联范围的设置不同,导致稀疏矩阵的转置算法的效率不同。一稀疏矩阵转置程序1的分析1.什么是转置Mmn-Tnm,其中aij=bji(1im, 1jn。i,j可看作与M,T无关的表示,也可以看作矩阵M为主动的下标表示方法) ,而且aijM, bjiT。 矩阵M已知,矩阵T未知。因此在编程时,应考虑以哪个矩阵为算法主序,这是一个出发点。(1)M,T的行列互换两个矩阵的行数mu列数nu互换,T.mu=M.nu=n ,T.nu=M.mu=m,以T为主动。(2)矩阵元素T(i,j)=M(j,i),矩阵T的第i行第j列元素与矩阵M的第j行第i列元素相等。以T的元素为驱动,因为能从M的元素得到T的元素,所以建立表达式就能得到T元素的值。(在程序中,是否用矩阵T的顺序为算法线索?) 转置矩阵的非0元个数相同,T.tu=M.tu (3)对0元素多的稀疏矩阵的转置而言,与一般矩阵的转置不同。稀疏矩阵的非0元素aij,在程序中用三元组(i,j,aij)表示,i,j表示行数列数。因为不再按照矩阵的结构m行n列转置,不使用二维数组作为存储,所以必须记录每一个非0元素所在行列的位置。在规则的二维数组中,矩阵的行列通过元素的下标识别,元素在矩阵中的位置通过下标得到。因此一般矩阵用二维数组为存储结构。二维数组是物理存储结构的逻辑形式,可称为逻辑存储结构。2.稀疏矩阵的一维数组存储结构从操作系统可知,数据的存储方式有三种:连续(顺序)方式,链接方式,索引方式。矩阵不能直接用在计算机中,应选择顺序存储结构二维数组,存放元素。稀疏矩阵的非0元以矩阵行序为序存储在一维数组中,每一行元素的数目不同,可称为非规则数组。 从稀疏矩阵到一维数组是从矩阵结构到以元素次序为主序的逻辑结构变换。稀疏矩阵的一维数组的非0元素是记录(i,j,aij)。稀疏矩阵三元组表的顺序存储方式,称为三元组顺序表,选用一维数组。三元组表还可用链表表示。*这里有两个转换或者两个关系。1.数学表示实体到计算机存储实体的转换。eg.矩阵到一维数组;2.数学逻辑结构到存储逻辑结构的转换。eg.矩阵的行列结构+稀疏矩阵非0元素到一维数组中非0元同行同列+顺序表示的转换。*注释数据结构:三元组顺序表/-稀疏矩阵的三元组表顺序存储表示-/#define MAXSIZE 12500Typedef struct int i,j; /该非0元的行下标row和列下标col /有行下标或列下标相同的三元组 ElemType e;Triple; /三元组元素Typedef struct Triple dataMAXSIZE+1; /非0元三元组表,data0未用 int mu,nu,tu; /矩阵的行数,列数和非0元个数TSMatrix /三元组表 三元组表的顺序以矩阵行序为主序。非0元的三元组是以矩阵行序为主序排列的。这两个表述有区别。三元组表与三元组不同,用三元组元素好像没有必要。3.稀疏矩阵转置运算程序-一维数组存储结构Status transposeSMatrix (TSMatrix M,TSMatrix &T) /稀疏矩阵从M到T转置 T.mu=M.nu;T.nu=M.nu; /矩阵行数列数互换 T.tu=M.tu; /转置矩阵非零元个数一样 if(T.tu) /矩阵非0元个数不为0 q=1; /q=1是行排列数组T.data工作游标 for(col=1;col=M.nu;+col) /col是M的列,共循环列数nu次, 并不是整个矩阵次数 for(p=1;p=M.tu;+p) /与col相关的数据范围:M 的全部非0元。数组M.data 的工作游标p,p的上下界 1,M.tu,以一个非0元为一次循环,同时p增加1。 if(M.datap.j=col) /如果M的非0元的列=col T.dataq.i=M.datap.j; /则Tq=Mp, 为什么q时,Tq=Mp? T.dataq.j=M.datap.i; T.dataq.e=M.datap.e; +q;/q增加,循环返回到p的for循环; 当一次遍历M.data数组结束,循环 返回col的for循环。 /if(T.tu) /TransposeSMatrix稀疏矩阵转置算法4.算法的解释: 按照M的列的顺序,在M.data中寻找M的每一列的全部元素,这一列元素正是T的相同行值的全部元素。共有nu次列数循环,每次循环遍历一次M.data。将M.data从M的行排列数组重排到M的列排列数组,这个数组等于T的行排列数组。data以矩阵的行序为主序. 为什么是M的列序,因为以T的行序为一维数组的主序。比较M,T之间的差异,可知重排三元组表元素之间的次序可实现矩阵转置。T.data是M.data中元素次序的重排,这个次序的重排不是随便的重排。而是以T的行序为序,T的行序就是M的列序。 将T的行序,作为重排M.data中元素的主序。稀疏矩阵的转置算法,对要重排的矩阵数据,是以目标矩阵T的行序(M的列序)做为算法主序。这是编程的出发点。 将M同一列的数据有序存放在T的一维数组中。M的列序从1到N,而且M同一列的数据仍然是按从上到下的行序(1,m),作为部分离散有序形式,存在在一维数组M.data中,符合T.data按T的行序排列的要求。1)什么是算法主序? 目标实体元素求解的顺序。T.data递增序,只有一个方向,称为求解线索(方向)。求解线索是算法线索集合的一个元素。 T.data按照矩阵行排列(一维数组的序是矩阵行排列),因此对应已知矩阵M列序。所以M的列序作为算法主序,使M成为驱动数据。2)目标T与已知M的映射关系 形的对应:行数,列数,非零元个数。 序的对应:行序列序。 层次的对应:每一行每一列非0元的个数,每一行每一列第一个非0元的位置。 对转置运算而言:T每一行非0元个数与M每一列非0元个数相同。T每一行第一个非0元位置与M每一列第一个非0元位置的关系。T的行序等于M的列序。3)算法的关键是矩阵数据按照谁的序,进行程序处理。按照已知矩阵,还是目标矩阵。 按照目标矩阵的序(即行序),从矩阵数据M.data中进行选择。矩阵有两个性质:1.层次结构2.顺序,可认为是元素的顺序。这个转置算法用递增序,因此还可从用矩阵层次结构编程。 用M矩阵的行序,或者用精确
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年风能发电行业人才激励政策与技术创新报告
- 2025兵器装备集团中国长安创新研究总院招聘笔试题库历年考点版附带答案详解
- 2025年健康养生行业健康食品市场趋势研究报告
- 2025年家居装修行业家居装修材料可持续性评估研究报告
- 2025年环保科技行业环保科技创新与应用研究报告
- 2025年农业种植行业精准农业与多元经营研究报告
- 2025年娱乐文化行业内容创新与数字化转型研究报告
- 2025年武汉市公安局武汉市东湖生态旅游风景区分局第二批招聘辅警7人笔试模拟试题及答案解析
- 2026蒙牛乳业(集团)股份有限公司招聘笔试模拟试题及答案解析
- 2025年职业病科化工企业职业病防治策略模拟考试卷答案及解析
- 物流配送调度管理系统设计方案
- 35kV线路工程电杆安装施工方案
- 上甘岭战役课件
- GB/T 45951-2025科技馆常设展览实施通用流程
- 新生儿硬肿症个案护理
- (2025)汽车驾驶员(技师)考试题库及答案
- 2025年全科医师转岗培训理论必刷试题库及答案
- 城市智能感知系统-洞察及研究
- 中储粮损耗管理办法
- 2025年《治安管理处罚法》新修订课件
- 【课件】有理数的加法(第1课时+有理数的加法法则)(课件)数学人教版2024七年级上册
评论
0/150
提交评论