Я пытаюсь вывести цепь Маркова процесса, который я могу только смоделировать. Количество состояний/вершин, которые будет содержать окончательный граф, очень велико, но я не знаю заранее количество вершин.
Прямо сейчас у меня есть следующее:
- Мое моделирование выводит
boost::dynamic_bitset
, содержащее 112 бит, каждый временной шаг. - Я использую набор битов в качестве ключа в Google Sparse Hash для сопоставления с целочисленным значением, которое можно использовать в качестве индекса для матрицы смежности, которую я хочу построить.
Теперь мне нужна хорошая/быстрая матрица или двумерный массив для хранения целых чисел. Должно:
- Используйте целочисленные значения, которые я сохранил в Google Sparse Hash, в качестве номеров строк/столбцов. (Например, я хочу получить доступ/изменить сохраненное целое число, выполнив что-то вроде
matrix(3,4) = 3
. - Я заранее не знаю, сколько строк или столбцов мне понадобится. Таким образом, он должен иметь возможность просто добавлять строки и столбцы на лету.
- Большинство значений будут равны 0, поэтому, вероятно, это должна быть разреженная реализация чего-либо.
- Количество строк и столбцов будет очень большим, поэтому это должно быть очень быстро.
- Простой в использовании. Мне не нужно много математических операций, это должен быть просто быстрый и простой способ хранения и доступа к целым числам.
Надеюсь, я достаточно ясно изложил свой вопрос.