矩阵存储存活时间
稀疏矩阵
设矩阵A mn 中有s个非零元素 若s远远小滑贺于矩阵元素的总数(即s< <m×n),则称a为稀疏矩阵。 p=""> </m×n),则称a为稀疏矩阵。>
1、稀疏矩阵的压缩存储
为了节省存储单元,可只存储非零元素。由于非零元素的分布一般是没有规律的,因此在存储非零元素的同时,还必须存储非零
元素所在的行号、列号,才能迅速确定一个非零元素是矩阵中的哪一个元素。稀疏矩阵的压缩存储会失去随机存取功能。
其中每一个非零元素所在的行号、列号和值组成一个三元组(i,j,a ij ),并由此三元组惟一确定。
稀疏矩阵进行压缩存储通常有两类方法:顺序存储和链式存储。链式存储方法【参见参考书目】。
2、三元组表
将表示稀疏矩阵的非零元素的三元组按行优先(或列优先)的顺序排列(跳过零元素),并依次存放在向量中,这种稀疏矩阵的顺序
信轮派存储结构称为三元组表。
注意:
以下的讨论中,均假定三元组是按行优先顺序排列的。
【例】下图(a)所示的稀疏矩阵A的三元组表表示见图(b)
(1)三元组表的类型说明
为了运算方便,将矩阵的总行数、总列数及非零元素的总数均作为三元组表的属性进行描述。.WINGwIT.其类型描述为:
#define MaxSize 10000 //由用户定义
typedef int DataType; //由用户定义
typedef struct { //三元组
int i,j;//非零元的行、列号
DataType v; //非零元的值
}TriTupleNode;
typedef struct{ //三元组表
TriTupleNode data[MaxSize]; //三元组表空间
int m,n,t; //矩阵的行数、列数及非零元个数
}TriTupleTable;
(2) 压缩桐雀存储结构上矩阵的转置运算
一个m×n的矩阵A,它的转置矩阵B是一个n×m的矩阵,且:
A[i][j]=B[j][i],0≤i <m,0≤j<n, p=""> </m,0≤j<n,>
即A的行是B的列,A的列是B的行。
【例】下图中的B和上图中的A互为转置矩阵。
①三元组表表示的矩阵转置的思想方法
第一步:根据A矩阵的行数、列数和非零元总数确定B矩阵的列数、行数和非零元总数。
第二步:当三元组表非空(A矩阵的非零元不为0)时,根据A矩阵三元组表的结点空间data(以下简称为三元组表),将A的三
元组表a->data置换为B的三元组表b->data。
②三元组表的转置
方法一:简单地交换a->data中i和j中的内容,得到按列优先顺序存储倒b->data;再将b->data重排成按行优先顺序的三元组表。
方法二:由于A的列是B的行,因此,按a->data的列序转置,所得到的转置矩阵B的三元组表b->data必定是按行优先存放的。
按这种方法设计的算法,其基本思想是:对A中的每一列col(0≤col≤a->n-1),通过从头至尾扫描三元组表a->data,找出所有
列号等于col的那些三元组,将它们的行号和列号互换后依次放人b->data中,即可得到B的按行优先的压缩存贮表示。具体实现参见
【 动画演示 】
③具体算法:
void TransMatrix(TriTupleTable *b,TriTupleTable *a)
{//*a,*b是矩阵A、B的三元组表表示,求A转置为B
int p,q,col;
b->m=a->n; b->n=a->m; //A和B的行列总数互换
b->t=a->t; //非零元总数
if(b->t<=0)
Error("A=0"); //A中无非零元,退出
q=0;
for(col=0;coln;col++) //对A的每一列
for(p=0;pt;p++) //扫描A的三元组表
if(a->data[p].j==col){ //找列号为col的三元组
b->data[q).i=a->data[p].j;
b->data[q].j=a->data[p].i;
b->data[q].v=a->data[p].v;
q++;
}
} //TransMatrix
④算法分析
该算法的时间主要耗费在col和p的二重循环上:
若A的列数为n,非零元素个数t,则执行时间为O(n×t),即与A的列数和非零元素个数的乘积成正比。
通常用二维数组表示矩阵时,其转置算法的执行时间是O(m×n),它正比于行数和列数的乘积。
由于非零元素个数一般远远大于行数,因此上述稀疏矩阵转置算法的时间大于通常的转置算法的时间。
lishixin/Article/program/sjjg/201311/23897
‘贰’ 随机存取存储器详细资料大全
随机存取存储器 (英语: R andom A ess M emory,缩写: RAM ),也叫 主存 ,是与CPU直接交换数据的内部存储器。[1]它可以随时读写(刷新时除外,见下文),而且速度很快,通常作为作业系统或其他正在运行中的程式的临时数据存储纤老介质。
主存(Main memory)即计算机内部最主要的存储器,用来载入各式各样的程式与数据以供CPU直接运行与运用。由于DRAM的性价比很高,且扩展性也不错,是现今一般计算机主存的最主要部分。2014年生产计算机所用的主存主要是DDR3 SDRAM,而2016年开始DDR4 SDRAM逐渐普及化,笔电厂商如华硕及宏碁开始在笔电以DDR4存储器取代DDR3L。
基本介绍
- 中文名 :随机存取存储器
- 外文名 :random aess memory
- 存储原理 :由触发器存储数据
- 单元结构 :六管NMOS或OS构成
- 简称 :RAM
特点
随机存取 所谓“随机存取”,指的是当存储器中的数据被读取或写入时,所需要的时间与这段信息所在的位置或所写入的位置无关。相对的,读取或写入顺序访问(Sequential Aess)存储设备中的信息时,其所需要的时间与位置就会有关系。它主要用来存放作业系统、各种应用程式、数据等。 易失性 当电源关闭时RAM不能保留数据。如果需要保存数据,就必须把它们写入一个长期的存储设备中(例如硬盘)。RAM和ROM相比,两者的最大区别是RAM在断电以后保存在上面的数据会自动消失,而ROM不会自动消失,可以长时间断电保存。 静态随机存取存储器 对静电敏感 正如其他精细的积体电路,随机存取存储器对环境的静电荷非常敏感。静电会干扰存储器内电容器的电荷,引致数据流失,甚至烧坏电路。故此触碰随机存取存储器前,应先用手触摸金属接地。 访问速度 现代的随机存取存储器几乎是所有访问设备中写入和读取速度最快的,存取延迟和其他涉及机械运作的存储设备相比,也显得微不足道。 笔记本电脑记忆体 需要刷新(再生) 现代的随机存取存储器依赖电容器存储数据。电容器充满电后代表1(二进制),未充电的代表0。由于电容器或多或少有漏电的情形,若不作特别处理,数据会渐渐随时间流失。刷新是指定期读取电容激竖旦器的状态,然后按照原来的状态重新为电容器充电,弥补流失了的电荷。需要刷新正好解释了随机存取存储器的易失性。类别
根据存储单元的工作原理不同, RAM分为静态RAM和动态RAM。 静态随机存储器(SRAM) 静态存储单元是在静态触发器的基础上附加门控管而构成的。因此,它是靠触发器的自保功能存储数据的。 动态随机存储器(DRAM)动态RAM的存储矩阵由动态MOS存储单元组成。动态MOS存储单元利用MOS管的栅极电容来存储信息,但由于栅极电容的容量很小,而漏电流又不可能绝对等于0,所以电荷保存的时间有限。为了避免存储信息的丢失,必须定时地给电容补充漏掉的电荷。通常把这种操作称为“刷新”或“再生”,因此DRAM内部要有刷新控制电路,其操作也比静态RAM复杂。尽管如此,由于DRAM存储单元的结构能做得非常简单,所用元件少,功耗低,已成为大容量RAM的主流产品。
组成
RAM电路由地址解码器、存储矩阵和读写控制电路三部分组成,如图所明扰示。 图1 存储矩阵由触发器排列而成,每个触发器能存储一位数据(0或1)。通常将每一组存储单元编为一个地址,存放一个“字”;每个字的位数等于这一组单元的数目。存储器的容量以“字数×位数”表示。地址解码器将每个输入的地址代码译成高(或低)电平信号,从存储矩阵中选中一组单元,使之与读写控制电路接通。在读写控制信号的配合下,将数据读出或写入。区别
唯读存储器
ROM-read only memory唯读存储器 ①简单地说,在计算机中,RAM 、ROM都是数据存储器。RAM 是随机存取存储器,它的特点是易挥发性,即掉电失忆。ROM 通常指固化存储器(一次写入,反复读取),它的特点与RAM 相反。ROM又分一次性固化、光擦除和电擦除重写三种类型。举个例子来说也就是,如果突然停电或者没有保存就关闭了档案,那么ROM可以随机保存之前没有储存的档案但是RAM会使之前没有保存的档案消失。 动态随机存取存储器记忆体
在计算机的组成结构中,有一个很重要的部分,就是存储器。存储器是用来存储程式和数据的部件,对于计算机来说,有了存储器,才有记忆功能,才能保证正常工作。存储器的种类很多,按其用途可分为主存储器和辅助存储器,主存储器又称记忆体储器(简称记忆体),辅助存储器又称外存储器(简称外存)。外存通常是磁性介质或光盘,像硬盘,软碟,磁带,CD等,能长期保存信息,并且不依赖于电来保存信息,但是由机械部件带动,速度与CPU相比就显得慢的多。记忆体指的就是主机板上的存储部件,是CPU直接与之沟通,并用其存储数据的部件,存放当前正在使用的(即执行中)的数据和程式,它的物理实质就是一组或多组具备数据输入输出和数据存储功能的积体电路,记忆体只用于暂时存放程式和数据,一旦关闭电源或发生断电,其中的程式和数据就会丢失。 从一有计算机开始,就有记忆体。记忆体发展到今天也经历了很多次的技术改进,从最早的DRAM一直到FPMDRAM、EDODRAM、SDRAM等,记忆体的速度一直在提高且容量也在不断的增加。今天,服务器主要使用的是什么样的记忆体呢?IA架构的服务器普遍使用的是REGISTEREDECCSDRAM。 快速周期随机存取存储器 既然记忆体是用来存放当前正在使用的(即执行中)的数据和程式,那么它是怎么工作的呢?我们平常所提到的计算机的记忆体指的是动态记忆体(即DRAM),动态记忆体中所谓的“动态”,指的是当我们将数据写入DRAM后,经过一段时间,数据会丢失,因此需要一个额外设电路进行记忆体刷新操作。具体的工作过程是这样的:一个DRAM的存储单元存储的是0还是1取决于电容是否有电荷,有电荷代表1,无电荷代表0。但时间一长,代表1的电容会放电,代表0的电容会吸收电荷,这就是数据丢失的原因。刷新操作定期对电容进行检查,若电量大于满电量的1/2,则认为其代表1,并把电容充满电;若电量小于1/2,则认为其代表0,并把电容放电,借此来保持数据的连续性。存储单元
静态存储单元(SRAM) ●存储原理:由触发器存储数据 ●单元结构:六管NMOS或OS构成 ●优点:速度快、使用简单、不需刷新、静态功耗极低;常用作Cache ●缺点:元件数多、集成度低、运行功耗大 ●常用的SRAM集成晶片:6116(2K×8位), 6264 (8K×8位), 62256 (32K×8位),2114(1K×4位) 动态存储单元(DRAM) ●存贮原理:利用MOS管栅极电容可以存储电荷的原理,需刷新(早期:三管基本单元;之后:单管基本单元) ●刷新(再生):为及时补充漏掉的电荷以避免存储的信息丢失,必须定时给栅极电容补充电荷的操作 ●刷新时间:定期进行刷新操作的时间。该时间必须小于栅极电容自然保持信息的时间(小于2 ms )。 ●优点: 集成度远高于SRAM、功耗低,价格也低 ●缺点:因需刷新而使外围电路复杂;刷新也使存取速度较SRAM慢,所以在计算机中,DRAM常用于作主存储器。 尽管如此,由于DRAM存储单元的结构简单,所用元件少,集成度高,功耗低,所以已成为大容量RAM的主流产品。
‘叁’ 对称矩阵的压缩存储
#include<iostream>
using namespace std;
int main()
{
int temp[1000];
int t[500][500];
int arry1[1000],arry2[1000];
int n;
scanf("%d",&n);
int i;
int m;
m=n*n+n;
m=m/2;
for(i=1;i<=m;i++)
{
scanf("%d",&arry1[i]);
}
for(i=1;i<=m;i++)
{
scanf("%d",&arry2[i]);
}
for(i=1;i<=m;i++)
{
temp[i]=arry1[i]+arry2[i];
}
int j;
int k;
for(i=1,k=1;i<=n;i++)
{
for(j=1;j<=i;j++)
{ t[i][j]=temp[k];
k++;
}
}
for(i=1;i<=n;i++)
{
for(j=1;j<=n;j++)
{
if(j>i)
printf("%d",t[j][i]);
else
printf("%d",t[i][j]);
if(j!=n)
printf(" ");
}
printf("\n");
}
return 0;
}
‘肆’ 计算机在断电或关机后,什么储存器中的数据会丢失
计算机在断电或关机后,随机存取存储器中的数据会丢失。
随机存取存储器,是与CPU直接交换数据的内部存储器,也叫主存(内存)。它可以随时读写,而且速度很快,通常作为操作系统或其他正在运行中的程序的临时数据存储媒介。
存储单元的内容可按需随意取出或存入,且存取的速度与存储单元的位置无关的存储器。这种存储器在断电时将丢失其存储内容,故主要用于存储短时间使用的程序。
(4)矩阵存储存活时间扩展阅读
RAM由存储矩阵、地址译码器、读/写控制器、输入/输出、片选控制等几部分组成。
(1)存储矩阵:用来存储信息,称为存储矩阵。
(2)地址译码器:将寄存器地址所对应的二进制数译成有效的行选信号和列选信号,从而选中该存储单元.
(3)读/写控制器:访问RAM时,对被选中的寄存器进行读操作还是进行写操作,是通过读写信号来进行控制的。读操作时,被选中单元的数据经数据线、输入/输出线传送给CPU(中央处理单元);写操作时,CPU将数据经输入/输岀线、数据线存入被选中单元。
(4)输入/输出:读出时它是输岀端,写入时它是输入端,一线两用。由读/写控制线控制。输入/输出端数据线的条数,与一个地址中所对应的寄存器位数相同,也有的RAM芯片的输入/输出端是分开的。
(5)片选控制:由于受RAM的集成度限制。一台计算机的存储器系统往往由许多RAM组合而成。CPU访问存储器时,一次只能访问RAM中的某一片(或几片),即存储器中只有一片(或几片)RAM中的一个地址接受CPU访问,与其交换信息,而其他片RAM与CPU不发生联系,片选就是用来实现这种控制的。