零基础学算法100天第7天——二维差分(差分矩阵)(上)

简介: 零基础学算法100天第7天——二维差分(差分矩阵)

1、什么是差分矩阵?


 二维差分我们通常称之为差分矩阵。通过结合一维差分我们可以想到,它的作用是可以让某个子矩阵在O(1)的时间复杂度内让所有元素都加上c。


 而我之前一直都在强调一点——前缀和与差分是逆运用,二维亦是如此。


 如果我们有了一个b[][]如图:


image.png


很明显它的二维前缀和数组a[][]应该为:


image.png


 两者的关系为——a 是 b 的 前 缀 和 数 组 , 而 b 是 a 的 差 分 数 组 ( 差 分 矩 阵 ) a是b的前缀和数组,而b是a的差分数组(差分矩阵)a是b的前缀和数组,而b是a的差分数组(差分矩阵)


2、差分矩阵的核心操作


 我们前面已经提过,差分矩阵b[][]是帮助我们在O(1)时间内让原数组a[][]的某个子矩阵加上c。类似二维前缀和的讲解,通过图解能最快速帮忙大家理解差分矩阵的核心操作 :


 1、首先我们有一个如图的数组a[][] ,我们想让红色板块的值都加上c


 image.png


 2、如果我们此时对数组b[][]的该点加上c


 image.png


 3、因为a[][]是b[][]的前缀和数组,根据二维前缀和的初始化出发,会使得a[][]以下子矩阵全部都加上c


 image.png


 4、很显然,增加的面积超出了我们想要的范围,所以我们还需要减去a[][]中这两个子矩阵的面积


 image.png


image.png   

 5、又可以很明显的发现,减去的这两个子矩阵有重合的地方,我们多减了一次,最后还需要加回来,对于这两个减去子矩阵以及加回多减的操作。我们只需要让b[][]的绿色两点减上c,红色点加上c

 

image.png

相关文章
|
7天前
|
算法
|
3月前
|
并行计算 算法 IDE
【灵码助力Cuda算法分析】分析共享内存的矩阵乘法优化
本文介绍了如何利用通义灵码在Visual Studio 2022中对基于CUDA的共享内存矩阵乘法优化代码进行深入分析。文章从整体程序结构入手,逐步深入到线程调度、矩阵分块、循环展开等关键细节,最后通过带入具体值的方式进一步解析复杂循环逻辑,展示了通义灵码在辅助理解和优化CUDA编程中的强大功能。
|
3月前
|
机器学习/深度学习 算法 搜索推荐
django调用矩阵分解推荐算法模型做推荐系统
django调用矩阵分解推荐算法模型做推荐系统
47 4
|
3月前
|
存储 算法
动态规划算法学习一:DP的重要知识点、矩阵连乘算法
这篇文章是关于动态规划算法中矩阵连乘问题的详解,包括问题描述、最优子结构、重叠子问题、递归方法、备忘录方法和动态规划算法设计的步骤。
187 0
|
3月前
|
人工智能 算法 BI
一篇带你速通差分算法(C/C++)
一篇带你速通差分算法(C/C++)
|
6月前
|
人工智能 算法 JavaScript
【算法】前缀和与差分
算法学习——前缀和与差分(含一维和二维)
59 4
【算法】前缀和与差分
|
5月前
|
算法 Java
LeetCode经典算法题:矩阵中省份数量经典题目+三角形最大周长java多种解法详解
LeetCode经典算法题:矩阵中省份数量经典题目+三角形最大周长java多种解法详解
58 6
|
7月前
|
机器学习/深度学习 数据采集 人工智能
算法金 | 协方差、方差、标准差、协方差矩阵
**摘要:** 本文介绍了统计学中的基础概念,包括方差、标准差、协方差及其矩阵。方差衡量数据的分散程度,标准差是方差的平方根,提供相同单位下的波动度量。协方差则分析两个变量的关联性,正负值表示正负相关。协方差矩阵扩展到多变量情况,展示多个变量间的关系。这些工具在金融、质量控制、机器学习等领域有广泛应用。文章通过实例和公式清晰解释了每个概念,并强调理解它们之间的关系对于数据分析和统计建模的重要性。
85 0
算法金 | 协方差、方差、标准差、协方差矩阵
|
7月前
|
机器学习/深度学习 算法
简单遗传算法 + 最低水平线算法求解二维排样问题
简单遗传算法 + 最低水平线算法求解二维排样问题
102 0
|
7月前
|
算法 Python
二维矩形件排样算法之最低水平线搜索算法实现
二维矩形件排样算法之最低水平线搜索算法实现
205 0

热门文章

最新文章