Ответ 1
замените матрицу вектором, и у вас есть ответы
В boost::numeric::ublas
существуют три разреженных типа векторов.
Я вижу, что mapped_vector
по существу является stl::map
от индекса к значению, который считает все не найденные значения равными 0 (или что-то общее).
Но документация разрежена (ха-ха) по информации о compressed_vector
и coordinate_vector
.
Кто-нибудь может уточнить? Я пытаюсь выяснить алгоритмическую сложность добавления элементов к различным векторам, а также точечных произведений между двумя такими векторами.
Очень полезный ответ показал, что сжатый_vector очень похож на compress_matrix. Но кажется, что, например, сжатое хранилище строк предназначено только для хранения матриц, а не только для векторов.
Я вижу, что unbounded_array
- тип хранилища, но я не совсем уверен, что спецификация для этого. Если я создаю сжатый_vector размером 200 000 000, но только с 5 ненулевыми местоположениями, это менее эффективно, чем создание сжатого_vector с размерами 10 и 5 ненулевых местоположений?
Большое спасибо!
замените матрицу вектором, и у вас есть ответы