gpt4 book ai didi

c++ - 在 CRS 稀疏矩阵中查找值?

转载 作者:行者123 更新时间:2023-11-28 03:20:48 29 4
gpt4 key购买 nike

我不熟悉稀疏矩阵的使用,但现在需要在我的工作中使用它以节省空间。我了解以下矩阵:

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

可以用三个这样的 vector 表示:

[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?另外,如果查找坐标未在稀疏矩阵中表示,我如何在 O(1) 时间内返回 0?

非常感谢您提供的任何帮助。我确信对此有完善的方程式,但我找不到它们。

最佳答案

没有 O(1) 过程来获取任意 (i,j) 坐标处的值(至少在没有预处理的情况下)。你能做的最好的事情是通过对列索引的二进制搜索过程平均 O(log N)(其中矩阵是 MxN)。*


<子>* 嗯,实际上是 O(log k),其中 k 是行中非零的数量。但是,如果假设密度与矩阵大小无关(通常是这种情况),则 O(log N) 是有效的。

关于c++ - 在 CRS 稀疏矩阵中查找值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15488006/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com