稀疏矩阵乘法的运算 联系客服

发布时间 : 星期四 文章稀疏矩阵乘法的运算更新完毕开始阅读56dd48170b4e767f5acfce97

课程设计任务书

学生姓名: 专业班级:

指导教师: 夏红霞 工作单位: 计算机科学与技术学院

题 目: 稀疏矩阵乘法的运算 课程设计要求:

1、熟练掌握基本的数据结构; 2、熟练掌握各种算法;

3、运用高级语言编写质量高、风格好的应用程序。

课程设计任务:

1、系统应具备的功能:

(1)设计稀疏矩阵的存储结构 (2)建立稀疏矩阵

(3)实现稀疏矩阵的乘法 2、数据结构设计; 3、主要算法设计; 4、编程及上机实现;

5、撰写课程设计报告,包括: (1)设计题目; (2)摘要和关键字;

(3)正文,包括引言、需求分析、数据结构设计、算法设计、程序实现

及测试、不足之处、设计体会等; (4)结束语; (5)参考文献。

时间安排: 2010年7月5日-9日 (第19周)

7月5日 查阅资料

7月6日 系统设计,数据结构设计,算法设计 7月7日 -8日 编程并上机调试 7月9日 撰写报告

7月10日 验收程序,提交设计报告书。

指导教师签名: 2010年7月4日

系主任(或责任教师)签名: 2010年7月4日

目 录

1. 摘 要 ………………………………………………1 2. 关键字 ………………………………………………1 3. 引 言 ………………………………………………1 4. 问题描述………………………………………………1 5. 系统设计………………………………………………1 6. 数据结构………………………………………………3 7. 算法描述………………………………………………3 8. 测试结果与分析………………………………………4 9. 源代码…………………………………………………12 10. 总 结…………………………………………………29 11.参考文献………………………………………………29

武汉理工大学《数据结构》课程设计说明书

稀疏矩阵乘法的运算

1.摘要:在一些数值计算中,一些二维矩阵的乘法运算很常见,我们经常采

用线性代数中的知识进行运算,然而对一些含有非零元很少的二维矩阵也采用相同的方法时,就会发现那样的方法不仅需要很多的空间来存储0,造成空间复杂度比较大,而且算法的时间复杂度也较大。因此需要采取其他的方法来解决这个问题,由于0在乘法中其结果总是0,所以可以考虑采用三元组的方式去存储稀疏矩阵中的非零元,这样在计算过程中不仅需要的内存空间减少了,而且运算的速率也提高了。

2.关键字:稀疏矩阵 乘法 二维矩阵 算法 复杂度

3.引 言 :随着科学技术的发展,人们对矩阵的运算的几率越来越大,特

别是高新科技研究中对矩阵的运算更是常见。但是如何高效的并占内存少的进行矩阵运算就是一个急需解决的问题。本文主要对稀疏矩阵的存储以及稀疏矩阵的乘法运算进行了研究和探讨。

4.问题描述:在一些数值计算中,一些二维矩阵的乘法运算很常见,我们

经常采用线性代数中的知识进行运算,然而对一些含有非零元很少的二维矩阵也采用相同的方法时,就会发现那样的方法不仅需要很多的空间来存储0,造成空间复杂度比较大,而且算法的时间复杂度也较大。为了减少空间和时间复杂度,可以根据给定的二维数组的数据设计稀疏矩阵的存储结构,然后根据设计的稀疏矩阵存储结构建立一个稀疏矩阵,最后获得两个二维数组得到他们各自的稀疏矩阵,计算这两个稀疏矩阵的乘积。

5.系统设计:

5.1 设计目标:通过一定的数据结构,存储含有少量数据的矩阵,把

他们存入一个稀疏矩阵中,然后实现稀疏矩阵的乘法运算。[基本要求]设计稀疏矩阵的存储结构;建立稀疏矩阵;实现稀疏矩阵的乘法

1

武汉理工大学《数据结构》课程设计说明书

5.2 系统实现的操作和功能:

5.2.1初始化:初始化一些数据

5.2.2获得数据:根据客户的要求可以采用人工输入和从文件中读取数

据两种方式获得二维矩阵的中的数据。然后根据相应的数据建立稀疏矩阵。

5.2.3检查数据的合法性:当这两个二维矩阵不满足矩阵相乘的条件时,系统将报错,并退出系统。

5.2.4稀疏矩阵的乘法:当两个二维矩阵合法时将对其进行乘法运算,

然后将结果输出并按用户的要求保存到相应的文件中。

5.3设计思想:在操作的过程中采用三元组建立稀疏矩阵。用户可以通

过输入数据或者文件名以后,系统会自动建立一个三元组的稀疏矩阵,然后对其进行乘法运算。在里面主要包含两个函数文件:获得数据并建立稀疏矩阵,对稀疏矩阵进行合法性的检查并进行乘法运算。

5.4系统模块划分:

数据初始化 获数并立疏阵 得据建稀矩检查矩阵合法性并进行乘法运算 输出结果并存到指定文件中 稀疏矩阵乘法的运算 6.数据结构:

采用结构体存储每行每列的元素:

typedef struct DataNode {

int row;//存储所在二维矩阵的行数 int col;//存储所在二维矩阵的列数

2