๐ Computer Science/Data Structure
[์๋ฃ๊ตฌ์กฐ] ์ฐ์ ์์ ํ(Priority Queue)
hyebin (Helia)
2023. 3. 13. 15:58
๋ฐ์ํ
์ฐ์ ์์ ํ(Priority)
- ์์์ ์๊ด์์ด ์ฐ์ ์์๊ฐ ๋์ ๋ฐ์ดํฐ๊ฐ ๋จผ์ ๋๊ฐ๋ ํํ์ ์๋ฃ๊ตฌ์กฐ
- ์ฐ์ ์์ ๋๊ธฐ์ด์ด๋ผ๊ณ ๋ ํจ
- ๋๊ธฐ์ด์์ ์ฐ์ ์์๊ฐ ๋์ ์์๊ฐ ์ฐ์ ์์๊ฐ ๋ฎ์ ์์๋ณด๋ค ๋จผ์ ์ ๊ณต๋๋ ์๋ฃ๊ตฌ์กฐ
- ์ผ๋ฐ์ ์ผ๋ก ํ(Heap)์ ์ฌ์ฉํ์ฌ ๊ตฌํ
- ๋ชจ๋ ํญ๋ชฉ์๋ ์ฐ์ ์์๊ฐ ์์
- ์ฐ์ ์์๊ฐ ๋์ ์์๋ ์ฐ์ ์์๊ฐ ๋ฎ์ ์์๋ณด๋ค ๋จผ์ ํ์์ ์ ์ธ
- ๋ ์์์ ์ฐ์ ์์๊ฐ ๊ฐ์ ๊ฒฝ์ฐ ํ์ ์์์ ๋ฐ๋ผ ์ ๊ณต
์ฐ์ ์์ ํ ๊ตฌํ ๋ฐฉ๋ฒ
- ๋ฐฐ์ด, ์ฐ๊ฒฐ๋ฆฌ์คํธ, ํ์ ์ด์ฉํ์ฌ ๊ตฌํ ๊ฐ๋ฅ
๊ตฌํ ๋ฐฉ๋ฒ | ์ฝ์ (enqueue) | ์ญ์ (denqueue) |
๋ฐฐ์ด (unsorted array) | O(1) | O(N) |
์ฐ๊ฒฐ ๋ฆฌ์คํธ (unsorted linked list) | O(1) | O(N) |
์ ๋ ฌ๋ ๋ฐฐ์ด (sorted array) | O(N) | O(1) |
์ ๋ ฌ๋ ์ฐ๊ฒฐ ๋ฆฌ์คํธ (sorted linked list) | O(N) | O(1) |
ํ (heap) | O(logN) | O(logN) |
์ฐ์ ์์ ํ ADT
๊ฐ์ฒด
- ์ฐ์ ์์๋ฅผ ๊ฐ์ง ์์๋ค์ ๋ชจ์
์ฐ์ฐ
- insert(x) : ์ฐ์ ์์ ํ์ ์์ x ์ถ๊ฐ
- remove() : ์ฐ์ ์์ ํ์์ ๊ฐ์ฅ ์ฐ์ ์์๊ฐ ๋์ ์์๋ฅผ ์ญ์ ํ๊ณ ๋ฐํ
- find() : ์ฐ์ ์์ ํ์์ ๊ฐ์ฅ ์ฐ์ ์์๊ฐ ๋์ ์์๋ฅผ ๋ฐํ
์ฐ์ ์์ ํ์ ๋์
- peek()
- ์ฐ์ ์์ ํ์์ ์ต๋ ์ฐ์ ์์ ๊ฐ์ ๋ฐํ
- ์ต๋ ์ฐ์ ์์ ๊ฐ(์ต๋ ํ)์ ํญ์ ๋ฃจํธ์ ์์ผ๋ฏ๋ก ๋ฃจํธ ๊ฐ์ ๋ฐํ
- enqueue()
- ์ฐ์ ์์ ํ(์ต๋ ํ)์ ์์๋ฅผ ์ฝ์
- heapify()
- ํ ์์ฑ์ ์ ์งํ๋ฉฐ, ์์์ ์๋๋ก ๋ด๋ ค๊ฐ๋ฉด์ ์์
- ์์ ๋ ธ๋์ ์ฐ์ ์์๋ฅผ ๋น๊ต
- ๋ง์ฝ ์์ ๋ ธ๋ ์ฐ์ ์์๊ฐ ๋๋ค๋ฉด ์ผ์ชฝ ์ค๋ฅธ์ชฝ ์์ ์ค ๊ฐ์ฅ ์ฐ์ ์์๊ฐ ๋์ ๋ ธ๋์ ๊ตํ
- ํ ์์ฑ์ด ์ ์ง๋ ๋๊น์ง 1,2๋ฒ ๊ณผ์ ์ ๋ฐ๋ณต
- ํ ์์ฑ์ ์ ์งํ๋ฉฐ, ์์์ ์๋๋ก ๋ด๋ ค๊ฐ๋ฉด์ ์์
- dequeue()
- ์ฐ์ ์์ ํ(์ต๋ ํ)์ ์ต๋ ์ฐ์ ์์ ์์๋ฅผ ์ญ์ ํ๊ณ ๊ทธ ๊ฐ์ ๋ฐํํ๋ ์์
์ฐ์ ์์ ํ์ ์ฌ์ฉ์ฌ๋ก
- CPU ์ค์ผ์ค๋ง
- Dijkstra's shortest path algorithm, Prim's Mininum Spanning tree
- ์ฐ์ ์์๋ฅผ ํฌํจํ ๋ชจ๋ queue ์์ฉ
๋ฐ์ํ