увеличить потребление памяти библиотек графов большой граф - PullRequest
3 голосов
/ 12 апреля 2011

У меня большой граф (30k вершин, 250-метровые ребра), и использование списка смежности с библиотекой графов-бустов (я пробовал как vecs, так и списки) потребляет более 25 ГБ. так как получить компьютер с более чем 16 ГБ оперативной памяти не очень легко, что вы порекомендуете для уменьшения использования памяти?

1 Ответ

3 голосов
/ 27 мая 2011

У меня была такая же проблема с техникой проверки с использованием графиков, над которыми я работаю.Если вы будете работать с огромным количеством данных (вершинами, а также ребрами), вам следует использовать точно настроенную структуру данных, созданную вами самостоятельно.

Если у вас много ребер, вам следует рассмотреть возможность использования матрицы смежности.Ребра имеют веса, поэтому вы можете использовать что-то вроде этого:

vector<int> vertices;
vector<vector<int> > edges;

Вы можете использовать оптимизированный vector<vector<bool> >, который использует только один бит для представления каждого ребра, если у ребер не было свойства.

Несмотря на то, что матрица смежности является быстрой, если вы хотите проверить ребро или добавить его, нехорошо перебирать ребра.в моем собственном графике мой график намного меньше.

...