Which is the best way to implement a sparse vector

2019-05-29 21:50发布

Which is the best way to implement a sparse vector in Java?

Of course the good thing would be to have something that can be manipulated quite easily (normalization, scalar product and so on)

Thanks in advance

3条回答
疯言疯语
2楼-- · 2019-05-29 22:11

MTJ has a Sparse Vector class. It has norm functions (1-norm 2-norm and ∞-norm) and dot product functions.

查看更多
姐就是有狂的资本
3楼-- · 2019-05-29 22:21

You can also try to look at la4j's CompressedVector implementation. It uses pair of arrays: array of values and array of their indicies. And with binary search on top of that it just flies. So, this implementation guarantees O(log n) running time for get/set operations.

Just a brief example

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));
查看更多
Explosion°爆炸
4楼-- · 2019-05-29 22:27

JScience has a SparseVector implementation that is part of its linear algebra package.

查看更多
登录 后发表回答