проблема разреженной матрицы Java - PullRequest
4 голосов
/ 22 февраля 2010

У меня есть двумерная матрица. Моя матрица редкая. Я столкнулся с проблемой производительности. Любое тело, пожалуйста, ответьте, что API или класс я могу использовать в Java для обработки разреженной матрицы для повышения производительности моей программы.

Например, я хочу

it take 100x100 matrix
handle sparse stuff
do the multiplication
return me my matrix same as 100x100 with 0 ( mean sparse matrix )

Ответы [ 4 ]

6 голосов
/ 22 февраля 2010

Джама ужасен для больших разреженных матриц.

Посмотрите библиотеку линейной алгебры Colt .


Другая возможность для разреженной линейной алгебры - библиотека Apache commons . Может быть немного легче, чем Кольт, но разница с внешним видом Джамы может быть немного больше.

1 голос
/ 08 января 2011

SuanShu имеет большой набор реализованных разреженных матриц. Вы можете просто использовать их вместо того, чтобы писать свои собственные.

В настоящее время они поддерживают следующие форматы: CSR, DOK, LIL

0 голосов
/ 11 февраля 2013

Вы можете посмотреть на la4j (Линейная алгебра для Java). La4j поддерживает разреженные и плотные матрицы. Вот список поддерживаемых типов матрицы: 1D-массив (плотный), 2D-массив (плотный), CRS - хранилище сжатых строк (разреженное), CCS - хранилище сжатых столбцов (разреженное).

0 голосов
/ 22 февраля 2010

Вы пробовали использовать Jama? http://math.nist.gov/javanumerics/jama/ - они напрямую не поддерживают разреженные матрицы, но это широко используемый пакет.

Кроме того, в princeton, похоже, реализована редкая матричная реализация, чтобы вы могли взглянуть на http://www.cs.princeton.edu/introcs/44st/SparseMatrix.java.html

...