数据结构----对称矩阵压缩存储中下标的计算

2023-11-19

一.压缩存储的概念:

首先看一个对称矩阵:

以深灰色为对称轴,由于矩阵内数据对称,因此只需将任意一边的数据存储起来即可。

考虑到存储单元的线性结构,我们可以以一维数组的形式将其存储起来。

需要存储的元素为:

各个元素对应在一维数组中的位置示意图(按行优先存储):

由图可见:元素在一维数组中的下标就是它矩阵左半部分中按行优先存储的序号

二. 二维坐标转一维下标的方法:

矩阵中的坐标[i,j]转换成一维数组的下标K的方法为:

K = 在它前面的元素个数 = 它所在行的前面行所有元素的个数+它所在行在它前面元素的个数

例如:矩阵元素a[3,2] 对应一维数组中的下标就是:(它所在行的前面行的元素个数:第一行1个,第二行2个:1+2 = 3,它所在的列数:2    2-1 = 1,k = 3+1 = 4)4(注意:这里考虑一维数组以0为起点)

1>求它所在行的前面行所有元素的个数:

求它所在行的前面行所有元素的个数就是一个等差数列的求和,因为每行元素个数是逐级往下递增的,增量d为1,初值a1为1,终值an为i-1(i为行坐标)

sn = n(a1+an)/2 = (i-1)(1+i-1)/2 = i(i-1)/2

2>求它所在行在它前面元素的个数

它所在行前面的元素就是它的列数减一: j-1

3>结论

K = i(i-1)/2+j-1

由于我们存储的是左半部分+对角线上的元素,此时只满足(i<=j)

右半部分不能直接套用这个公式

由于:a[i,j] = a[j,i],所以右半部分的公式可以由左半部分转换而来:

直接将左半部分公式里的i和j交换即可

三.公式

(假设k为在一维数组里的下标)

k = i(i-1)/2+j-1 (i>=j)

k = j(j-1)/2+i-1(i<j)

 

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

数据结构----对称矩阵压缩存储中下标的计算 的相关文章

随机推荐

  • 写需求分析必须牢记的5大要点

    需求验证的5大要点 要做好需求验证 必须在思想 方法 语言 人员 内容5个要点上做好相应的工作 否则就会产生很多负面的影响 1 思想 前面已经说过 由于Review被翻译成 评审 导致很多人将其与中国人常说的评审相混淆 其实它们之间是有区别
  • CSDN博文显示图片的方法

    感觉官方应该出一个教程的 不然新手第一次发博文十有八九会发现自己的博文发表之后没有图片 既然官方不给 那么自己摸索咯 参考 http blog csdn net cherish cx article details 52782644 1 编
  • 利用Mybatis拦截器对数据库水平分表

    首先你要知道在哪些sql上面要处理分表 你可能需要一个注解 java view plain copy package com dusk domyself stock common split import java lang annotat
  • 数据挖掘知识点总结

    1 数据挖掘产生的背景 驱动力是什么 四种主要技术激发了人们对数据挖掘技术的开发 应用和研究的兴趣 超大规模数据库的出现 如商业数据仓库和计算机自动收集数据记录手段的普及 先进的计算机技术 如更快和更大的计算能力和并行体系结构 对海量数据的
  • 用递归法求两个数的最大公约数

    用递归法求两个数的最大公约数 求两个数的最大公约数的思路是 用辗转现除法 辗转相除法求两个数的最大公约数的步骤如下 先用小的一个数除大的一个数 得第一个余数 再用第一个余数除小的一个数 得第二个余数 又用第二个余数除第一个余数 得第三个余数
  • 虚拟化与网络存储技术

    虚拟化技术简介 一 常见的虚拟化技术分类 1 CPU虚拟化 CPU的虚拟化技术是一种硬件方案 支持虚拟化技术的CPU带有特别优化过的指令集来控制虚拟过程 通过这些指令集 VMM会很容易提高性能 2 服务器虚拟化 服务器虚拟化能够通过区分资源
  • 【手撕代码系列】JS手写实现Promise.all

    公众号 Code程序人生 分享前端所见所闻 Promise all 方法接收一个 Promise 对象数组作为参数 返回一个新的 Promise 对象 该 Promise 对象在所有的 Promise 对象都成功时才会成功 其中一个 Pro
  • mysql数据库中 控制流程函数 case

    1 CASE CASE value WHEN compare value1 THEN result1 WHEN compare value2 THEN result2 ELSE result3 END 解释 用value值来匹配 如果val
  • pcl入门笔记1:pcl的安装

    前言 最近刚入坑pcl 打算记录一下自己的学习历程 安装pcl前的准备 本教程使用的是windows下的预编译包安装 要想顺利编译程序 需要安装好微软的Visual Studio IDE和cmake 这两者安装过程笔者不详细介绍 读者可以自
  • 华为云计算之rainbow迁移原理

    华为云计算之rainbow迁移原理 一 华为rainbow迁移工具适用场景 1 rainbow介绍 2 业务迁移的应用场景 3 业务迁移顺序设计 二 迁移流程图 1 Windows块级迁移原理 2 Linux文件级迁移原理 三 rainbo
  • Dynamics 365应用程序开发 - 6. 使用Microsoft Flow自动化业务流程

    在上一章中 我们了解了如何使用Microsoft PowerApps轻松创建自定义商业应用程序 在本章中 我们将了解Microsoft Flow 它可以定义为一种基于云的服务 使用户能够构建跨多个应用程序和服务自动化不同任务和流程的工作流
  • 常见的Restrictions用法

    Restrictions eq Restrictions ne Restrictions allEq 利用Map来进行多个等于的限制 Restrictions gt Restrictions ge Restrictions lt Restr
  • v-show控制隐藏与显示--案例

    v show简介 1 v show指令的作用是 根据切换元素的显示状态 2 原理是修改元素 的display 实现显示隐藏 3 指令后面的内容 最终都会解析为布尔值 4 值为true元素显示 值为false元素隐藏 除了 v if v sh
  • selenium 获取某元素的 某属性 的值

    selenium 获取某元素的 某属性的值 1 先通过元素定位 获得此元素的 WebElement WebElement yuansu driver findElement By className buttonInput1 text 2
  • 显式的实例化与外部模板的声明

    2 12 2 显式的实例化与外部模板的声明 深入理解C 11 C 11新特性解析与应用 第2章保证稳定性和兼容性 本章中的新特性基本上都遵循了该设计思想 本节为大家介绍显式的实例化与外部模板的声明 作者 Michael Wong IBM X
  • Zookeeper之ZAB协议

    1 概念 Zookeeper使用 种称为Zookeeper Atomic Broadcast ZAB Zookeeper原 消息 播协议 的协议作为其数据 致性的核 算法 ZAB协议并不像Paxos算法那样 是 种通 的分布式 致性算法 它
  • 电脑修改用户(User)文件夹名称

    情景 Windows 11 的用户名与 C 盘 系统盘 中的文件夹名称不对应 可能是由于重装系统导致的 例如我笔记本中系统用户名是 fly 但文件夹名称却是 16490 Step 1 打开Administrator账户 搜索 cmd 右键
  • 二、字符串(36)392. 判断子序列

    392 判断子序列 给定字符串 s 和 t 判断 s 是否为 t 的子序列 字符串的一个子序列是原始字符串删除一些 也可以不删除 字符而不改变剩余字符相对位置形成的新字符串 例如 ace 是 abcde 的一个子序列 而 aec 不是 进阶
  • 关于游戏设计状态

    状态转移在数学里究竟是干嘛的我也不多说了 毕竟大家都是做游戏的 也不需要这么高深的数学知识 我就从一个实例开始讲一下吧 看不懂那我也没办法了 死套公式也行 只要调整下系数问题也不大 以武器强化为例 武器强化等级假如总共有十个等级 从一级开始
  • 数据结构----对称矩阵压缩存储中下标的计算

    一 压缩存储的概念 首先看一个对称矩阵 以深灰色为对称轴 由于矩阵内数据对称 因此只需将任意一边的数据存储起来即可 考虑到存储单元的线性结构 我们可以以一维数组的形式将其存储起来 需要存储的元素为 各个元素对应在一维数组中的位置示意图 按行