Order-finding problem: Difference between revisions
No edit summary |
No edit summary |
||
| Line 27: | Line 27: | ||
==Solution== | ==Solution== | ||
=== | ===Basic idea=== | ||
The idea behind solving the order-finding problem for <math>G</math> comes from the following descending chain of subgroups: | |||
<math>G= G^{(0)} \geq G^{(1)} \geq G^{(2)} \ldots \geq G^{(n-1)} = e</math> | |||
where <math>G^{(i)} = G \cap Stab_{1,2,3,...,i}(Sym(n)</math>. | |||
By an easy coset counting argument: | |||
<math>[G^{(i)}:G^{(i+1)}] \leq n - i</math> | |||
Also, we have: | |||
<math>|G| = [G^{(0)}:G^{(1)}][G^{(1)}:G^{(2)}]...[G^{(n-2)}:G^{(n-1)}]</math> | |||
Thus, if we have an algorithm to compute each of the indices <math>[G^{(i)}:G^{(i+1)}]</math>, then we can compute the order of <math>G</math>. | |||
===Obstacles and overcoming them=== | |||
The cardinality <math>[G^{(i)}:G^{(i+1)}]</math> equals the size of the orbit of <math>i+1</math> under the action of <math>G^{(i)}</math> and this orbit can be easily computed by a breadth-first search in the graph for the action. In fact, we can even compute a system of coset representatives for <math>G^{(i+1)}</math> in <math>G^{(i)}</math> by using the breadth-first search. {{further|[[minimal Schreier system]]}} | |||
The problem, however, is: how do we get a generating set for <math>G^{(i+1)}</math> starting from a generating set for <math>G^{(i)}</math>, To solve this problem, we can use [[Schreier's lemma]] which provides a constructive approach to obtaining a generating set for the subgroup from a generating set for the whole group and a system of coset representatives (the more general problem is [[finding a generating set from a membership test]]). | |||
This still leaves another problem: Each time we go downward on the chain, the size of the generating set may go up by a factor of <math>n</math> (because the index of the subgroup is <math>O(n)</math>). Thus, we need to keep the size of the subset small at every stage. This can be done using a [[small generating set-finding algorithm]], such as the [[Sims filter]] or the [[Jerrum's filter]]. | |||
===Flow of the algorithm=== | |||
Description of the <math>i^{th}</math> step of the algorithm: | |||
'''Start with''': a generating set <math>A_i</math> for <math>G^{(i)}</math> | |||
'''Do the following''': | |||
# '''Finding coset representatives''': Using a breadth-first search, find a [[minimal Schreier system]] of coset representatives for <math>G^{(i+1)}</math> in <math>G^{(i)}</math> | |||
# '''Finding the index''': From this, obtain <math>[G^{(i)}:G^{(i+1)}]</math> | |||
# '''Finding a generating set''': Using the coset representatives and the generating set <math>A_i</math>, obtain a (possibly larger) generating set for <math>G^{(i+1)}</math>. This uses [[Schreier's lemma]] | |||
# '''Filtering the generating set''': Apply a filter to trim the size, and call the filtered generating set <math>A_{i+1}</math>. | |||
===Analysis of running time=== | ===Analysis of running time=== | ||
# '''Finding coset representatives''': This takes time <math>|A_i|n</math> since that is the number of edges in the graph. | |||
# '''Finding the index''': This comes for free | |||
# '''Finding a generating set''': This takes time <math>|A_i|n^2</math> since <math>A_i|n</math> terms need to be computed and the computation of each requires multiplication operations (which take <math>O(n)</math> time). | |||
# '''Filtering the generating set''': This takes time dependent on the choice of filter. A naive analysis on [[Jerrum's filter]] reveals that the time taken is <math>O(|A_i|n^5)</math> because the new generating set with which we start is itself of size <math>|A_i|n</math>. Similarly a naive analysis of the [[Sims filter]] reveals that the time it takes is <math>O(|A_i|n^2)</math>. | |||
Now, if we apply the filter right at the start, then at every step, <math>|A_i|</math. is polynomially bounded. Thus: | |||
Total time = Time taken to apply filter at the start + <math>n \times</math> Time taken at each stage | |||
Thus: | |||
* In the case of Jerrum's filter: <math>n^5|A| + O(n^7)</math> | |||
* In the case of Sims filter: <math>n^2|A| + O(n^6)</math> | |||
Revision as of 08:06, 23 February 2007
Template:Basic computational problem
This article describes a problem in the setup where the group(s) involved is/are defined by means of an embedding in a suitable universe group (such as a linear or a permutation group) -- viz in terms of generators described as elements sitting inside this universe group
Template:Presentation-setup at
Description
Given data
There is a universe group in which multiplication and inverse operations can be readily performed.
A subgroup of is specified by means of a generating set for where the elements of are specified using some standard format for elements in .
Goal
Determine the order of .
Relation with other problems
Problems that reduce to it
- Membership testing problem: Suppose we can solve the order-finding problem. Then, to solve the membership testing problem using it, do the following. Let be a generating set for and be an element which we want to test for membership in . Find the order of (as the subgroup generated by ) and the order of the subgroup generated by along with . The two orders are equal if and only if contains .
Incidentally, this may not actually solve the problem of finding a word in the generators for the given element.
Solution
Basic idea
The idea behind solving the order-finding problem for comes from the following descending chain of subgroups:
where .
By an easy coset counting argument:
Also, we have:
Thus, if we have an algorithm to compute each of the indices , then we can compute the order of .
Obstacles and overcoming them
The cardinality equals the size of the orbit of under the action of and this orbit can be easily computed by a breadth-first search in the graph for the action. In fact, we can even compute a system of coset representatives for in by using the breadth-first search. Further information: minimal Schreier system
The problem, however, is: how do we get a generating set for starting from a generating set for , To solve this problem, we can use Schreier's lemma which provides a constructive approach to obtaining a generating set for the subgroup from a generating set for the whole group and a system of coset representatives (the more general problem is finding a generating set from a membership test).
This still leaves another problem: Each time we go downward on the chain, the size of the generating set may go up by a factor of (because the index of the subgroup is ). Thus, we need to keep the size of the subset small at every stage. This can be done using a small generating set-finding algorithm, such as the Sims filter or the Jerrum's filter.
Flow of the algorithm
Description of the step of the algorithm:
Start with: a generating set for
Do the following:
- Finding coset representatives: Using a breadth-first search, find a minimal Schreier system of coset representatives for in
- Finding the index: From this, obtain
- Finding a generating set: Using the coset representatives and the generating set , obtain a (possibly larger) generating set for . This uses Schreier's lemma
- Filtering the generating set: Apply a filter to trim the size, and call the filtered generating set .
Analysis of running time
- Finding coset representatives: This takes time since that is the number of edges in the graph.
- Finding the index: This comes for free
- Finding a generating set: This takes time since terms need to be computed and the computation of each requires multiplication operations (which take time).
- Filtering the generating set: This takes time dependent on the choice of filter. A naive analysis on Jerrum's filter reveals that the time taken is because the new generating set with which we start is itself of size . Similarly a naive analysis of the Sims filter reveals that the time it takes is .
Now, if we apply the filter right at the start, then at every step, Time taken at each stage
Thus:
- In the case of Jerrum's filter:
- In the case of Sims filter: