我正在寻找一种算法来测试非负 dxd 整数矩阵是否不可分解。我称矩阵不可分解如果它不能写成两个非负 dxd 整数矩阵的乘积,它们都不是置换矩阵(即在非负整数矩阵 SL_d(N) 的半环中不可逆)。我对行列式为 1 的 3x3 矩阵的情况最感兴趣。请注意,1x1 矩阵的情况对应于询问正整数是否为素数。对于行列式为 1 的 2x2 矩阵,众所周知,唯一不可分解的矩阵是置换矩阵和基本矩阵(这是因为基本矩阵生成整个 SL_2(N))。在 SL_3(N) 中有无数个已知的不可分解矩阵的例子(J. Rivat “Undecomposable matrices in dimension 3” appendix in Pytheas Fogg “Substitutions in Dynamics, Arithmetics and Combinatorics”,Springer LNM)。
有一种简单的算法,它包括查看具有 B adxk 矩阵和 C akxd 矩阵的 BC = A 形式的更一般的因式分解。这样我们就可以开始递归构造了。我们用 B0 填充 B 的第一列,用 C0 填充 C 的第一行,这样 B0 * C0 <= A (这里我的意思是所有系数都更小)。然后找到大小分别为 dx (k-1) 和 (k-1) xd 的 B' 和 C' 就足够了,使得 B' * C' = A - B0*C0。这个算法比较慢!
与该问题相关的方程是具有 2 个 d^2 变量的二次方程(A 为 d^2,B 为 d^2),我想用非负整数求解它们。由于方程的形式非常特殊,我想可能有更好的方法来解决它们,或者至少使递归构造更有效。