Dijkstra의 우선 순위 큐를 최소 힙으로 구현하는 것이 가장 좋은 경우는 언제 일반 배열을 사용하는 것이 더 좋습니까?Min Heap 대 Priority queue의 일반 배열 구현
하나는 실행 시간이 O(V^2 + E)
이고 다른 하나는 O((V+E)logV)
입니다. V< E
, O(V^2 + E)= O(E^2)
및 O((V+E)logV) = O(ElogV)
그래서 힙 구현이 보인다 때 E< V
다음 O(V^2+E) = O(V^2)
는 그것이 더 이상 O((V+E)logV)=O(2VlogV)=O(VlogV)
때 다시 더 좋을 수 있습니다.
또한 공간 복잡성도 동일합니다. 즉 O(n)
입니다.
Dijkstra 's에서 최소 우선 순위 큐의 간단한 배열 구현이 더 좋지만 대소 문자를 생각할 수없는 경우가 있다고 가정합니다.
우선 순위 큐를 "일반 배열"로 구현하는 것이 가장 좋은 때를 생각할 수 없습니다. 방법에 관계없이 O (1) 삽입 또는 O (1) 제거가 있습니다. 그리고 대기열 크기가 3 개 항목 일 때도 큰 차이가 있습니다. 이진 최소 힙을 사용하십시오. –
위의 내용은 O (1) 삽입 및 O (n) 제거 또는 O (1) 제거 및 O (n) 삽입 중 하나를 수행한다는 것을 의미합니다. 어느 쪽이든, 차선책이 될 것입니다. –