Как эффективно получить доступ к элементам разреженной матрицы в библиотеке Eigen? - PullRequest
0 голосов
/ 17 июня 2020

Я заполнил разреженную матрицу A, используя библиотеку Eigen. Затем мне нужно получить доступ к ненулевым элементам разреженной матрицы, если я выполню его как A (rowindex, colindex), это будет очень медленно.

Я также пытаюсь использовать unordered_map в stl для решения эта проблема тоже очень медленная.

Есть ли эффективный способ решить эту проблему?

1 Ответ

0 голосов
/ 22 июня 2020

Сжатые разреженные матрицы хранятся в формате CSR или CS C. Учитывая, как матрица CSR хранит записи внутри, существует массив, хранящий x ненулевых значений, соответствующий массив длины x, хранящий их соответствующее положение столбца, и массив (обычно намного меньший, чем два других), «указывающий» на то, где строки меняются в эти массивы.

Невозможно узнать, где находится каждый ненулевой элемент, или существует ли пара строка-столбец без поиска для него в двух упорядоченных массивах строк (внешний индекс) и столбцы (внутренний индекс). Это не очень эффективно для доступа к элементам случайным образом.

...