在CRS稀疏矩阵中查找值
Looking up values in a CRS sparse matrix?
我是使用稀疏矩阵的新手,但现在需要在我的工作中使用稀疏矩阵来节省空间。我理解以下矩阵:
10 0 0 0 -2 0
3 9 0 0 0 3
0 7 8 7 0 0
3 0 8 7 5 0
0 8 0 9 9 13
0 4 0 0 2 -1
可以用三个这样的向量表示:
[10 -2 3 9 3 7 8 7 3 8 7 5 8 9 9 13 3 2 -1] // nonzero_vals
[1 5 1 2 6 2 3 4 1 3 4 5 2 4 5 6 2 5 6] // col_indices
[1 3 6 9 13 17 20] // row_ptr (indices of values that start row)
我现在的问题是确定在O(1)时间内值查找的适当方程。例如,如果我想返回存储在位置(2,2)的矩阵值,我如何返回9?另外,如果查找坐标没有在稀疏矩阵中表示,我如何返回0,也是在O(1)时间内?
我很感激你能提供的任何帮助。我相信有很好的公式,但我找不到它们。没有 0 (1)过程来获取任意(i,j)坐标处的值(至少没有预处理)。你能做的最好的是平均O(log N)(其中矩阵是MxN),通过对列索引进行二进制搜索。*
子> <实际上是>O(log k),其中k是行中非零的个数。然而,如果假设密度与矩阵大小无关(通常是这种情况),则O(log N)是有效的。 实际上是>
相关文章:
- 正在查找文档以获得PS4平台的C++中的设备信息
- 在C++中查找文件
- 模板元程序查找相似的连续类型名称
- 在UNIX系统中使用DIR查找文件的字节大小
- 查找最接近的大于当前数字的数字的索引
- 有没有一种方法可以创建一个带有哈希表的数据库,该哈希表具有恒定时间查找功能
- 查找后更改类变量
- 使用正则表达式regex_search在字符串中查找字符串
- 使用gcc从静态链接的文件中查找可选符号
- 在C++中查找范围的长度
- 算法问题:查找从堆栈中弹出的所有序列
- 在Windows中查找扬声器输出的当前音量级别
- 如何在C++中使用X509证书模在令牌中查找私钥
- 使用.find函数在c++中查找字符和另一个字符之间的大小
- 在 Windows 上,是否可以让 dll 在不使用 PATH 环境变量的情况下在另一个文件夹中查找依赖项?
- 在 for 循环中查找问题时遇到困难
- 如何在文件中查找字节序列
- 试图创建一个多线程程序来查找0-100000000之间的总素数
- 使用堆查找第K个最大元素的时间复杂性
- 在CRS稀疏矩阵中查找值