У меня есть эта проблема: У меня есть график с узлами, значение которых составляет от 1 до 200 М. График имеет 200M узлов и не более 300M переходов. Переходы с символами символов (между 'a' и 'z') , поэтому я держу их всех в этом: map < char, int> переходы [200000000]; , но это очень дорого. в переходах [i] i - единственное значение состояния, а переходы [i] [c], где c - символ символа, - это состояние, которое мы переходим от «i» с char «c» Однако если У меня 8M состояний, он занимает 1,6 ГБ памяти. И у меня есть ограничение на 8 ГБ памяти для этого, чтобы работать с 200М узлами. Не могли бы вы дать мне совет для чего-то более эффективного? У меня также есть 2 x int массива с размером 200 миллионов. Который должен также вписаться в этот 8-гигабайтный баран. Он принимает как баран :) 1,6 ГбЭффективная интерпретация графа C++
ответ
Кажется, используя
std::vector<std::pair<std::pair<int, char>, int>> edges;
будет более эффективным: вступление ((f, x), t)
будет представлять собой переход от узла к узлу f
t
с символом z
. Вы сохранили бы этот вектор и отсортировали бы его, используя std::lower_bound(edges.begin(), edges.end(), predicate)
с подходящим предикатом. Объем памяти, вероятно, будет примерно 3 * sizeof(int) * e
, где e
- количество ребер.
@Diemtar Вы имеете в виду 'e' - количество ребер к концу , верный? – Xephon
@Xephon: er, yes - сначала использовал 'n', но это обычно используется для узлов ... Исправлено! Благодаря! –
- 1. Эффективная интерпретация командной строки
- 2. эффективная сериализация графа объектов Java
- 3. Наиболее эффективная реализация для полного неориентированного графа
- 4. Эффективная структура данных отправки графа над WAN
- 5. Интерпретация вывода Valgrind C++
- 6. C++ Мне нужна интерпретация
- 7. Интерпретация C# лямбда-синтаксис
- 8. C++ общая интерпретация q
- 9. C интерпретация двойного
- 10. Интерпретация Valgrind в C
- 11. Интерпретация параметра c указателя
- 12. Какова наиболее эффективная структура данных графа в Python?
- 13. Эффективная сортировка памяти C++
- 14. Интерпретация файла Excel в C#
- 15. Python интерпретация байтов. (C memcpy)
- 16. C++ Пример графа
- 17. C++ Возврат графа
- 18. Определение графа в C
- 19. Интерпретация декодирования vs Резьбовая интерпретация
- 20. C# Эффективная рекурсия аргумента дерева, эффективная субаллия или под-список
- 21. Эффективная нить Синхронизация в C#
- 22. Эффективная реализация стеков в C
- 23. Эффективная обработка последовательных файлов C#
- 24. Эффективная и эффективная форма проверки
- 25. Оптимизация раскладки графа в C#
- 26. C# .Net обход объектного графа
- 27. Как графа математики в C#?
- 28. C# Библиотеки Углы Границы графа
- 29. Представление большого графа в C++
- 30. компонент связности графа в C
Оформить заказ на библиотеку ускорителя: http://www.boost.org/doc/libs/1_55_0/libs/graph/doc/index.html – Vertexwahn