2013-07-15 4 views
0

나는 명확한 대칭 성 희소 행렬의 고유 값과 고유 벡터를 계산해야하는 Java 소프트웨어를 작성 중이다. 나는 모든 고유치를 필요로하지 않지만, 나는 작은 것들에 주로 관심이 있습니다. 문제는 : 테스트 목적으로희소 행렬에 대한 메모리 효율적인 작은 고유 값 알고리즘

1), 내 코드, 노트북 (쿼드 코어에서 실행되는 테스트 데이터는 큰 행렬을 포함

2) RAM 4 기가) 할 필요가 - 일반적으로 이상 10000 10000

이 두 가지 제약 조건은 대부분의 일반적인 Java 행렬 패키지가 현재의 요구에 부적합하다는 것을 의미합니다. 메모리로 10000 행 밀도의 10000 행렬을 저장할 수는 없습니다.

그럼 내 질문은 : 사람들이 행렬 계산을 할 때 메모리 제약 조건을 어떻게 해결합니까? 내 매트릭스는 일반적으로 매우 드문 드문 - 일반적으로 5 % 미만의 항목은 0이 아닙니다. 이것을 악용하는 알고리즘이 있습니까? 어떻게 든 하드 드라이브에 매트릭스를 저장하고 RAM에 부담을 줄이기 위해 한 번에로드 할 수 있습니까?

+0

. cs.umn.edu/~saad/eig_book_2ndEd.pdf – arynaq

답변

0

당신은 그것을 위해 la4j 라이브러리를 사용하려고 할 수 있습니다 : // www가 사용자 : 스파 스 매트릭스 HTTP에 대한 몇 가지 고유의 algos과 함께 효율적으로 여기 스파 스 매트릭스를 저장하는 방법에 대한 몇 가지 좋은 정보가있다

// Compressed Sparse Row Matrix 
Matrix a = new CRSMatrix(...); 

// eigen[0] = P, eigen[1] = D 
Matrix eigen[] = a.decompose(Matrices.EIGEN_DECOMPOSITOR);