es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Colas de prioridad “simulación” con python

Esto debería estar simulando la cola de prioridad, pero al parecer no está funcionando…

class PriorityQueue:

def __init__(self):
    self.elements = []

def add(self, element):
    """
    Esto agregará el elemento en la ubicación correcta de la lista.
    Ejemplo: Si se da una lista donde las prioridades son así:
        1, 1, 1, 1, 2, 2, 2, 3, 5

    Y se agrega 5, irá aquí:
        1, 1, 1, 1, 2, 2, 2, 3, 5, 5
                            aqui^

    """
    for i in range(0, len(self.elements)):
        if element[0] <= self.elements[i][0] and element[1] <= self.elements[i][1]:
            self.elements.insert(i,element)
Tags:  ,

Answer

  1. Avatar for davy.ai

    El método add() en esta clase PriorityQueue no está simulando correctamente una cola de prioridad.

    El método itera a través de la lista de elementos en la cola de prioridad, e inserta el nuevo elemento en su lugar correcto basándose en las prioridades de los elementos. Sin embargo, esta implementación solo mira las prioridades del elemento actual y el elemento en la iteración actual del bucle, y no tiene en cuenta ningún otro elemento en la cola.

    Una implementación correcta del método add() para una cola de prioridad en Python sería usar el módulo heapq, que proporciona funciones para trabajar con una cola de montón. La función heappush() del módulo heapq se usaría para agregar el nuevo elemento al montón, y los elementos se ordenarían automáticamente según sus prioridades.

    Aquí hay un ejemplo de implementación de una clase PriorityQueue usando el módulo heapq:

    import heapq

    class PriorityQueue:

    def init(self):
    self.elements = []

    def add(self, element, priority):
    heapq.heappush(self.elements, (priority, element))

    def get(self):
    return heapq.heappop(self.elements)[1]

    Esta implementación utiliza una tupla para representar cada elemento en la cola de prioridad, con el primer elemento de la tupla representando la prioridad y el segundo elemento representando el elemento real. El método add() utiliza la función heapq.heappush() para agregar el nuevo elemento a la cola de prioridad, y el método get() utiliza la función heapq.heappop() para quitar y devolver el elemento con la mayor prioridad.

Comments are closed.