Python의 우선 순위 대기열 비교기

Abid Ullah 2023년6월21일
  1. Python의 우선순위 큐
  2. Python의 우선 순위 대기열 사용자 지정 비교기
  3. Python에서 목록을 사용하는 우선 순위 대기열
  4. Python에서 heapdict 모듈을 사용하는 우선 순위 큐
Python의 우선 순위 대기열 비교기

이 기사에서는 Python을 사용하여 사용자 지정 우선 순위 큐를 개발하는 방법을 살펴봅니다. 그 외에도 우선 순위 대기열과 함께 사용자 지정 비교기 기능을 활용하는 방법도 배웁니다.

Python의 우선순위 큐

우선 순위 대기열은 특정 우선 순위를 가진 항목을 저장할 수 있는 데이터 구조입니다. 그런 다음 우선 순위 대기열은 우선 순위가 가장 높은 항목이 대기열의 맨 위에 오도록 항목을 정렬합니다.

우선 순위 대기열은 우선 순위에 따라 항목을 처리해야 하는 알고리즘에서 자주 사용됩니다. 작업 목록을 처리하고 있다고 가정합니다. 가장 중요한 작업을 먼저 처리하고 싶을 것입니다.

우선순위 큐를 사용하여 이를 수행할 수 있습니다.

Python의 우선 순위 대기열 사용자 지정 비교기

Python의 내장 모듈 queue는 우선 순위 큐 구현을 제공합니다. 그러나 이 모듈은 우선 순위 대기열에 대한 사용자 정의 비교기를 지정할 수 없습니다.

우선 순위 대기열에 기본 순서와 다른 순서를 사용하려는 경우 문제가 될 수 있습니다.

다행스럽게도 Python 우선 순위 큐에 대한 사용자 지정 비교기를 만드는 방법이 있습니다. 이 기사에서는 이를 수행하는 방법을 살펴보겠습니다.

우선순위 큐의 두 가지 예를 살펴볼 것입니다.

  1. 파이썬에서 리스트를 이용한 우선순위 큐
  2. Python의 heapdict 모듈을 사용한 우선 순위 큐

Python에서 목록을 사용하는 우선 순위 대기열

시작하려면 빈 목록을 만듭니다. 그런 다음 중요한 순서대로 각 사람의 이름을 목록에 추가합니다.

우리는 1에서 시작하여 상승으로 이동합니다. 따라서 각 이름에는 번호가 할당되어 목록의 우선 순위로 사용됩니다.

우선 순위는 작업이 완료될 때 수행될 순서를 설정하는 정수입니다.

코드를 사용하여 완료해 봅시다. 먼저 이름이라는 목록을 만듭니다.

이 목록은 처음에는 비어 있습니다. 아래 코드를 참조하십시오.

names = []

이제 목록에 이름을 추가하기 위해 list 기능에서 쉽게 액세스할 수 있는 append 방법을 사용합니다. append 메소드에는 두 개의 인수를 보내야 합니다.

목록에 번호를 추가하여 우선 순위, 번호, 이름 또는 기타 항목을 나타냅니다. 우리의 목적을 위해 우리는 Abid라는 이름이 목록의 position1에 나타나기를 원할 것입니다.

names.append((1, "Abid"))

추가할 수 있는 이름이나 항목의 수에는 제한이 없으며 색인 번호는 우선 순위를 나타냅니다.

예제 코드:

names.append((1, "Abid"))
names.append((4, "Jesica"))
names.sort(reverse=True)
names.append((3, "Anna"))
names.sort(reverse=True)
names.append((2, "Pat"))

여기서 while 루프를 사용하면 names 목록 레코드가 출력됩니다.

while names:
    print(names.pop())

이전에 만든 것과 동일한 코드입니다. 그것을 복사하고 실행하여 결과를 확인하십시오.

names = []
names.append((1, "Abid"))
names.append((4, "Jesica"))
names.sort(reverse=True)
names.append((3, "Anna"))
names.sort(reverse=True)
names.append((2, "Pat"))
names.sort(reverse=True)
while names:
    print(names.pop())

