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