더북(TheBook)

3. pop( ) -> element

: 큐에서 키 값이 가장 작은 요소를 삭제하며 반환

4. min( ) -> element

: 큐에서 키 값이 가장 작은 요소를 반환

5. decrease_key(item, new_key)

: 큐에 있는 요소 item의 키를 값이 줄어든 new_key 값으로 수정

최소 우선순위 큐에서 대부분의 연산을 최소 힙이 제공하는 연산으로 구현할 수 있지만 5번 연산인 decrease_key는 지금까지 공부한 내용으로는 아직 구현할 수 없습니다. 하지만 다음 장에서 알아볼 프림 알고리즘이나 데이크스트라 알고리즘에서 필요한 연산입니다. 이 절에서는 파이썬의 heapq 모듈을 이용한 구현에 좀 더 주력하고 decrease_key 연산은 프림 알고리즘을 공부할 때 구현하도록 하겠습니다.

파이썬의 heapq 모듈은 우선순위 큐를 구현하기 위한 힙의 구현을 제공합니다. 그 대신 최소 힙만 제공합니다. 또 인덱스를 1번부터 사용했던 이전 예제와는 달리 0번부터 시작합니다. 그래서 루트가 0번 인덱스이지요. 이 점만 유의하면 됩니다. 이번 예제에서는 요소 클래스 Element에 키와 함께 문자열 데이터를 담아 보겠습니다.

그럼 최소 우선순위 큐를 구현한 코드를 살펴보겠습니다.2

 

 


2 코드 11- 6~코드 11-7은 min_priority_queue.py 파일에 있습니다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.