Module pacai.util.priorityQueue
Priority queue containers.
Classes
class PriorityQueue
-
Implements a priority queue data structure. Each inserted item has a priority associated with it, and the user is usually interested in quick retrieval of the lowest-priority item in the queue. This data structure allows O(1) access to the lowest-priority item.
Note that this PriorityQueue does not allow you to change the priority of an item. However, you may insert the same item multiple times with different priorities.
Expand source code
class PriorityQueue(object): """ Implements a priority queue data structure. Each inserted item has a priority associated with it, and the user is usually interested in quick retrieval of the lowest-priority item in the queue. This data structure allows O(1) access to the lowest-priority item. Note that this PriorityQueue does not allow you to change the priority of an item. However, you may insert the same item multiple times with different priorities. """ def __init__(self): self.heap = [] def push(self, item, priority): pair = (priority, item) heapq.heappush(self.heap, pair) def pop(self): (priority, item) = heapq.heappop(self.heap) return item def isEmpty(self): return len(self.heap) == 0 def __len__(self): return len(self.heap)
Subclasses
Methods
def isEmpty(self)
def pop(self)
def push(self, item, priority)
class PriorityQueueWithFunction (priorityFunction)
-
Implements a priority queue with the same push/pop signature of the Queue and the Stack classes. This is designed for drop-in replacement for those two classes. The caller has to provide a priority function, which extracts each item's priority.
priorityFunction (item) -> priority
Expand source code
class PriorityQueueWithFunction(PriorityQueue): """ Implements a priority queue with the same push/pop signature of the Queue and the Stack classes. This is designed for drop-in replacement for those two classes. The caller has to provide a priority function, which extracts each item's priority. """ def __init__(self, priorityFunction): """ priorityFunction (item) -> priority """ super().__init__() self.priorityFunction = priorityFunction def push(self, item): """ Adds an item to the queue with priority from the priority function """ super().push(item, self.priorityFunction(item)) def __len__(self): return len(self.heap)
Ancestors
Methods
def push(self, item)
-
Adds an item to the queue with priority from the priority function