识别满足特定条件的张量运算
识别满足特定条件的张量运算
嘿,让我来拆解一下你描述的这个运算——先明确你给出的核心约束:
- 输入是两个n×n矩阵(你说的n²维度应该指每个矩阵包含n²个元素),输出也是n×n矩阵
- 每个输出元素都用到了两个输入矩阵的所有元素(每个输入元素恰好出现在每个输出元素的一个乘积对里)
- 所有可能的输入元素乘积对($a_{ij}, b_{kl}$)在整个输出矩阵中只出现一次
先看你给出的2×2例子:输出的每个元素都是4个乘积的和,刚好覆盖A的所有4个元素和B的所有4个元素;整个输出矩阵的4个元素加起来,正好包含了A和B所有4×4=16个可能的乘积对,没有重复。
这种运算本质上是基于拉丁方排列的完美匹配求和矩阵,直白来说就是:
- 把两个输入矩阵A、B分别展开成长度为n²的列向量
vec(A)和vec(B) - 构造一组n²个互不重叠的排列(这些排列构成拉丁方,保证所有$(i,j)$乘积对只出现一次),每个排列$\sigma$对应一个“完美匹配”:将
vec(A)的第i个元素和vec(B)的第$\sigma(i)$个元素配对 - 每个排列对应的所有乘积的和,就是输出矩阵的一个元素
- 最后把这些和重新排列成n×n的矩阵
针对你的2×2例子,这四个排列分别对应:
- 第一个输出元素:$\sigma_1(1)=1, \sigma_1(2)=3, \sigma_1(3)=4, \sigma_1(4)=2$ → 乘积对$(a_{11},b_{11}), (a_{12},b_{21}), (a_{21},b_{22}), (a_{22},b_{12})$
- 第二个输出元素:$\sigma_2(1)=2, \sigma_2(2)=4, \sigma_2(3)=3, \sigma_2(4)=1$ → 乘积对$(a_{11},b_{12}), (a_{12},b_{22}), (a_{21},b_{21}), (a_{22},b_{11})$
- 第三个输出元素:$\sigma_3(1)=4, \sigma_3(2)=2, \sigma_3(3)=1, \sigma_3(4)=3$ → 乘积对$(a_{11},b_{22}), (a_{12},b_{12}), (a_{21},b_{11}), (a_{22},b_{21})$
- 第四个输出元素:$\sigma_4(1)=3, \sigma_4(2)=1, \sigma_4(3)=2, \sigma_4(4)=4$ → 乘积对$(a_{11},b_{21}), (a_{12},b_{11}), (a_{21},b_{12}), (a_{22},b_{22})$
如果要找更正式的名称,这种运算可以归类为张量积的拉丁方划分求和——它本质上是把两个矩阵的张量积(n²×n²的矩阵,每个元素为$a_{ij}b_{kl}$)按照拉丁方规则划分成n²个块,每个块求和后得到输出矩阵的元素。
备注:内容来源于stack exchange,提问作者amateur
相关产品推荐
相关产品推荐

