๐Ÿ“š 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. ๋งŒ์•ฝ ์ž์‹ ๋…ธ๋“œ ์šฐ์„ ์ˆœ์œ„๊ฐ€ ๋†’๋‹ค๋ฉด ์™ผ์ชฝ ์˜ค๋ฅธ์ชฝ ์ž์‹ ์ค‘ ๊ฐ€์žฅ ์šฐ์„ ์ˆœ์œ„๊ฐ€ ๋†’์€ ๋…ธ๋“œ์™€ ๊ตํ™˜
      3. ํž™ ์†์„ฑ์ด ์œ ์ง€๋  ๋•Œ๊นŒ์ง€ 1,2๋ฒˆ ๊ณผ์ •์„ ๋ฐ˜๋ณต
  • dequeue()
    • ์šฐ์„ ์ˆœ์œ„ ํ(์ตœ๋Œ€ ํž™)์— ์ตœ๋Œ€ ์šฐ์„ ์ˆœ์œ„ ์š”์†Œ๋ฅผ ์‚ญ์ œํ•˜๊ณ  ๊ทธ ๊ฐ’์„ ๋ฐ˜ํ™˜ํ•˜๋Š” ์ž‘์—…

์šฐ์„ ์ˆœ์œ„ ํ์˜ ์‚ฌ์šฉ์‚ฌ๋ก€

  1. CPU ์Šค์ผ€์ค„๋ง
  2. Dijkstra's shortest path algorithm, Prim's Mininum Spanning tree
  3. ์šฐ์„ ์ˆœ์œ„๋ฅผ ํฌํ•จํ•œ ๋ชจ๋“  queue ์‘์šฉ
๋ฐ˜์‘ํ˜•