gpt4 book ai didi

java - 零空间二进制矩阵 : Java

转载 作者:太空宇宙 更新时间:2023-11-04 06:37:55 28 4
gpt4 key购买 nike

这是我的问题:如何计算二进制矩阵的核?

在Java中计算内核(或者空空间,如果你愿意的话),在真实空间中非常简单,已经有很多类了,所以不需要再发明轮子,我们只需要使用它们就可以了!

    double[][] data = new double[3][3];

// ... fill the Matrix

SimpleMatrix m = new SimpleMatrix(data);

SimpleSVD svd = m.svd();

SimpleMatrix nullSpace = svd.nullSpace();

nullSpace.print();

(这些类(class)来自:http://efficient-java-matrix-library.googlecode.com/svn-history/r244/javadoc/ver0.14/org/ejml/data/package-summary.html)

问题是:所有这些类只能在实数空间中工作,我需要在 Z/2Z 中(或者如果您愿意的话,在二进制空间中)进行操作,但我不知道如何操作?

您知道 Java 中有什么好的 API 可以与 boolean 矩阵一起使用吗?

或者您知道如何使用 boolean 值而不是实数进行内核计算...?

提前非常感谢!

干杯!

最佳答案

二元 m×n 矩阵 A 的核定义为二元 vector x 的集合,使得 Ax = 0。

空间上的加法是 boolean 异或:0 + 0 = 1 + 1 = 0; 0 + 1 = 1 + 0 = 1。
空间上的乘法是 boolean AND:0 * 0 = 0 * 1 = 1 * 0 = 0; 1 * 1 = 1。

要计算 A 的核基,请构造 [A; I]然后进行初等列运算得到[B; C] 其中B是列梯形形式。 B 的零列下方的 C 列是内核基础。

此处更详细地描述了该过程:http://en.wikipedia.org/wiki/Kernel_(matrix)#Basis请注意,所描述的算法也适用于二进制情况,即使维基百科页面上没有提及。

如果您发现一个库已经做到了这一点,我会感到惊讶,而且实现起来很简单,所以我建议您自己编码,而不是寻找现有的解决方案。

关于java - 零空间二进制矩阵 : Java,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25098015/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com