Я пытаюсь найти кратчайший путь между двумя узлами в наборе данных. I реализовал алгоритм dijkstra и использую его для подтверждения данных двух узлов (например: Andrew_Card и Dick_Cheney) там нет существует путь между источником и пунктом назначения. Тем не менее, я нахожу , что моя программа убивается операционной системой.Запрос относительно алгоритма dijkstra
После отладки я обнаружил, что проблема может быть связана с распределением ресурсов в ОЗУ. Что касается алгоритма Дейкстры, если число узлов, п = 16375503, то требование пространства
n*n = 16,375,503 * 16,375,503 > 10^{14}.
Для выполнения этого алгоритма в памяти мы должны, по крайней мере
(10^{14} * 4)/(1024 * 1024 * 1024) = 10^5 GB (approximately equal)
of RAM.
Таким образом, это не можно найти кратчайший путь, используя dijkstra, если мы намерены хранить большой подключенный граф в памяти. Пожалуйста, исправьте меня, если я ошибаюсь, поскольку я застрял на этом с давних времен? Или, если может быть какая-то другая причина, которую я должен проверить, то, пожалуйста, укажите мне тоже.
Я реализовал программу в C++
No. ребер = 25.908.132
Сколько ребер имеет граф? – kraskevich
Количество ребер = 25,908,132 –
да, это очень большое число ... Но какая ошибка вы получаете. Кстати, вам нужно использовать отладчик в этом случае, чтобы узнать, что именно происходит ... – ravi