n阶对称矩阵表示

  • 如题:2021年10月
    • 分析
    • 解决
    • 扩展
      • 三角矩阵
        • 上三角矩阵的压缩存储
        • 涉及到的数学公式、总结
      • 稀疏矩阵

如题:2021年10月

分析

n阶,可以理解为台阶,而不是阶乘,第一行需要存储元素数为1;第二行需要存储2个元素,第三行需要存储3个元素,依次类推…书中的特殊矩阵1只讨论方阵(也就是行数和列数相同)的情形,并且只给出了对称矩阵、三角矩阵与稀疏矩阵三种情形.所以,n阶的话,就是每行有n个元素。

考点为:特殊矩阵的存储。这个题如果看讲义的话,就是讲义的原话,但不可能都记住,所以还是要明白如何推导出来的。这也是本篇的意义所在,就是明白,到底还有哪里不明白,不明白在哪里,而不是单纯看讲义;记一些结论性的东西。

解决

明白了n阶,什么是对称呢?a[i][j]=a[j][i];//这是对称矩阵重要的性质。
题目主要是考察对称矩阵,对称矩阵压缩存储三个特点:

  1. 主对角线:在矩阵中每个元素的行标等于纵标(i==j)。
  2. 上三角:在矩阵中每个元素的行标小于纵标(i<j)。
  3. 下三角:在矩阵中每个元素的行标大于纵标(i>j)。

由于元素关于主对角线对称,在存储时只存储对称矩阵的上三角或下三角元素,使得对称的元素共享一个存储空间。以行序为主序存储其下三角+主对角线的元素,共需要占用n/2*(n+1)个位置。也就是 说,如果用一维数组存储的话,需要a[n/2*(n+1)]个元素。

题目问的是存储到一维数组后的序号k=它前面所有元素的个数=前面所有行的元素个数+所在行前面的所有元素(包括它本身);这里就不要想当然了,认为是存储了所有的元素(相同的元素其实是不存储的),而是第0行其实只存储了一个元素,第1行存储了两个元素,第二行存储了三个元素…所以,第i行存储了i+1个元素。a[i][j]中的i确实是代表第i行,但在第i行只存储了j个元素,前面的第i-1行其实存储了i-1+1=i个元素,第i-2行存储了i-1,直到第0行存储了1个元素,所以总共存储元素数为1+2+…+i=i*(i+1)/2.
分析到这里就很清楚了,若将二维数组压缩存储一维数组时,下标k=i*(i+1)/2+j.情形如下图所示:

题目中明确说是存储的是下三角,也就是i>j的情形。据此可以,排除掉B、C、D了,答案只能是A
上三角的情形是一样的,一看公式的形式,就可以得到正确的结果。

扩展

三角矩阵

所谓的三角矩阵,就是主对角线两侧数据不再是对称的了,而是一侧数据全为0或常数c,这样也可以参照对称矩阵,只存储上三角或下三角的情形。
用一维数组存储的话,需要a[n/2*(n+1)+1]个元素。就比对称矩阵多存了一个常数或0.
若将一个下三角矩阵;a[i][j]压缩存储到一维数组里的话,对应的下标k的取值为那就和对称矩阵是一样的。下标k=i*(i+1)/2+j.i>=j;上三角部分都是c或0,如何表示k呢?其实就是a[n/2*(n+1)+1]最后一个元素下标,因为是从0开始的,所以最后一个元素下标为n*(n+1)/2.i<j

上三角矩阵的压缩存储

存储的元素数与下三角矩阵是一样的,所以下三角的常数或0的压缩存储下标k为n*(n+1)/2.i>j
上三角部分就不一样了,第0行存了n个元素,第1行存储n-1个元素…第i-1行可以存储n-i+1个元素,所以a[i][j];i还是表示行的话,前面i-1行一共存储了n+n-1+…+ n-i+1=i*(n-i+1+n)/2=i*(2n-i+1)/2;第i行存储了几个元素呢?这个就要想像了,主对角线上的i=j,所以上三角的情形,就是i<=j,所以第i行存储了j-i个元素;如下图所示:

转变成压缩存储a[k]中k=i*(2n-i+1)/2+j-i i<=j

涉及到的数学公式、总结

综合对称矩阵与三角矩阵,都涉及到等差数列求和公式,分析方法都是一样的,思想也是一样的。同时,对称矩阵与三角矩阵本质上也是一样的。
Sn=[n*(a1+an)]/2
注:a1是数列的首项,an是数列的末项。

稀疏矩阵

概念:存在大量的零元素,非零元素极小且分布没有规律的情形。
所谓的三元组法存储,就是存储了行号、列号、非零元素值。程序中采用的是结构体来实现。
详见:数据结构考点之一维数组实现矩阵转置算法


  1. 所谓的特殊矩阵是指矩阵中值相同或零元素的分布有一定的规律。 ↩︎

数据结构考点之n阶矩阵相关推荐

  1. 将N阶矩阵M置成单位阵

    将N阶矩阵M置成单位阵. 程序运行结果如下: 输入: 5 输出: 1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1 注意:同一行数字间是一个空格 分析 ...

  2. 使用二维数组表示N阶矩阵

    矩阵为N阶,使用二维数组a[N-1][N-1]表示. 矩阵元素使用二维数组元素a[i][j]表示. 访问矩阵元素时,遍历下标表示为a[i][j],i为行下标,j为列下标,它们的取值范围均为[0,N-1 ...

  3. 输入n×n阶矩阵,用函数编程计算并输出其两条对角线上的各元素之和

    按如下函数原型编写程序,输入n×n阶矩阵,用函数编程计算并输出其两条对角线上的各元素之和. void InputMatrix(int a[N][N], int n); int AddDiagonal( ...

  4. 【考研】数据结构考点——冒泡排序(含408真题)

    ​前言 本文内容源于对<数据结构(C语言版)>(第2版).王道讲解学习所得心得.笔记整理和总结. 交换排序的基本思想:两两比较待排序记录的关键字,一旦发现两个记录不满足次序要求时则进行交换 ...

  5. java 给定一个N阶矩阵A,输出A的M次幂(M是非负整数)

    java 给定一个N阶矩阵A,输出A的M次幂(M是非负整数) 给定一个N阶矩阵A,输出A的M次幂(M是非负整数) 例如: A = 1 2 3 4 A的2次幂 7 10 15 22 输入格式 第一行是一 ...

  6. (蓝桥杯)问题描述   给定一个N阶矩阵A,输出A的M次幂(M是非负整数)   例如:   A =   1 2   3 4   A的2次幂   7 10   15 22

    问题描述 给定一个N阶矩阵A,输出A的M次幂(M是非负整数) 例如: A = 1 2 3 4 A的2次幂 7 10 15 22 输入格式 第一行是一个正整数N.M(1<=N<=30, 0& ...

  7. 数据结构——图——存储结构——邻边矩阵

    数据结构--图--存储结构--邻边矩阵 考虑到图是由顶点和边或弧两部分组成.合在一起比较困难,那就很自然地考虑到分两个结构来分别存储.顶点不分大小.主次,所以用一个一维数组来存储是很不错的选择.而边或 ...

  8. 奇数阶矩阵,横竖斜加起来都相等算法(罗伯法幻方)

    奇数阶矩阵,横竖斜加起来都相等: 给定奇数N,形成N阶矩阵,使得横竖斜加起来都相等.比如N=3: 08 01 06 03 05 07 04 09 02 每一行,每一列,交叉斜加起来都等于15 算法思路 ...

  9. Python描述数据结构之数组和特殊矩阵篇

    文章目录 前言 1. 基本概念 2. 存储方式 3. 特殊矩阵 3.1 对称矩阵 3.2 三角矩阵 3.3 三对角矩阵 3.4 稀疏矩阵 前言   本篇章主要介绍数组及特殊矩阵,包括数组的基本概念.数 ...

最新文章

  1. 洛谷 p2066 机器分配(资源型)
  2. xp系统怎么连接云服务器,xp系统怎么连接云服务器
  3. ML之FE:基于load_mock_customer数据集(模拟客户)利用featuretools工具实现自动特征生成/特征衍生
  4. JavaScript学习笔记04【高级——DOM和事件的简单学习、BOM对象】
  5. jvm内存结构_浅谈JVM内存结构
  6. 华中科技大学计算机系统结构,华中科技大学计算机系统结构考研
  7. 百度页面的html5结构,HTML5+CSS3网站设计基础教程
  8. 数字图像中高频噪声的滤波
  9. java项目开发教材_《Java Web开发实战》——Java工程师必备干货教材
  10. python划分有限元网格_有限元分析网格划分的步骤和类型
  11. python小波去噪实验
  12. 迈普光彩分享 几个细节教你搭建好LED显示屏舞台
  13. 《Maven实战》 读书笔记
  14. Android 音频可视化 Visualizer
  15. 测试下4444444
  16. 【51nod P3121】小陶与杠铃片【树状数组】
  17. app华为市场上架总结
  18. 键盘事件的单击和双击
  19. linux系统模拟mac,在 Linux 的 KVM 上安装 Mac OS X Mavericks 虚拟机
  20. Docker的形象比喻

热门文章

  1. 从CRUD到自身架构师的蜕变之路?全靠这份:Java中高级核心知识全面解析
  2. strncasecmp与strcasecmp用法
  3. Gerrit版本升级
  4. unity抠人像原理_抠出精细发丝人像图片的PS抠图教程
  5. 自动化测试学习daytwo(接口自动化概论)
  6. 2021创新创业(张玉臣,叶明海,邵鲁宁)99分期末考试答案
  7. 打击羊毛党团队,腾讯云动真格的了!
  8. js中对象合并的4种方式,数组合并的4种方法
  9. 通过rvm 安装 ruby
  10. 今天公开猎头顾问业绩过百万的秘密,谷露猎头系统3.0版谍报速递