Data_structure

(Data_Structure) Priority Queue

K_Hyul 2023. 12. 7. 19:32
728x90

Priority Queue는 각 요소가 특정 우선 순위를 가지고 있는 큐이다.

높은 우선순위를 가진 data가 낮은 우선 순위를 가진 data보다 먼저 처리된다.

 

Priority Queue의 ADT를 보면 

insert(): 우선순위 큐에 새로운 data를 추가

deleteMax() or deleteMin() : 우선순위가 가장 높은(낮은) 항목을 제거

getMax() or getMin(): 우선순위가 가장 높은(낮은) 항목을 return

isEmpty() : 비어있는지 확인

size() : 우선순위 큐에 저장된 data의 개수를 return

clear() : 우선순위 큐의 모든 data 제거

 

Priority Queue 같은 경우 작업 스케줄링, 그래프 알고리즘, 네트워크 라우팅 등에서 활용된다.

 

구현 방식으로는 이진 힙(Binary Heap), 이진 탐색 트리(Binary Search Tree),

피보나치 힙(Fibonacci Heap) 등 여러가지 구조를 사용하여 구현할 수 있다.

 

예시) sort하는 pseudocode이다.

Algorithm PQ-Sort(S,C)
  Input sequence S, Comparator C for the elements of S
  Output sequence S sorted in increasing order according to C
  P <- priority queue with comparator C
  while ¬S.empty()
    e <- S.front();S.eraseFront()
    P.insert(e,Φ)
  while ¬P.empty()
    e <- P.removeMin()
    S.insertBack(e)

 

728x90

'Data_structure' 카테고리의 다른 글

(Data_structure) Deque  (1) 2023.12.07
(Data_Structure) Vector  (2) 2023.12.07
(Data_structure) Queue  (1) 2023.12.07
(Data_Structure) BFS (Breadth-First Search)  (1) 2023.12.07
(Data_Structure) DFS (Depth-First Search)  (0) 2023.12.07