2012-04-14 5 views
0

이것은 매우 간단한 질문입니다. 삼각형 행렬을 사용하고 C++의 희소 행렬을 사용하는 것이 가장 좋은 방법은 무엇입니까?C++의 삼각형 및 희소 행렬

은 삼각 행렬을 위해 나는 사용자 정의 클래스의 데이터 구조로

double* myMatrix; 
int dimension; 

로 쉽게 데이터 형식을 제안한다. (완전한 형태의 정사각형 행렬이었던 것이 좋습니다.) 그리고 요소를 설정하고 액세스하는 메소드가있을 것입니다.

스파 스 매트릭스의 경우 - 행/열에 요소 위치 만 저장하는 것과 같은 두 가지 방법을 알고 있습니다. 그것은 귀하의 경험에 대한 질문입니다 - 스파 스 매트릭스의 구현이 가장 좋은 매트릭스가 될 것입니까?

P. 메모리가 적고 CPU 사용량이 적습니다. 이것이 저의 목표입니다. 가장 간단한 솔루션이 아닌 최선의 솔루션을 찾고 있습니다. 모든 행렬은 선형 방정식의 시스템을 푸는데 사용됩니다. 그리고 행렬의 크기가 커질 것입니다.

모든 조언을 주셔서 감사합니다.

+2

Eigen과 같은 타사 라이브러리는 어떻습니까? –

+1

전문가가 아니라면 기존 라이브러리를 사용하십시오. Tim Davis의 코드를 추천합니다. CSparse, UMFPACK. –

+0

제 3 자 라이브러리가 제 상황의 해결책이 아닙니다. 어쩌면, 오픈 소스 솔루션을 검색하고 라이센 스가 허용하는대로 일부 부품을 사용할 수는 있지만, 이유가있어 extern 모듈을 프로젝트에 dll과 libs로 추가 할 수는 없습니다. –

답변

1

매트릭스의 구조에 대해 잘 모르는 경우 기본적으로 맵과 같습니다. std::map<std::pair<int,int>,double>을 사용할 수 있습니다. 아니면 std::unordered_map 일 수도 있습니다.

+0

고마워, 시도해 볼게. –

관련 문제