Инкрементная разреженная матрица - PullRequest
0 голосов
/ 14 декабря 2018

В настоящее время я манипулирую очень большой матрицей, поэтому мне пришлось использовать формат CSR следующим образом: https://en.m.wikipedia.org/wiki/Sparse_matrix

Мне удалось преобразовать нормальную матрицу в матрицу CSR с помощью 3 массивов IA, JA и Aкак на странице Википедии.Тем не менее, я все еще запутался в этом формате.Как это сделать, если, например, я хочу увеличить элемент строки n и столбца m матрицы CSR?Например, если я хочу увеличить элемент в строке n и столбце m на 1, как изменится 3 массива?Большое спасибо за Вашу помощь.

1 Ответ

0 голосов
/ 14 декабря 2018

Хорошо, я просто быстро прочитал его, но IA и JA оба являются индексными таблицами, массив, фактически содержащий значения, равен A. Если все ненулевые значения положительны, то увеличение ненулевого значения тривиально и будет толькоизменить A. Однако, то, что вы спрашиваете, становится сложным, если некоторые элементы являются отрицательными или если вы увеличиваете ячейку, содержащую ноль.Действительно, вам нужно будет мутировать A не только в одном индексе, но и вставить элемент потенциально в середину массива и, соответственно, обновить IA.Я думаю, что этот формат просто ужасен для операции, которую вы ищете, он будет иметь линейную сложность в худшем случае в этих ситуациях только для обновления одной ячейки.

...