Priority Queue / Heap: 우선순위 큐
Priority Queue / Heap, Priority Queue, Heap, 우선순위 큐, 힙, binary heap
정의
Priority Queue 는 우선순위가 가장 높은 원소를 O(log N) 에 pop 할 수 있는 자료구조입니다. Binary Heap 이 표준 구현.
Max-heap: 부모 >= 자식. Min-heap: 부모 <= 자식.
연산:
- push: O(log N)
- top/pop: O(1) / O(log N)
- build_heap: O(N) (heapify)
배열 표현
노드 i 의 부모 = (i-1)/2, 자식 = 2i+1, 2i+2.
priority_queue<int> pq; // max-heap
priority_queue<int, vector<int>, greater<>> mn; // min-heap
응용
- Dijkstra 최단 경로 (min-heap 으로 다음 정점 선택)
- Median of Stream (두 heap)
- Top K
- Huffman coding
- Event simulation
변형
- Fibonacci Heap: decrease-key O(1) amortized, 실전 상수 커서 잘 안 씀
- Pairing Heap: 구현 단순, 실전 성능 양호
- Binomial Heap: merge 가 O(log N)
참고
이 글의 용어 (3개)
- 다익스트라 알고리즘 (Dijkstra's Algorithm)algorithm
- 정의 다익스트라 알고리즘 (Dijkstra's Algorithm) 은 음이 아닌 가중치 그래프에서 단일 시작점 s 로부터 모든 정점까지의 최단 거리를 찾는 그리디 알고리즘. Ed…
- Median of Stream: 두 힙으로 중앙값 유지algorithm
- 정의 스트림으로 들어오는 정수의 중앙값을 O(log N) 에 유지하는 문제. 두 힙 트릭 - Max-heap : 아래 절반 - Min-heap : 위 절반 - 크기 차 <= 1 …
- Top K Selection: 상위 K개 원소algorithm
- 정의 배열 또는 스트림에서 상위 K 개 원소를 뽑는 문제. 접근 방법 1. 정렬 후 자르기 O(N log N). K 가 작을 때 낭비 심함. 2. Min-Heap (크기 K) O…
💬 댓글