对称对角矩阵的表示
Representation of a symmetric diagonal matrix
假设我们有一个巨大的对称对角矩阵。实现这一点的有效方法是什么?
我能想到的唯一方法是通过使用对称性质当Xij = Xji时,我们可以将这个矩阵的大小减少一半。但是用二维数组来表示这个矩阵是低效的,因为我们不能用数组来减小矩阵的大小。
用邻接表表示这个矩阵也是低效的,因为把这个矩阵和一个图联系起来。这是一个密度图。而对于形容词表的操作,需要进行删除、插入、查找等操作。
但是使用堆呢?
在你决定如何处理这个矩阵(或者可能是矩阵?)之前,没有一个答案。
如果你只是要存储和记忆它,那么就按顺序存储它,省略多余的条目。(您的代码知道如何访问它,因为这就是它所做的,对吗?)
更可能的是,你想对它做常规的矩阵运算。在这种情况下,您是想提高存储效率,还是提高执行效率?在后一种情况下,我没有看到很多基于对称的机会-乘法是昂贵的事情,你可能仍然需要所有这些。如果是存储,那么您是否将自己限制为只取对称输入和对称输出的操作?听起来很具体。如果是这样,那么你只需要为你要存储的部分做计算,因为根据定义,其他条目是对称的,所以只需编写代码来生成矩阵的那一部分,你就完成了。
相关文章:
- 表示"accepting anything for this template argument" C++概念的通配符
- 如何将ampl中的集合表示为c++中的向量
- std::is_base_of表示ctor编译错误
- 输入中的字符串数未知(以字母表示)
- 我可以信任表示整数的浮点或双精度来保持精度吗
- c++模板来表示多项式
- 询问在设计我的手臂模拟器功能表示格式1
- CMakeLists.txt中的命名空间表示法
- C++射线示踪剂ppm表示没有足够的数据来显示图像
- 如何计算Big-O表示法中的平均渐近运行时间
- 我应该如何表示我拥有的连续元素序列?
- 在C++中,使用带有 std::optional 参数的函数<T>来表示可选参数是否有意义?
- 在 std::无符号字符的向量处存储 int 的十六进制表示形式
- 表示类模板C++空类型
- 具有所表示类的相同构造函数签名的代理类模板
- 嵌套在循环中的两个循环的 big-O 表示法
- 具有引用成员的结构是否具有唯一的对象表示形式
- 使用 int 表示浮点除法 C++
- 一种使用 unordered_map 表示对称稀疏矩阵的有效方法
- 对称对角矩阵的表示