Exemplo de fila de prioridade do Python

Exemplo de fila de prioridade do Python
O Python é uma das linguagens de programação mais prevalecentes e amplamente usadas. Como outras linguagens de programação, ele fornece muitas funções e bibliotecas que podem ser usadas para implementar as estruturas de dados básicas. A fila é uma estrutura de dados muito importante; No entanto, sua funcionalidade pode diferir dependendo de como é implementada. Uma das funcionalidades mais cruciais de uma fila é uma fila de prioridade. Neste artigo, aprenderemos o que é uma fila de prioridade e dê uma olhada nas diferentes implementações de uma fila de prioridade no Python.

O que é uma fila de prioridade?

Como diz o nome, uma fila prioritária é uma fila que é programada para funcionar de acordo com a ordem especificada. Se falarmos sobre uma fila simples, ela funciona na ordem “FIFO (primeiro a sair)”, eu.e., O elemento inserido na fila primeiro também será extraído primeiro. No entanto, às vezes, podemos não querer que nossa fila funcione dessa maneira; Pelo contrário, podemos querer que ele siga algum outro pedido especificado. É aqui que as filas de prioridade entram em jogo, o que nos permite extrair os elementos de uma fila na ordem de nossa escolha. Você poderá aprender mais sobre o uso deles, passando por suas diferentes implementações discutidas abaixo:

Métodos de implementação de fila de prioridade em Python:

Podemos usar três métodos diferentes para implementar as filas de prioridade em Python, eu.e., Usando uma lista, o módulo PriorityQueue e o módulo HEAPQ. Discutiremos todos os três métodos, um por um com a ajuda de exemplos relevantes; No entanto, os dados básicos que usaremos para todos esses exemplos permanecerão os mesmos, para que você possa comparar facilmente esses diferentes métodos de implementação.

Nota: Para implementar todos esses exemplos no Python, usamos a ferramenta Spyder com o Sistema Operacional do Windows 10.

Método 1: Usando uma lista em Python:

Neste exemplo, desejamos implementar uma fila de prioridade que imprimirá os nomes dos funcionários e seus IDs na ordem decrescente de seus IDs, eu.e., O nome do funcionário com o mais alto identificação de funcionários será impresso primeiro e assim por diante. Para ter essa implementação, você pode dar uma olhada no seguinte código:

Neste código, declaramos primeiro uma lista chamada "funcionários". Depois de declarar esta lista, tentaremos inserir os dados de alguns funcionários, eu.e., ID de identificação e nome do funcionário desta lista com a ajuda da função "Anexo" interno de listas em Python. No entanto, atribuiremos os IDs a esses funcionários em ordem aleatória durante a inserção para que possamos visualizar facilmente como essa lista é classificada na saída.

Sempre que desejamos implementar uma fila de prioridade usando uma lista no Python, temos que classificar a lista em ordem ascendente ou decrescente (dependendo dos requisitos) após cada inserção para atuar como uma fila de prioridade. Neste exemplo, como queríamos imprimir os funcionários na ordem decrescente de seus IDs, classificamos a lista em ordem descendente após cada inserção usando a função "Sort (reverse = true)", exceto pela primeira inserção. Não chamamos o método "Sort ()" após a primeira inserção, porque só tínhamos um único elemento em nossa lista naquele momento. Por fim, depois de inserir todos os elementos, usamos um loop "while" na lista de funcionários e imprimimos os funcionários usando a função "pop" do Python. Depois disso, salvamos nosso código e o executamos dentro do spyder ide.

O resultado desta implementação da fila de prioridade em Python é a seguinte. Você pode ver facilmente que os funcionários são impressos em ordem decrescente de seus IDs.

Método 2: Usando o módulo PriorityQueue em Python:

O módulo PriorityQueue é uma função interna da classe "fila" em Python. Neste exemplo, queremos imprimir os nomes dos funcionários na ordem ascendente de seus IDs, eu.e., O funcionário com a menor identificação do funcionário será impressa primeiro e assim por diante, independentemente da ordem de sua inserção. Para ter uma fila prioritária implementada dessa maneira, você precisará dar uma olhada no código Python mostrado abaixo:

Neste código, primeiro importamos o módulo PriorityQueue da classe Python "fila" para implementar facilmente nossa fila de prioridade. Em seguida, temos uma lista de funcionários que equivamos à função "PriorityQueue" para operar na lista de funcionários facilmente. Depois disso, usamos a função "put" interna do Python para inserir alguns dados dos funcionários na lista dos funcionários. Em seguida, temos um loop de “tempo” que irá iterar através da lista dos funcionários e imprimir os funcionários na ordem ascendente de seus IDs enquanto usam a função “Get”, pois o módulo PriorityQueue é programado para imprimir as listas em ordem crescente por padrão.

O resultado desta implementação da fila de prioridade em Python é a seguinte. Você pode ver facilmente que os funcionários são impressos na ordem ascendente de seus IDs.

Método # 3: Usando o módulo HEAPQ em Python:

O HEAPQ é mais um módulo interno de python que pode ser usado para implementar filas prioritárias. Como o método nº 2, queremos imprimir os funcionários na ordem ascendente de seus IDs para este exemplo. O código para esta implementação da fila de prioridade no Python pode ser visto na imagem mostrada abaixo:

Neste código, primeiro importamos o módulo "HEAPQ" do Python para usar convenientemente as funções associadas a ele para inserir e imprimir os dados de nossa fila de prioridade. Depois disso, declaramos uma lista de funcionários. Em seguida, inserimos alguns registros em ordem aleatória usando o “Heapq.HEAPPUSH () ”Função do módulo“ HEAPQ ”na lista de funcionários. Então, simplesmente temos um loop de "tempo" que deve iterar na lista de funcionários e imprimir os funcionários na ordem ascendente de seus IDs enquanto usam o “heapq.função heappop () ”, pois o módulo“ heapq ”está programado para imprimir as listas em ordem ascendente por padrão. Este módulo também pode ser programado para imprimir as listas em ordem decrescente; No entanto, está além do escopo deste exemplo.

O resultado desta implementação da fila de prioridade em Python é a seguinte. Você pode ver facilmente que os funcionários são impressos na ordem ascendente de seus IDs.

Conclusão:

Neste artigo, nosso foco principal estava nas filas de prioridade em Python. Nós o apresentamos brevemente ao conceito de filas de prioridade em Python. Depois de construir uma boa compreensão desse conceito, compartilhamos as três implementações diferentes de filas prioritárias em Python no Windows 10. Depois de entender todas essas três implementações, você pode escolher uma delas para implementar sua fila de prioridade, dependendo se você deseja seguir uma ordem ascendente ou uma ordem decrescente.