A priority queue is essentially a list of items in which each item
has associated with it a priority. In general, different items may
have different priorities and we speak of one item having a higher
priority than another.
Given such a list we can determine which is the highest (or the lowest)
priority item in the list. Items are inserted into a priority queue in any,
arbitrary order. However, items are withdrawn from a priority queue in order
of their priorities starting with the highest priority item first.
For example, consider the software which manages a printer. In general, it
is possible for users to submit documents for printing much more quickly
than it is possible to print them. A simple solution is to place the
documents in a FIFO queue. In a sense this is fair, because the documents
are printed on a first-come, first-served basis.
However, a user who has submitted a short document for printing will
experience a long delay when much longer documents are already in the queue.
An alternative solution is to use a priority queue in which the shorter a
document, the higher its priority. By printing the shortest documents first,
we reduce the level of frustration experienced by the users. In fact, it can
be shown that printing documents in order of their length minimizes the
average time a user waits for her document.
Priority queues are often used in the implementation of algorithms.
Typically the problem to be solved consists of a number of sub-tasks and the
solution strategy involves prioritizing the sub-tasks and then performing
those sub-tasks in the order of their priorities.

No comments:
Post a Comment
Note: Only a member of this blog may post a comment.