cosgenio   2년 전

노드는 간선들을 가지고 있고, 이러한 노드를 저장하는 vector를 만들었습니다

시작 점을 큐에 넣고 가리키는 노드들을 순회하면서 순회 안된거면 거리 갱신 진행하고 큐에 넣고, 순회 된거면 패스하고, 다 하면 큐에서 빼는 식으로 계산하는데 자꾸 시간 초과가 나오네요

이유좀 알려주세요 ㅠㅠ

djm03178   2년 전

다익스트라는 큐에서 뽑을 때 현재까지 거리가 최단인 정점을 뽑아야 합니다. 일반적인 큐로는 달성할 수 없으며, 우선순위 큐를 써야 하는 이유가 그것입니다.

일반 큐를 쓰는 기법도 존재하지만 그건 다익스트라라고 부르지 않으며 SPFA라는 별도의 이름이 있습니다. 그러나 SPFA가 되려면 어떤 정점이 큐에 이미 들어가 있다면 다시 큐에 넣지 않아야 할 뿐만 아니라, 평균적인 경우에서 빠를 뿐 최악의 케이스에서는 매우 느리고 이 문제 역시 저격 데이터가 들어가 있어 통과될 수 없습니다.

cosgenio   2년 전

아아 맞네요! 감사합니다

댓글을 작성하려면 로그인해야 합니다.