在 Java 中实现稀疏向量的最佳方法是什么?
当然,好的东西是可以很容易地操作的东西(标准化、标量积等)
提前致谢
JScience有一个SparseVector实现,它是其线性代数包的一部分。
您还可以尝试查看la4j的CompressedVector实现。它使用一对数组:值数组和它们的索引数组。再加上二进制搜索,它就飞起来了。所以,这个实现保证了/操作O(log n)
的运行时间。get
set
只是一个简单的例子
Vector a = new CompressedVector(new double[]{ 1.0, 2.0, 3.0 }).
// calculates L_1 norm of the vector
double n = a.norm();
// calculates the sum of vectors elements
double s = a.fold(Vectors.asSumAccumulator(0.0));