  Given a structure made up of n sites connected by b bars, the problem of
recognizing which subsets of sites form rigid units is not a trivial one,
because of the non-local character of rigidity in central-force systems. Even
though this is a very old problem of statics, no simple algorithms are
available for it so the most usual approach has been to solve the elastic
equations, which is very time-consuming for large systems. Recently an integer
algorithm was proposed for this problem in two dimensions, using matching
methods from graph theory and Laman's theorem for two-dimensional graphs. The
method is relatively simple, but its time complexity grows as $n^2$ in the
worst case, and almost as fast on practical cases, so that an improvement is
highly desirable. I describe here a further elaboration of that procedure,
which relies upon the description of the system as a collection of rigid bodies
connected by bars, instead of sites connected by bars. Sets of rigidly
connected objects are replaced by a unique body, and this is done recursively
as more rigid connections between bodies are discovered at larger scales. As a
consequence of this ``rescaling transformation'', our algorithm has much
improved average behavior, even when its worst-case complexity remains $n^2$.
The time complexity of the body-bar algorithm is found to scale as $n^{1.12}$
for the randomly diluted triangular lattice, while the original site-bar
version scales as $n^{1.9}$ on the same problem.
