Square root-based black-box group algorithm for element order-finding problem

From Groupprops

Summary

Item Value
Problem being solved element order-finding problem in a group with a known upper bound on its order
Input format group specified via an encoding, upper bound on the order of . Codeword for an element of .
Output format positive integer that equals the order of
Running time Roughly plus times the time taken for group multiplication. In particular, the number of times that we need to do the group multiplication is (where is the order of the element), which could be smaller than . In fact, if , then the group multiplications need to be performed only times.
If we use a multi-encoding instead of an encoding, then we also need to do, in the extreme case, about equality tests.
Competing algorithms brute-force black-box group algorithm for element order-finding problem: does group multiplications.
order factorization-based black-box group algorithm for element order-finding problem: helpful if the order of the group is known and its factorization is known. In this case, we can make a list of all divisors of the order and compute only those powers using the repeated squaring algorithm for power computation problem. If has few prime factors, this can take a lot less time.
Parallelizable version Tricky to implement, because we want the smallest that works. We can use parallelization somewhat along with on-the-fly reallocation of resources.

Idea and outline

The algorithm as presented here relies only on the multiplication algorithm and knowledge of the identity element, and it does not require the use of the inverse map.

Let be a positive integer chosen such that is greater than .

Consider two sets:

is the set of powers

is the set of similar powers for , i.e., .

The algorithm is as follows:

  1. We construct left to right, with each new element obtained by multiplying its predecessor by . If at any stage we get to the identity element, we stop there -- that's the order of . If not, we constructed the whole of .
  2. is constructed by multiplying the last element of by . We then construct the elements of from left to right, with each new element obtained by multiplying its predecessor by . Every time we construct a new element of , we check if it is equal to any of the elements of , going from right to left on . Suppose the first collision happens for . Then, the order of is .