Let *h*(*x*) be a collision free function for *x* *G* (for example *h*
is a ``hash function''). Let
(*a*_{1},..., *a*_{r}) be a sequence with
*a*_{i} an integer not larger than
*n*_{i} = . We
compute the terms

(*g*_{i}^{ai};*a*_{1},..., *a*_{r};*h*(*g*_{i}^{ai}))

for all
One way to approach this algorithm given only a bound on the size of
the group *G* is to go inductively. First find a relation involving
*g*_{1} alone (in other words find the order of *g*_{1}) by using *L*_{1} = *L*.
For the remainder of the algorithm we put
*L*_{1} = *o*(*g*_{1}) as found in
this step. In the second iteration we work with *g*_{1} and *g*_{2} with
*L*_{2} = *L*/*L*_{1}. Iteratively, we would have computed *L*_{i} which is the
order of *g*_{i} in the group
*G*/ < *g*_{1},..., *g*_{i - 1} >. We now work with
*g*_{1}, ..., *g*_{i + 1} and take
*L*_{i + 1} = *L*/(*L*_{i}).
Using the above algorithm we obtain the order of *g*_{i + 1} in the
group
*G*/ < *g*_{1},..., *g*_{i} >. For the remainder of the iterations we take
*L*_{i + 1} to be this order. Thus, at the end we would have found a
*minimal* relation among the *g*_{i}'s rather than just one
relation.