우선순위 큐에 대하여 배워보았으니 이제 우선순위 큐를 어디에 사용하고 어떻게 응용하는 지에 대하여 알아보겠습니다.
힙 정렬(heap sort)
힙 정렬(heap sort)은 히프를 사용하는 정렬 알고리즘입니다.
먼저 정렬할 요소들을 최대 히프에 삽입하고 히프에서 하나씩 요소를 삭제하여 저장하면 정렬이 되는 방식입니다.
힙 정렬이 가장 유용한 경우는 가장 큰 값이 몇 개만 필요한 경우입니다.
힙 정렬 알고리즘
최대 히프에서의 삽입과 삭제 연산은 아래 포스팅에 자세히 설명되어 있으니 참고하시기 바랍니다.
[자료구조] 우선순위 큐 (priority queue), 히프의 삽입과 삭제
우선순위 큐 (priority queue) 우선순위 큐는 우선순위를 가진 항목들을 저장하는 큐입니다. 일반적으로 큐는 선입선출(FIFO)기반의 자료구조로 알려져있는데 우선순위 큐는 우선순위가 높은 데이터
yjg-lab.tistory.com
머신 스케줄링 (Machine Scheduling)
만약 어떤 작업을 처리하는 기계가 m개 존재하고 처리할 작업이 n개 존재한다고 합시다. 이 m개의 기계들로 최소의 시간안에 작업들을 모두 끝내야만 합니다. 이 문제에 대해 최적의 해를 구하는 것은 매우 어렵지만 근사 해는 우선순위 큐를 활용하여 쉽게 찾을 수 있습니다.
그러한 방법 중 하나가 가장 긴 작업을 우선적으로 기계에 할당하는 LPT(Longest Processing Time first)방식입니다.
LPT(Longest Processing Time first)
맨 위의 표 J1 ~ J7은 각 작업의 기계 사용 시간입니다.
최소 히프는 모든 기계의 종료시간을 저장하고 있습니다. 작업 전 초기에는 모든 기계의 종료시간이 0이며, 히프에서 최소 종료시간을 가지는 기계를 삭제하여 작업을 할당합니다. 그리고 선택된 기계의 종료시간을 업데이트하여 다시 히프에 저장합니다.
최소 히프에서 기계를 꺼내서 작업을 할당하고 사용가능 시간을 증가 시킨 후에 다시 최소 히프에 추가합니다.