Introduction
a data structure that implement a efficient priority queue.
operations
INSERT
Adding a new element s with a key k(s) to S.
EXTRACT-MIN
Returning a element s of S having minimal key and removing s from S
DECREASE-KEY
Replacing the value of a key of some element s by a new, smaller value.
Classical problem on priority queue
Single-source shortest paths problem
the classical solution for this problem is Dijkstra's algorithm. The algorithm is:
- Maintain a priority queue containing some subset S of vertices of G with keys K. Initially, S = V, k(s) = 0, and k(v) = +infinite
- As long as S is nonempty:
Extract a vertex u from S with minimum key.
For each out-neighbor v IN S of u, we update the key(v) to be min {k(v),k(u)+e(u,v)}
Minimum Spanning Tree problem
Prim's algorithm is very similar to the approach of Dijkstra's algorithm for single source shortest path problem.
- Maintain a priority queue containing some subset S of vertices of G with k(v) and a tree T spanning V. Initially, T = empty, S = V , and K(s) = 0 for some arbitrary vertex s,and k(v) = +infinite for v!=s
- As long as S is nonempty,
Extract a vertex u from S with minimum key. If u!=s, add to T the corresponding edge
For each neighbor v IN S of u, we update k(v) = min(k(v),w(u,v))