데이터 세트의 두 노드 사이에서 최단 경로를 찾으려고합니다. 나는 dijkstra 알고리즘을 구현했으며 두 개의 노드 (예 : Andrew_Card 및 Dick_Cheney)가 있음을 증명하기 위해이를 사용하고 있습니다. 경로가 소스와 대상 사이에 존재하지 않습니다. 그러나, 나는 내 프로그램이 운영 체제에 의해 죽게되는 을 찾고 있습니다.dijkstra 알고리즘에 관한 질문
디버깅 후이 문제는 RAM에 할당 된 리소스와 관련이있는 것으로 나타났습니다. 다 익스트라 알고리즘에 관해서는, 노드의 수는 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를 사용하여 최단 경로를 찾을 수 있습니다. 오랫동안 내가 붙어있어서 내가 틀렸다고 정정 해 주시겠습니까? 또는 내가 점검해야 할 다른 가능한 이유가있을 수 있다면, 나도 그 점을 지적 해주십시오. 당신이 A*
같은 것을 사용하여 두 노드 사이 그냥 거리를해야하는 경우
C++로 가장자리의 번호 = 25908132
그래프에 몇 개의 가장자리가 있습니까? – kraskevich
가장자리 수 = 25,908,132 –
예. 매우 큰 숫자입니다 ...하지만 어떤 오류가 발생하고 있습니까? BTW 정확히 무슨 일이 일어나고 있는지 알게하려면 디버거를 사용해야합니다 ... – ravi