출력:

(1, 'Abid')
(2, 'Pat')
(3, 'Anna')
(4, 'Jesica')

코드 실행 결과입니다. 각 이름이 우리가 제공한 우선 순위와 색인에 따라 정렬되어 있음을 명확하게 볼 수 있습니다.

Python에서 heapdict 모듈을 사용하는 우선 순위 큐

힙을 기반으로 하는 우선 순위 큐는 heapdict Python 모듈을 통해 액세스할 수 있습니다. 일반 heapq 모듈과 비슷하지만 더 다양한 기능과 적응성을 제공합니다.

바이너리 힙은 heapdict 데이터 구조의 기초입니다. 이진 힙은 해당 데이터의 효율적인 검색 및 변경을 용이하게 하는 방식으로 데이터를 저장하는 데 사용할 수 있는 데이터 구조입니다.

이진 힙은 트리의 모든 노드에 두 개의 자손이 있고 트리 자체가 항상 균형을 이루고 있음을 나타내는 완전한 이진 트리입니다.

HeapDictHeapQueueheapdict 모듈에서 사용할 수 있는 두 가지 기본 클래스입니다. heapdict 클래스는 사전과 유사하게 기능하며 해당 내용을 힙에 보관합니다.

힙은 HeapQueue라는 대기열과 유사한 클래스에서 관리하는 정보를 보유하는 데 사용됩니다. HeapDictHeapQueue 클래스는 dict 클래스의 기본 제공 하위 클래스입니다.

그들은 dict의 모든 메서드를 사용하고 그들이 상속하는 힙과 상호 작용하는 방법을 제공합니다.

heapdict 모듈은 자동으로 설치되지 않습니다. heapdict를 구성하려면 아래에 표시된 명령을 사용해야 합니다.

pip install heapdict

heapdict 라이브러리의 설치가 완료되면 우선순위 큐를 구현하는 과정에서 이를 사용할 준비가 되었습니다.

  1. 첫 번째 단계는 heapdict 라이브러리를 가져오는 것입니다.
  2. heapdict 함수를 호출하는 데 사용할 변수를 만들고 우선순위에 대해 변수를 계속 사용합니다.
  3. 이 시점에서 우리는 이전에 개발한 기능을 사용하여 각 작업에 우선 순위를 할당합니다.
  4. while 루프를 활용합니다.
  5. 변수를 인쇄하여 결과를 표시합니다.

전체 코드는 다음 형식으로 작성할 수 있습니다.

import heapdict

tasks = heapdict.heapdict()
tasks["Breakfast"] = 3
tasks["Wake up"] = 1
tasks["Get ready for work"] = 4
tasks["Exercise"] = 2
while tasks:
    print(tasks.popitem())

출력:

('Wake up', 1)
('Exercise', 2)
('Breakfast', 3)
('Get ready for work', 4)

코드의 출력은 코드의 다양한 작업에 할당된 우선 순위에 따라 코드가 올바르게 작동하고 있음을 보여줍니다. 우리 활동의 출력은 동일한 순서를 따르고 적절한 우선 순위를 나타냅니다.

이 기사에서는 목록을 활용하여 우선순위 대기열을 구축하는 방법을 설명했습니다. 그 외에도 Python에서 사용자 지정 우선순위 대기열을 생성하는 데 필요한 단계를 거쳤습니다.

우리는 이제 우선 순위 대기열을 사용하여 사용자 정의 비교기 기능을 구현하는 방법을 알고 있습니다.

이 기사가 Python에서 사용자 지정 우선 순위 대기열을 만드는 방법을 이해하는 데 도움이 되기를 바랍니다.

작가: Abid Ullah
Abid Ullah avatar Abid Ullah avatar

My name is Abid Ullah, and I am a software engineer. I love writing articles on programming, and my favorite topics are Python, PHP, JavaScript, and Linux. I tend to provide solutions to people in programming problems through my articles. I believe that I can bring a lot to you with my skills, experience, and qualification in technical writing.

LinkedIn