Pollard's kangaroo algorithm

This is an old revision of this page, as edited by Luke Maurits (talk | contribs) at 04:30, 25 August 2007 (Attempted to tidy up the formatting a bit. Could still use some work, I'll have to figure out how to fix the size of maths. All previous edits, incidentally, are mine - my login expried overnight!). The present address (URL) is a permanent link to this revision, which may differ significantly from the current revision.

In mathematics, specifically computational number theory and computational algebra, Pollard's lambda algorithm (aka Pollard's kangaroo algorithm, see Naming below) is an algorithm for solving the discrete logarithm problem. The algorithm was introducted in 1978 by the accomplished number theorist J. M. Pollard, in the same paper [1] as his better-known rho algorithm for solving the same problem. Although Pollard described the application of his algorithm to the discrete logarithm problem in the multiplicative group of units modulo a prime , the algorithm is in fact a generic discrete logarithm algorithm - it will work in finite cyclic group.

The algorithm

Suppose   is a finite cyclic group of order   which is generated by the element  , and we seek to find the discrete logarithm   of the element   to the base  . In other words, we seek   such that  . The lambda algorithm allows us to search for   in some subset   of  . We may search the entire range of possible logarithms by setting   and  , although in this case Pollard's rho algorithm is more efficient. We proceed as follows:

1. Choose a set   of integers and define a pseudorandom map  .

2. Choose an integer   and compute a sequence of group elements   according to:

  •  
  •   for  

3. Compute

 .

Observe that:

 .

4. Begin computing a second sequence of group elements   according to:

  •  
  •   for  

and a corresponding sequence of integers   according to:

 .

Observe that:

  for  

5. Stop computing terms of   and   when either of the following conditions are met:

A   for some  . If the sequences   and   "collide" in this manner, then we have:
 
and so we are done.
B  . If this occurs, then the algorithm has failed to find  . Subsequent attempts can be made by changing the choice of   and/or  .

Complexity

Pollard gives the time complexity of the algorithm as  , based on a probabilistic argument which follows from the assumption that   acts pseudorandomly. Note that when the size of the set   to be searched is measured in bits, as is normal in complexity theory, the set has size  , and so the algorithm's complexity is  , which is exponential in the problem size. For this reason, Pollard's lambda algorithm is considered an exponential time algorithm. For an example of a subexponential time discrete logarithm algorithm, see the index calculs algorithm.

Naming

The algorithm is well known by two names.

The first is "Pollard's lambda algorithm". Much like the name of another of Pollard's discrete logarithm algorithms, Pollard's rho algorithm, this name refers to the similarity between a visualisation of the algorithm and the Greek letter lambda ( ). The longer stroke of the letter lambda corresponds to the sequence  . The shorter stroke corresponds to the sequence  , which "collides with" the first sequence (just like the strokes of a lambda intersect) and then follows it subsequently.

The second is "Pollard's kangaroo algorithm". This name is a reference to an analogy used in the paper presenting the algorithm, where the algorithm is explained in terms of using a tame kangaroo to trap a wild kangaroo. Pollard has explained [2] that this analogy was inspired by a "fascinating " article published in the same issue of Scientific American as an exposition of the well known RSA public key cryptosystem. The article [3] described an experiment in which a kangaroo's "energetic cost of locomation, measured in terms of oxygen consumption at various speeds, was determined by placing kangaroos on a treadmill".

Pollard has expressed a preference for the name "kangaroo algorithm"[citation needed], as this avoids confusion over the fact that some parallel versions of his rho algorithm have also been named "lambda algorithms".

See also

References

  1. ^ J. Pollard, Monte Carlo methods for index computation mod p, Mathematics of Computation, Volume 32, 1978
  2. ^ J. M. Pollard, Kangaroos, Monopoly and Discrete Logarithms, Jounral of Cryptology, Volume 13, pp 437-447, 2000
  3. ^ T. J. Dawson, Kangaroos, Scientific American, August 1977, pp. 78-89