有效地检验三个二进制向量在有限域上是否线性无关

Checking efficiently if three binary vectors are linearly independent over finite field

本文关键字:是否 线性 向量 检验 二进制 三个 有效地      更新时间:2023-10-16

在我的程序中,我得到了三个由无符号int表示的二进制矢量v1、v2、v3和一个有限域F,它也是一组二进制矢量。我需要检查向量是否线性独立,也就是说,在F中不存在f1、f2,使得f1*v1 +f2*v2 = v3

直接的暴力解决方案是在字段上迭代并检查所有可能的线性组合。

是否存在更有效的算法?

我想强调两点:

  1. 字段元素是矢量,而不是标量。因此,场元素f1和给定向量vi的乘积e是点积。所以高斯消去法不起作用(如果我没有遗漏什么的话)
  2. 域是有限的,所以如果我发现f1*v1 +f2*v2 = v3对于某些f1,f2,并不意味着f1,f2属于F

如果向量在r^2中,那么它们是自动相关的,因为当我们将它们组成矩阵并将其简化为梯形时,至少会有一个自由变量(在这种情况下只有一个)。

如果向量在R^3中,那么你可以用它们做一个矩阵,即一个二维数组,然后你可以得到这个矩阵的行列式。如果行列式等于0,则向量是线性相关的,否则不是。

如果向量在R^4、R^5等中,则适当的方法是将矩阵简化为梯形。

对于在维数为N的空间中定义的任何有限的M个向量集,它们是线性独立的,当通过逐行堆叠这些向量构建的MxN矩阵的秩等于M时。

关于涉及线性代数的数值稳定计算,奇异值分解通常是可行的,并且有很多可用的实现。本文的重点是实现矩阵的秩等于其非零奇异值的个数。然而,必须注意的是,由于浮点近似,必须选择有限的精度来决定一个值是否有效为零。

你的问题提到,你的向量定义在一组整数中,这当然可以用来克服浮点计算的有限精度,但我不知道如何做到。也许有人能帮我们?

如果在有限域内进行高斯消去,则它确实有效。对于二进制,它应该非常简单,因为逆元素是平凡的。对于较大的有限域,您将需要以某种方式找到逆元素,这可能会变成一个单独的问题。