2009-12-19 5 views
1

Какой лучший способ реализовать разреженный вектор в Java?Каков наилучший способ реализовать разреженный вектор в Java?

Конечно хорошая вещь будет иметь что-то, что можно манипулировать довольно легко (нормализация, скалярное произведение и так далее)

Заранее спасибо

ответ

2

имеет Sparse Vector класс. Он имеет нормированные функции (1-норма 2-норма и ∞ -norm) и функции точечного произведения.

1

Вы также можете посмотреть la4jCompressedVector. Он использует пару массивов: массив значений и массив их указателей. И с бинарным поиском поверх этого он просто летает. Таким образом, эта реализация гарантирует 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));