我面临一个小问题,我想得到一些帮助。 问题是我得到了这个控制矩阵H.
0000111111111
H = 0111000111222
1012012012012
我被要求获取此代码的所有字词。线性和块码的理论认为,字V是 H * Vt = 0(零)的字,其中Vt被转置为V。
目前我知道有3 ^ 10 = 59049个可能的单词。这就是矩阵的大小,它是通过在这种情况下为矩阵q = 3 将矩阵q 提供给列 - 行的维度而获得的。
我的问题是我不知道如何生成所有向量(单词),所以H * Vt = 0.我怎么能在Java上做到这一点?使用带有0,1和2的13-n向量的所有可能组合。我还想知道是否有可能在Java中使用矩阵。
[0,0,0,0,0,0,0,0,0,0,0,0,0]
[0,0,0,0,0,0,0,0,0,0,0,0,1]
[0,0,0,0,0,0,0,0,0,0,0,1,0]
[0,0,0,0,0,0,0,0,0,0,0,1,1]
....
[0,0,0,0,0,0,0,0,0,0,0,0,0]
[0,0,0,0,0,0,0,0,0,0,0,0,2]
[0,0,0,0,0,0,0,0,0,0,0,2,0]
[0,0,0,0,0,0,0,0,0,0,0,2,2]
....
[0,0,1,1,1,1,1,1,1,1,1,1,1]
[0,1,1,1,1,1,1,1,1,1,1,1,1]
[1,1,1,1,1,1,1,1,1,1,1,1,1]
...
[1,1,2,2,2,2,2,2,2,2,2,2,2]
[1,2,2,2,2,2,2,2,2,2,2,2,2]
[2,2,2,2,2,2,2,2,2,2,2,2,2]
非常感谢你! 我想以一般的方式实现它,我的意思是,不仅对于这个矩阵,而且对于我可以使用的每个矩阵
答案 0 :(得分:2)
你正在寻找的是基本上枚举H内核中的所有向量。为了避免重新发明轮子,你需要找到一个支持在有限域上求解线性系统的Java线性代数库(它排除了大多数流行的Java线性代数库)。
我用谷歌搜索了“Java线性代数有限域”并找到了这个库:JLinAlg,声称支持它。
你所要做的就是找到H的核心基础;在此之后,枚举只是在此基础上列出所有线性组合(坐标)的问题。
我会使用org.jlinalg.LinSysSolver#solutionSpace()
方法,这会产生AffineSubSpace generatingSystem()
方法,该方法可以为您提供所需的基础。