2012-04-14 64 views
0

这是一个非常简单的问题 - 使用三角矩阵和在C++中使用稀疏矩阵的最佳实践是什么?C++中的三角形和稀疏矩阵

对于三角矩阵我建议一个数据格式

double* myMatrix; 
int dimension; 

在自定义类数据结构一样容易。 (我建议它是完整形式的方矩阵)。并且会有设置和访问元素的方法。

对于稀疏矩阵 - 我知道一些方法,例如只保存行/列中元素的位置及其值。这是你的经验的问题 - 稀疏矩阵的实现将是最好的吗?

P.S.内存少,CPU使用率低 - 这是我的目标,我正在寻找最好的解决方案,而不是最简单的解决方案。所有矩阵将用于求解线性方程组。而矩阵的大小将是巨大的。

非常感谢每一个建议!

+2

像Eigen这样的第三方图书馆怎么样? – 2012-04-14 19:36:50

+1

除非您是专家,否则请使用预先存在的库。我推荐Tim Davis的代码,例如CSparse,UMFPACK。 – 2012-04-14 19:37:25

+0

第三方库在我的情况下不是解决方案。也许,我可以搜索开放源码解决方案,并使用lisence允许的某些部分,但由于某些原因,我无法将extern模块作为dll和lib添加到我的项目中。 – 2012-04-14 19:43:23

回答

1

如果您不知道矩阵的结构,那么它与地图基本相同。你可以使用std::map<std::pair<int,int>,double>。如果你有的话,或者std::unordered_map

+0

谢谢,会尝试。 – 2012-04-15 08:13:04