稀疏矩阵的转置

来源 :计算机光盘软件与应用 | 被引量 : 0次 | 上传用户:kuanaiTTA
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
  摘要:在《数据结构》课程中,三元组稀疏矩阵的转置算法通常会作为难点来讲解。通过介绍一般数组的矩阵转置的算法以及稀疏矩阵、稀疏矩阵的三元组表示,引出稀疏矩阵的一般算法。本文介绍的稀疏矩阵的算法是一种用C语言编写的转置算法,并通过对两种算法的涉及到的时间以及空间的复杂度进行分析,突出C语言编写的转置算法的优势。
  关键词:稀疏矩阵;三元组;数组算法;一般算法
  中图分类号:TP312文献标识码:A文章编号:1007-9599 (2013) 05-0000-02
  1前言
  矩阵作为数值分析问题的数学对象和科学与工程计算的数据对象,是可以通过计算机语法进行处理的。随着计算机科学技术的不断发展,矩阵在现代化科技的各个领域中应用也越来越广泛。矩阵的基本运算之一便是矩阵转置,实际应用时,常常可以采用不同的实现矩阵转置的方法来应对不同的存储方法。
  矩阵转置的定义:将m行n列矩阵 转换为n行m列的 矩阵,矩阵转后, 矩阵的第i行行元素与 矩阵对应的第i列列元素相同。
  2数组的三元组表示与稀疏矩阵
  在实际的科学运算中,往往会遇到一种常见矩阵,其中大部分元素值为0,且没有一定的分布规律,在这种情况下,把矩阵定义为零元素个数远远大于非零元素的个数的稀疏矩阵。如图1给出一个稀疏矩阵和他的转置矩阵。
  
  图1稀疏矩阵及其转置矩阵
  从图1中我们可以发现,L矩阵中只有8个非零元素,以此,我们可以对L矩阵的其他零元素进行存储压缩,以节省空间。需要被存储的零元素要同时存储其所在行与列的值。对于非零元素,可以采用三元组来唯一确定。三元组的一般表示方法为(i,j,aij),其中i为非零元素所在行,j为非零元素所在列。图2-1中的L矩阵就可用三元组表示为:{(1,1,1),(1,3,2),(2,2,3),(3,4,8),(3,6,3),(4,1,8),(4,3,2),(5,4,1)}。i和j可确定一个非零元素在矩阵中的具体位置,再加上第三个非零元素的值就可唯一确定所有非零元素的值。如(1,1,1)中第三个数字1就表示L矩阵中第一个行第一列的非零元素为1。
  稀疏矩阵有多种压缩存储方法,对应的三元组表也同时存在不同的组织方法。一般情况下,可采用顺序存储结构来表示三元组表,根据对应的非零元素在稀疏矩阵中的位置,按照行优先的顺序存放,进而用三元组来表示稀疏矩阵,这种表示方法就是三元组表示法。这种表示方法可有效减少存储空间,且矩阵越稀疏,这种优势越明显。
  3稀疏矩阵的转置算法及其分析
  3.1一般矩阵的数组算法
  一般矩阵数组算法的设计思想
  一般矩阵数组算法首先要建立两个二位空数组,第一个数组为一般矩阵,第二个数组为一般矩阵的转置矩阵。先将第一个空数组赋值,形成一个一般矩阵,然后把一般矩阵数组的元素按照转置矩阵定义将对应的元素赋值给第二个空数组成为一般数组的转置矩阵。例如三维矩阵首先通过调用一个自定义函数通过双重for循环语句对3行3列的空数组进行赋值。输出矩阵则可通过双重for循环语句对一般数组进行输出。下面就是对一般矩阵进行转置,采用一个临时变量temp进行一般矩阵和转置矩阵对应元素之间的变换。
  temp=b[i][j];
  b[i][j]=b[j][i];
  b[j][i]=temp;
  这种用二位数组进行矩阵转置的算法的时间复杂度与空间复杂度都不太理想。
  3.2稀疏矩阵的转置算法
  (1)算法设计思想。稀疏矩阵的转置实际上就是将稀疏矩阵的(i,j)位置上的元素变换到(j,i)位置上。根據所学的线性代数知识,一个m*n的矩阵L转置后,就变成一个新的n*m的矩阵H,并且有L(i,j)=H(j,i),得到的矩阵H同样是一个稀疏矩阵。稀疏矩阵的转置要考虑到零元素与非零元素的个数两方面。注意要将稀疏矩阵L的非零元素交换到转置矩阵H的三元组表中对应的正确位置。实际算法中可设置两个数组A[]和B[],数组A[]用来存放稀疏矩阵L的非零元素的个数,而数组B[]则用来存放稀疏矩阵L中第i列第一个非零元素在转置矩阵H的三元组表中的正确位置。如此一来,计算数组A[i]可通过对已经定义的稀疏矩阵L进行一遍循环扫描,并对其列号为i的元素的对应的A[i]加1,计算B[i]可通过以下公式递推:
  
  得到数组A[]和数组B[]的对应值后,可把稀疏矩阵L中的三元组直接放到转置矩阵H中三元组表的正确位置上,一般情况下可利用数组B[]来实现此步骤:将数组B[i]的初值作为稀疏矩阵L中第i列的第一个非零元素三元组在转置矩阵H中相对应的正确位置,若稀疏矩阵L中的第i列有一个元素需要加入到转置矩阵的三元组表时,对应的B[i]的值也要加1,以达到B[i]中的元素始终指向稀疏矩阵L三元组表第i列中下一个非零元素在转置矩阵H三元组表的正确位置。
  (2)稀疏矩阵转置的一般算法。用c语言对上述方法构造算法可通过建立四组循环。四组循环时分别循环了L[0].p、L[0].q、L[0].p-1以及L[0].q次,其中的L[0].q就是上述方法所说的稀疏矩阵L中的非零元素的个数,可假设为n。这种稀疏矩阵转置算法的的平均时间复杂度为T=O(j+n)。这种算法的时间复杂度会随着n的增大而接近T=O(i*j),也就是经典的双重循环的转置算法。但是这种算法的空间复杂度因引入了辅助向量,导致空间复杂度为S=O(2*j),所以存储空间并没有减少,可对其进行进一步的优化。
  (3)一般算法的改进。改进算法在对数组B[i]统计的稀疏矩阵的各列的非零元素设置为0后再重新统计,改进算法可增添两个变量a、b记录并计算数组B[]中元素值,并作为稀疏矩阵L的第i列中的第一个非零元素在转置矩阵H中对应的位置:首先,将1赋值给B[1],其次,用变量a用来暂存第i-1列的非零元素个数,变量b用来暂存第i列的非零元素个数。重复第二步求得全部B[]的值。接下来的步骤就同一般转置方法相同:若稀疏矩阵L中的第i列有一个元素需要加入到转置矩阵的三元组表时,对应的B[i]的值也要加1,以达到B[i]中的元素始终指向稀疏矩阵L三元组表第i列中下一个非零元素在转置矩阵H三元组表的正确位置。
  改进方案算法的平均时间复杂度不变,,空间上却可减少一个辅助向量,由原来的 变为 。在不增加时间复杂度的情况下达到了降低空间复杂度的目的,实现了对一般转置算法的优化。
  参考文献:
  [1]王敏,Wang Min.稀疏矩阵快速转置算法的分析与优化[J].计算机应用与软件,2010,27(8):89-90.
  [2]祝伟华,付先珺,ZHU Wei-Hua,FU Xian-Jun.支持OpenCL的GPU加速人工神经网络训练[J].计算机系统应用,2011,20(7):23-24.
  [3]王敏.基于压缩存储的稀疏矩阵转置算法研究[J].科学技术与工程,2010,10(4):34-35.
  
