从矩阵谱分解到矩形的最少正方形剖分

article/2025/9/1 18:30:49

上次听AK讲到谱分解的时候,若有所思,下面将对思考稍作记录。

矩阵谱分解

关于谱分解有很多定义,主要区别在于条件的强弱,有的要求一个 n n n阶矩阵不仅要求可对角化,而且加强条件至其 n n n个特征值 λ 1 , λ 2 , . . . , λ n \lambda_1,\lambda_2,...,\lambda_n λ1,λ2,...,λn互异,我们这里由于不深入讨论谱分解,所以就采用最简单的定义来说。

定义:若 n n n阶矩阵 A A A可对角化,那么存在 n n n n n n阶方阵 G i G_i Gi使得 A = ∑ i = 1 n λ i G i A=\sum_{i=1}^n\lambda_iG_i A=i=1nλiGi.

证明:设矩阵 A A A n n n个特征值为 λ 1 , λ 2 , . . . , λ n \lambda_1,\lambda_2,...,\lambda_n λ1,λ2,...,λn,其对应的特征向量进行Gram-Schmidt 正交化后为 α 1 , α 2 , . . . , α n \alpha_1,\alpha_2,...,\alpha_n α1,α2,...,αn,那么有 A α i = λ i α i A\alpha_i=\lambda_i\alpha_i Aαi=λiαi。令 P = [ α 1 , α 2 , . . . , α n ] P=[\alpha_1,\alpha_2,...,\alpha_n] P=[α1,α2,...,αn],可以写成矩阵形式有 A P = P ⋅ d i a g ( λ 1 , λ 2 , . . . , λ n ) AP=P\cdot diag(\lambda_1,\lambda_2,...,\lambda_n) AP=Pdiag(λ1,λ2,...,λn)
此时,令: P − 1 = ( β 1 T , β 2 T , . . . β n T , ) T P^{-1}=(\beta_1^T,\beta_2^T,...\beta_n^T,)^T P1=(β1T,β2T,...βnT,)T,注意到这里的可逆性是由Gram-Schmidt 正交化保证的,当然,如果条件加强至特征值均互异,那么特征向量是相互独立的,这样不需要进行正交化,也可以保证可逆性。 β i \beta_i βi α i \alpha_i αi的size相同。
KaTeX parse error: Unknown column alignment: * at position 112: …{\begin{array}{*̲{20}{c}} {\beta…

于是谱分解的命题得证,上述证明同时给出了谱分解的一个构造。

问题引入

在讲座中AK猜测谱分解可以像SVD那样对图像进行压缩,但是有个不好的地方在于和SVD不同,谱分解要求矩阵(图像)为方阵。

当时有若干想法(假设谱分解可以用于图像压缩):

  • 既然谱分解只能作用于方阵,而对于一个 m ⋅ n m\cdot n mn的图像矩阵 A A A,那我们是否能对一个矩形方阵先进行正方形剖分,后处理呢?
  • 正方形剖分后,分别进行压缩后重组的图像和直接进行压缩(假设是图像本来就是方阵的情况下)是否有区别?如果有,那么从肉眼角度,区别大不大?
  • 既然要正方形剖分,那么这样的剖分是否存在?如果存在是否有最小正方形个数的剖分(这样的剖分可以使得处理和重组次数都最小)?如果有最小的剖分,那么这样的剖分数的方法是否唯一?
  • 矩形的正方形剖分种类是否有限

后来觉得不太对劲,虽然由谱分解 A = ∑ i = 1 n λ i G i A=\sum_{i=1}^n\lambda_iG_i A=i=1nλiGi,可以舍弃掉特征值较小的部分。但是,较小?实际上,矩阵的特征值完全有可能是复数,甚至几乎都是复数(当然这里的复数是特指虚部不为0的意思)。而SVD所求的特征值是 A T A A^TA ATA的,作为实对称矩阵的所有特征值必为实数。先用SVD来验证一下,“剖分-重组”的思路如何:
这里写图片描述

(a)和(b)两图都用SVD处理(仅保留一个特征值),从(a)中可以发现“剖分-重组”从肉眼上差别不大,但是从(b)中可以发现差别还是有点明显的,实际上这种思路本身就不抱太大的希望2333。

矩形的最少正方形剖分

和完美正方形剖分不同的是,我们这里关注的是分成的正方形数量最小,而不需要和完美正方形剖分那样要求每个正方形大小互异。

  • 正方形剖分是否存在?
    存在性是显然的,我们以一个5x3的矩形为例,我们显然可以如下图(a)所示

这里写图片描述

将其分成15个小正方形显然是一种剖分,存在性即可证明。此时实际上不仅给出了一种剖分的构造同时也给出了"de数"(剖分后正方形的数量,de是decomposition的缩写)的一个上界,由最小数原理(自然数集的任一非空子集必有最小数)知道,"de数"必有最小值,即对于任意矩形,存在最少的正方形剖分。

关于"de数"的界还可以参考这篇文章Tiling a Rectangle with the Fewest Squares ,这篇文章指出,对于一个 m ⋅ n m \cdot n mn的矩形,其中 m ≥ n m\geq n mn,那么$log_2 n \leq $ de数 ≤ m n + C ⋅ l o g 2 n \leq \frac{m}{n}+C \cdot log_2 n nm+Clog2n,其中 C C C是一个常数,虽然这个结论没什么太大的用处,但是上下界都出现的 l o g 2 n log_2 n log2n引起了我的注意,它恰是辗转相除法的时间复杂度,为何突然扯到辗转相除法呢?且听我慢慢分析。

  • 贪心策略下的剖分

狗蔡在ak那场讨论班中给出了一种贪心的办法,即上图(b)中的办法。
对于这个5x3的矩形,先取一个以短边的正方形,即3x3的正方形,然后一直下去,可以观察发现似乎可以作为一种剖分的办法。

做了两三次手动计算后发现,实际上这就是一个辗转相除法,可以说明最后剩下的正方形的边长大小恰好就是 g c d ( m , n ) gcd(m,n) gcd(m,n)。对于相邻Fibonacci数型的矩形,这样的方法也是很优美的说,如下图所示:

这里写图片描述

对于这个8x13的矩形,我们甚至可以从繁分数的角度来一目了然:
13 8 = 1 + 1 1 + 1 1 + 1 1 + 1 2 \frac{{13}}{8} = 1 + \frac{1}{{1 + \frac{1}{{1 + \frac{1}{{1 + \frac{1}{2}}}}}}} 813=1+1+1+1+21111
F { 1 , 1 , 1 , 1 , 2 } F\{1,1,1,1,2\} F{1,1,1,1,2}表示,4个1恰好就是黄、绿、蓝、红四个正方形,最后一个2就是紫色的两个正方形。遗憾的是,这种辗转相除法并不是最优解,因为很快就构造出了反例
这里写图片描述

上面是9x10的矩形,可以发现右边这种辗转大法并不是最优的。但似乎可以证明,斐波那契型的矩形是最优解(具体是否有看到这样的文献不是太记得了ww)

  • "de数"剖分的方法是否唯一?

从目前来看,这个问题并不确定,一般情况下,除了对称解外,至今没有找到通用反例。但是对于斐波那契型矩形而言,却很容易构造多解。(利用辗转相除法)

好吧还是给出构造吧(如下图所示),注意到由于每次划分的时候,两部分之间都可以对调(如图),而由辗转相除法的复杂度可以估计数量大约有 O ( l o g n ) O(log n) O(logn)个,由乘法原理知道,这种情况下。同一个de数有 O ( 2 [ l o g n ] ) = O ( n ) O(2^{[log n]})=O(n) O(2[logn])=O(n)种划分。

这里写图片描述

  • 矩形的正方形剖分种类是否有限?

考虑一个这样的额外问题,一个矩形的正方形剖分的方法的种类是否是有限的呢?辗转相除法是一种通用剖分,直接分为 m ⋅ n m \cdot n mn个矩形也是一种通用剖分,所以对于一个矩形,它至少有两种方法,那么方法数是否有上界呢?

这个问题是和AK在吃饭的时候解决的,当时西园一楼的天花板恰好就是一个一个的小格子,有灯的部分恰好是有小格子的大矩形,恰好可以用来观察。下面这一步思考虽然有冗余,但是恰是思考的过程,我们可以得到:
D S q u a r e ≤ D R e c t a n g l e ≤ D T e t r i s , D_{Square}\leq D_{Rectangle} \leq D_{Tetris}, DSquareDRectangleDTetris,
其中 D S q u a r e , D R e c t a n g l e , D T e t r i s D_{Square}, D_{Rectangle}, D_{Tetris} DSquareDRectangleDTetris分别表示正方形剖分种数,矩形剖分种数和俄罗斯方块剖分种数,用 S n a m e S_{name} Sname表示他们的剖分方法的集合。其如下图所示:

这里写图片描述

上述不等式成立的原因是,显然有 S S q u a r e ⊆ S R e c t a n g l e ⊆ S T e t r i s S_{Square}\subseteq S_{Rectangle} \subseteq S_{Tetris} SSquareSRectangleSTetris,所以我们只需要给出 D T e t r i s D_{Tetris} DTetris的一个有限上界就可以说明正方形剖分种类是有限的了,实际上这个有限上界并不难给出。

考虑一个 m ⋅ n m \cdot n mn的矩形,可以容易知道它一共有 m ( n + 1 ) + n ( m + 1 ) m(n+1)+n(m+1) m(n+1)+n(m+1)条单位边,其中横向的有 m ( n + 1 ) m(n+1) m(n+1)条,纵向的有 n ( m + 1 ) n(m+1) n(m+1)条。对这些边进行二染色,即要么染色,要么不染色,设这样的处理种数的集合为 S b i n S_{bin} Sbin,显然有 S T e t r i s ⊆ S b i n S_{Tetris} \subseteq S_{bin} STetrisSbin,于是立马有:
D S q u a r e ≤ D T e t r i s < D b i n = 2 m ( n + 1 ) + n ( m + 1 ) , D_{Square} \leq D_{Tetris} < D_{bin}=2^{m(n+1)+n(m+1)}, DSquareDTetris<Dbin=2m(n+1)+n(m+1),
综上所述,正方形剖分种数的有限性得证。

数值求解

我们不妨回顾一下完全背包问题:

(完全背包问题)有 N N N种物品和一个容量为 V V V的背包,每种物品都有无限件可用。第 i i i种物品的体积是 c i c_i ci,价值是 w i w_i wi。将哪些物品装入背包可使这些物品的体积总和不超过背包容量,且价值总和最大。

而对于我们的剖分问题而言,我们可以将 m ⋅ n m \cdot n mn的矩形看成是一个容量为 m n mn mn的背包,有 n n n种物品(注意到,不妨设 m ≥ n m\geq n mn,那么最大最大的正方形边长为 n n n),那我们可以改写一下完全背包问题:

(矩形最少正方形剖分)有 n n n种物品和一个容量为 m n mn mn的背包,每种物品都有无限件可用。第 i i i种物品的体积是 c i 2 c_i^2 ci2,价值是1。将哪些物品装入背包可使这些物品的体积总和等于背包容量,且价值总和最小。

可以看出,矩形最少正方形剖分问题应该是比完全背包问题要强的,而完全背包问题是NP-complete问题,所以说可以大致估计矩形最少正方形剖分问题也应该是NP-complete问题。所以,本问题不妨从最优化的角度入手。

先约定一些符号,下面的模型也可以直接参考论文Minimum Tiling of a Rectangle by Squares:。对矩形建立一个平面直角坐标系,不过不是连续的,而是格点状的,左下角的格子看做为 ( 0 , 0 ) (0,0) (0,0)

这里写图片描述

我们称边长为 k k k的正方形占据着坐标 ( i , j ) (i,j) (i,j)是指,坐标 ( i , j ) (i,j) (i,j)恰好为正方形 k k k左下角,用 k ∈ ( i , j ) k \in (i,j) k(i,j)表示。由此定义,我们等会讨论的关注点都在上左下角!(注意辣)。更进一步定义:
KaTeX parse error: Unknown column alignment: * at position 36: …{\begin{array}{*̲{20}{c}} {1,t \…
其中,对于一个 M N MN MN的矩形, t ∈ { 1 , 2 , . . . , N } t \in \{1,2,...,N\} t{1,2,...,N}, i ∈ N t = { 0 , 1 , . . . , N − t } i\in N_t=\{0,1,...,N-t\} iNt={0,1,...,Nt}以及 j ∈ M t = { 0 , 1 , . . . , M − t } j\in M_t=\{0,1,...,M-t\} jMt={0,1,...,Mt}。由此,我们可以建立一个0-1规划的模型:
KaTeX parse error: Unknown column alignment: * at position 32: … \begin{array}{*̲{20}{c}} {}&{}&…
优化目标容易理解,而限制条件的目的是使得任意一个坐标 ( i , j ) (i,j) (i,j)最多只有一个正方形占据(占据是指 k ∈ ( i , j ) k \in (i,j) k(i,j)),上图(a),(b)给出两种案例给大家理解限制条件中和号的范围取定。(重申一次,我们考察的是正方形的左下角,上图黑框给出左下角的范围)另一方面,限制条件还有一个功能:使得矩形每个位置均在一个正方形内,没有缺漏。(想一想为什么,假设有缺漏,直接以这点为 ( i , j ) (i,j) (i,j)考虑一下限制条件即可)

这个0-1规划问题问题如何求解,额,只能上启发式算法了,特别注意到的是,模型中优化目标有 M N 2 MN^2 MN2个0-1变量,限制条件有大约 O ( M N ) O(MN) O(MN)个。规模可以说是相当地巨大。

这灰常考验计算能力,截止至2016年6月14日,已经在这里公布了380x380以内的矩形的计算结果。同时这里给出了一个在线的可视化结果。

下面给出40x40以内的直观结果, z z z轴表示de数,纵横代表 m , n m,n m,n,其中 m ≥ n m \geq n mn所以有一半是没有的,下面给大家欣赏一下:
这里写图片描述

一些补充

  • 最少正方形剖分的应用

最少正方形剖分是有直接的应用的,如有关量子霍尔阵列电阻的文章。

  • 猜想1: d e ( m , n ) = d e ( k m , k n ) de(m,n)=de(km,kn) de(m,n)=de(km,kn)

其实从上图(右)可以看出很多斜率相同的格点的值是相同的,这个猜想如果成立可以迅速扩大矩形的规模(现在是380x380),另外这个猜想至今没有找到反例。

  • 猜想2:若 m ≥ n m \geq n mn,那么有 d e ( m + n , n ) = d e ( m , n ) + 1 de(m+n,n)=de(m,n)+1 de(m+n,n)=de(m,n)+1

这个稍微画个图大致就会觉得还是蛮有道理的,但是很遗憾的是,在近几年里,这个猜想被推翻,反例是: d e ( 112 , 53 ) = d e ( 59 , 53 ) = 11 de(112,53) = de(59,53) = 11 de(112,53)=de(59,53)=11

  • 猜想3: d e ( m , n ) ∼ g ( m ) = l o g ϕ ( m ⋅ 5 ) de(m,n) \sim g(m)=log_\phi (m \cdot \sqrt{5}) de(m,n)g(m)=logϕ(m5 ),其中 ϕ = 1 + 5 2 \phi=\frac{1+\sqrt{5}}{2} ϕ=21+5

上面提到了繁分数,对于Fibonacci型的矩形,如 F k ⋅ F k + 1 F_k \cdot F_{k+1} FkFk+1的矩形,其繁分数对应的数码之和,或者说 d e ( F k , F k + 1 ) de(F_k,F_{k+1}) de(Fk,Fk+1)是满足(应该是成立的,暂时没证明), d e ( F k , F k + 1 ) ∼ l o g ϕ ( F k + 1 ⋅ 5 ) de(F_k,F_{k+1}) \sim log_\phi (F_{k+1} \cdot \sqrt{5}) de(Fk,Fk+1)logϕ(Fk+15 ),而对于一般情况我们用程序验证一下 d e ( m , n ) de(m,n) de(m,n) g ( m ) g(m) g(m)的关系,如下图所示:

这里写图片描述

可以看出效果还是可以的,“阶”大致吻合。


http://chatgpt.dhexx.cn/article/MGNOQfpJ.shtml

相关文章

谱本征正交分解 (SPOD)附matlab代码

✅作者简介&#xff1a;热爱科研的Matlab仿真开发者&#xff0c;修心和技术同步精进&#xff0c;matlab项目合作可私信。 &#x1f34e;个人主页&#xff1a;Matlab科研工作室 &#x1f34a;个人信条&#xff1a;格物致知。 更多Matlab仿真内容点击&#x1f447; 智能优化算法 …

通信基础 7 —— 遍历保密速率、谱分解物理意义

目录 遍历保密速率&#xff08;ergodic secrecy rate&#xff09;闭式解&#xff08;解析解&#xff09;和数值解闭式解数值解 拉普拉斯变换谱分解/正交分解 遍历保密速率&#xff08;ergodic secrecy rate&#xff09; 说遍历容量不十分准确&#xff0c;应该叫各态历经性容量…

【推荐系统】特征值分解(谱分解)和奇异值分解(SVD),即在PCA上的应用

特征值分解&#xff08;谱分解EVD&#xff09;和奇异值分解&#xff08;SVD&#xff09;&#xff0c;即在PCA上的应用 1. 概念 特征值分解和奇异值分解在机器学习领域都有着广泛的应用。两者有着很紧密的关系&#xff0c;二者的目的都是一样&#xff0c;就是提取出一个矩阵最…

R语言主成分分析PCA谱分解、奇异值分解预测分析运动员表现数据和降维可视化

最近我们被客户要求撰写关于主成分分析PCA的研究报告&#xff0c;包括一些图形和统计输出。 本文描述了如何 使用R执行主成分分析 ( PCA )。您将学习如何 使用 PCA预测 新的个体和变量坐标。我们还将提供 PCA 结果背后的理论。 主成分分析PCA降维方法和R语言分析葡萄酒可视化实…

【矩阵论】2. 矩阵分解——单阵谱分解

矩阵论 1. 准备知识——复数域上矩阵,Hermite变换) 1.准备知识——复数域上的内积域正交阵 1.准备知识——Hermite阵&#xff0c;二次型&#xff0c;矩阵合同&#xff0c;正定阵&#xff0c;幂0阵&#xff0c;幂等阵&#xff0c;矩阵的秩 2. 矩阵分解——SVD准备知识——奇异值…

可对角化和谱分解的区别

内容为个人理解&#xff0c;才疏学浅&#xff0c;如有错误&#xff0c;欢迎指正。 谱分解定理&#xff1a;向量空间V上的任意正规算子M&#xff0c;在V的某个标准正交基下可以对角化。反之&#xff0c;任意可对角化的算子都是正规的。 理解&#xff1a; &#xff08;1&#x…

R语言矩阵特征值分解(谱分解)和奇异值分解(SVD)特征向量分析有价证券数据

最近我们被客户要求撰写关于特征值分解的研究报告&#xff0c;包括一些图形和统计输出。 R语言是一门非常方便的数据分析语言&#xff0c;它内置了许多处理矩阵的方法。 作为数据分析的一部分&#xff0c;我们要在有价证券矩阵的操作上做一些工作&#xff0c;只需几行代码。 …

【矩阵论】2. 矩阵分解——正规谱分解

矩阵论 1. 准备知识——复数域上矩阵,Hermite变换) 1.准备知识——复数域上的内积域正交阵 1.准备知识——Hermite阵&#xff0c;二次型&#xff0c;矩阵合同&#xff0c;正定阵&#xff0c;幂0阵&#xff0c;幂等阵&#xff0c;矩阵的秩 2. 矩阵分解——SVD准备知识——奇异值…

【线性代数】矩阵的特征值分解(对角化、谱分解)

目录 1 前言2 矩阵的特征值分解2.1 从定义的角度理解2.2 从变换的角度理解(来自参考文献[3]) 3 对角矩阵&#xff08;补充&#xff09;3.1 对角矩阵的定义3.2 对角矩阵线性变换的几何意义 4 矩阵对角化5 相似矩阵与特征值6 参考文献 1 前言 矩阵的特征值分解又可以称作矩阵的对…

矩阵的谱分解 (详细推导步骤~~~特征值分解特征向量

所谓矩阵的分解&#xff0c;就是将一个矩阵写成结构比较简单的或性质比较熟悉的另一些矩阵的乘积。矩阵的分解方法有很多种&#xff0c;包括三角分解、QR&#xff08;正交三角&#xff09;分解、最大秩分解、奇异值分解和谱分解&#xff0c;所有这些分解在数值代数和最优化问题…

c语言-gotoxy实现先全部输出再做全部输入操作

需要用到的头文件&#xff1a; #include<windows.h> #include <iostream>代码&#xff1a; gotoxy(a,b)光标控制函数 a为行&#xff0c;b为列&#xff0c;坐标原点在左上角向右是行正方向&#xff0c;向下为列正方向 中文符号汉字在列方向为2个空间&#xff0c;英…

C语言 时钟模拟(gotoxy函数的运用)

时钟模拟&#xff0c;运用gotoxy()函数和Sleep()函数。 效果&#xff1a; #include <stdio.h> #include <windows.h> #include <time.h> #define XHOUR 40 //打印小时的起始x坐标&#xff0c;即a&#xff0c;g交点横坐标 #define YHOUR 27 #define HOUR 1 …

一些神奇的小函数(一)——gotoxy篇

一、gotoxy 1.作用&#xff08;1&#xff09;控制输出的位置① 样例 2.实现&#xff08;1&#xff09;c版 1.作用 &#xff08;1&#xff09;控制输出的位置 ① 样例 : 在代码中写上一句gotoxy(1,1)&#xff0c;然后cout<<“噢&#xff01;这个函数真有用&#xff01;…

Matlab sim函数的用法

一、引言 最近用Simulink做仿真的时候&#xff0c;需要从m文件里运行Simulink模型&#xff0c;而且需要在m文件中传递一些参数到Simulink模型&#xff0c;也需要将Simulink模型的运行结果发送回m文件&#xff0c;所以要用到sim函数。 查看了sim函数的help文档&#xff0c;并百…

CUDA10.0官方文档的翻译与学习之硬件实现

背景 在之前的文章中&#xff0c;我翻译了cuda10.0官方文档的前三章&#xff0c;这次就来翻译第四章——硬件实现 英伟达GPU架构通过由多线程的流式多处理器(SM)组成的可变数组编译&#xff0c;当一个主机CPU上的cuda程序调用了一个核网格&#xff0c;网格内的线程块将会被枚…

近距离看GPU计算(3)

在先前文章《近距离看GPU计算&#xff08;2&#xff09;》中&#xff0c;我们谈到现代GPU发展出SIMT(Single Instruction Multiple Thread)的执行结构&#xff0c;硬件线程池的线程们有相对独立的运行上下文&#xff0c;以Warp为单位分发到一组处理单元按SIMD的模式运行。这些W…

CPU线程与超线程技术

文章目录 一、CPU线程与OS线程1. CPU中的thread2. OS中的thread 二、HT/SMT技术1. 定义2. 原理3. 带来的问题 三、SIMT与SIMD1. SIMT2. SIMD3. 对比 一、CPU线程与OS线程 1. CPU中的thread CPU中的线程来自同步多线程&#xff08;SMT&#xff0c;Simultaneous Multi-threadin…

GPU 软硬件基本概念

术语: single instruction, multiple thread (SIMT)&#xff1a; a single instruction is executed on several function units in parallel GPU的硬件结构中与CUDA相关的几个概念&#xff1a;thread block grid warp sp sm streaming processor(sp): 最基本的处理单元&…

GPU异构计算基础知识

CUDA Toolkit Documentation (nvidia.com) host CPU和内存 (host memory)Device GPU和显存 (device memory) SIMT模型与SIMD模型的区别 SIMD(Single Instruction Multi Data&#xff0c;单指令多数据)模型要求同一个向量中的所有元素要在统一的同步组中一起执行&#xff0c;…

GPU硬件架构以及运行机制笔记

本文是对向往大神的文章的一个笔记。 想阅读原文章移步博客园搜索向往 原文章比较长&#xff0c;这是一个精简和自己的一些理解 这篇文章要带着下面的问题去看 1、GPU是如何与CPU协调工作的&#xff1f; 2、GPU也有缓存机制吗&#xff1f;有几层&#xff1f;它们的速度差异多…