|
 |
 |
 |
 |
 |
 |
 |
 |
 |
 |
 |
 |
 |
| • |
We
know a node in rank-
|
|
|
|
group
g pays less than
|
|
|
|
tower(g)
credits
|
|
|
|
– |
It
actually pays at most
|
|
|
|
tower(g)-tower(g-1)
credits
|
|
|
| • |
Further,
we know there are
|
|
|
at
most n/tower(g) nodes in
|
|
|
|
rank-group
g
|
|
|
| • |
Thus,
each rank-group pays
|
|
|
at
most n credits
|
|
|
|
 |
 |
 |
 |
 |
 |
 |
 |
 |
 |
 |
 |
 |
 |
 |
| • |
Note
that there are log*n
|
|
|
|
different
rank groups
|
|
|
| • |
Thus,
the nodes pay at most
|
|
|
n
log* n credits
|
|
|
| • |
We
now know that the
|
|
|
number
of credits paid is
|
|
|
|
less
than the number of
|
|
|
|
credits
charged
|
|
|
|
– |
The
proof is complete
|
|
|
|
– |
Total
time for n Union/Find
|
|
|
|
operations
starting from
|
|
|
|
singletons
is O(n log*n)
|
|
|
|