A radix heap is a data structure for realizing the operations of a monotone priority queue. A set of elements to which a key is assigned can then be managed. The run time of the operations depends on the difference between the largest and smallest key or constant. The data structure consists mainly of a series of buckets, the size of which increases exponentially.
\le
The three most important fields are:
b
B:=\lfloorlog(C+1)\rfloor+1
u
B+1
bNum
x
The above diagram shows the data structure. The following invariants apply:
u[i]\le
b[i]<u[i+1]
b[i]
u[i+1]
u[i]
u[0]=0,u[1]=u[0]+1,u[B]=infty
0\leu[i+1]-u[i]\le2i-1
i=1,\ldots,B-1
It is important to note the exponential growth of the limits (and thus the range that a bucket holds). In this way the logarithmic dependence of the field quantities is of value C, the maximum difference between two key values.
During initialization, empty buckets are generated and the lower bounds
u
O(B)
During insert, a new element
x
k(x)
u[i]\gek(x)
O(B)
For decrease-key, first the key value is decreased (checking for compliance with the invariants). Then, the
bNum
O(1)
The extract-min operation removes an element from bucket
b[0]
b[0]
k
u[0]
b[i]
O(1)
If displayed, the field
bNum