Я пишу программу для численного моделирования в C. Часть моделирования - это пространственно фиксированные узлы, которые имеют некоторое значение с плавающей точкой для каждого другого узла. Это похоже на ориентированный граф. Однако, если два узла находятся слишком далеко, (дальше, чем некоторая длина отсечки a), это значение равно 0.Как реализовать огромную матрицу в C
Чтобы представить все эти «корреляции» или значения поплавка, я попытался использовать 2D-массив, но поскольку У меня есть 100 000 и более узлов, которые соответствовали бы 40 ГБ памяти или около того.
Теперь я пытаюсь думать о различных проблемах для этой проблемы. Я не хочу сохранять все эти значения на жестком диске. Я также не хочу рассчитывать их на лету. Одной из идей была какая-то разреженная матрица, как та, которую можно использовать в Matlab.
Есть ли у вас какие-либо другие идеи, как хранить эти значения?
Я новичок в C, поэтому, пожалуйста, не ожидайте слишком много опыта.
Спасибо и наилучшие пожелания, Ян Оливер
Что относительно хеша/карты, где находится ключ (строка x col)? Он будет иметь только столько элементов, сколько записей в матрице с ненулевым значением. –
Это не совсем конкретный вопрос ... Да, редкие матрицы. Посмотрите на некоторые алгоритмы ... Возможно, с некоторыми подробностями о проценте узлов nulll в матрице или более подробной информации о симуляции, может быть, кто-то может предложить другие решения, чем графовое представление. – pascal
... например, что вы хотите сделать с этой матрицей? – pascal