其他文献
本文对大学生就业态度及择业意向进行分析,阐述了影响大学生就业的宏观因素,分析了择业观和择业意向的变化给就业指导工作带来的困难和问题,及影响大学生择业观的主客观原因,
伴随着互联网的迅速发展和网民队伍的日益扩大,网络生活已经成为人类生活中不可缺少的重要组成部分.由此,人们借助于互联网进行的交往活动也呈现出网络化的特征,形成了一种新
摘 要 大学生职业生涯规划教育是推动大学生就业的重要环节。职业生涯规划教育和思想政治教育目标一致,功能互补。将思想政治教育作为核心引入大学生职业生涯规划,将使得大学生职业生涯规划更加全面、深入和有效。  关键词 职业生涯规划 思想政治教育 大学生  中图分类号:G41 文献标识码:A  Study on the Meaning of the Ideological and Political Ed
摘 要:网络服务器配置是高职院校计算机网络课程的重要内容,也是计算机网络课程的难点内容,需要教师对其内容有深刻的了解,然后结合现代的教学方法进行教学。我们通过对高职网络服务器配置课程的现状进行分析,提出了在高职院校开展网络服务器配置的方法,试图提高高职院校网络服务器配置课程的教学质量。  关键词:高职院校;网络服务器配置;教学策略  中图分类号:TP393.05-4  网络服务器配置是实现网络服务
谈邓小平文章的比喻艺术童品良在迄今辑录成册的文集中,邓小平同志以其朴实而生动的语言宣讲党和国家的政策、方针,阐释事理,表现了一代伟人的睿智与亮节。凡五十余年,近百万字的
从资源配置的角度分析,所有制结构与产业结构间存在着较强的相关性。应依据资源配置的有效性原则,划分国有经济与非国有经济的运行区间。通过企业财产组织形式创新实现国有经济
本论文以移动通信直放站的综合监控为对象,研究基于GsM短信的实时监控系统。设计一个友好、直观的可视化管理界面,通过此界面可以一目了然地看到该分公司所管理的各个监控点的
宗教工作是党的统战工作的重要组成部分。要做好新形势下的宗教统战工作,我们必须对宗教基础知识有一个基本的了解。学习、了解伊斯兰教,与穆斯林交朋友,就必须对穆罕默德与
本人结合中国南车株洲电力机车研究所有限公司(文中简称:株洲所)IT服务管理体系设计与实现的解决方案,重点阐述了事件管理流程设计,为企业构建IT服务管理体系方案提供了方法和思路
黄河滩区要实现农业产业化,必须抓好六个主要环节:积极培育各具特色的主导产业;大力发展龙头企业;加强农产品生产基地建设;努力培育和开拓农村市场;全方位推进社会化服务;深化农村经