ArticleslgStudy

computer science

Schreier–Sims algorithm

Schreier–Sims algorithm is a computer science topic covered in the lgStudy science library. This page brings together a partial reference excerpt, illustrations, worked examples, real-world applications and a short study plan, so you can understand Schreier–Sims algorithm rather than just read about it. In short: The Schreier–Sims algorithm is an algorithm in computational group theory, named after the mathematicians Otto Schreier and Charles Sims. This algorithm can find the order of a finite permutation group, determine whether a given permutation is a member of the group, and other tasks in polynomial time.

Key takeaways

  • Schreier–Sims algorithm belongs to computer science; place it in that map before memorising details.
  • Learn the definition first, then one example that makes the definition concrete.
  • Connect Schreier–Sims algorithm to a quantity you can measure, compute or draw — that is where exam questions come from.
  • Reproduce the core statement of Schreier–Sims algorithm from memory before moving on to harder problems.

Reference excerpt

The Schreier–Sims algorithm is an algorithm in computational group theory, named after the mathematicians Otto Schreier and Charles Sims. This algorithm can find the order of a finite permutation group, determine whether a given permutation is a member of the group, and other tasks in polynomial time. It was introduced by Sims in 1970, based on Schreier's subgroup lemma. The running time was subsequently improved by Donald Knuth in 1991. Later, an even faster randomized version of the algorithm was developed.

Background and timing The algorithm is an efficient method of computing a base and strong generating set (BSGS) of a permutation group. In particular, an SGS determines the order of a group and makes it easy to test membership in the group. Since the SGS is critical for many algorithms in computational group theory, computer algebra systems typically rely on the Schreier–Sims algorithm for efficient calculations in groups. The running time of Schreier–Sims varies on the implementation. Let G ≤ S n {\displaystyle G\leq S_{n}} be given by t {\displaystyle t} generators. For the deterministic version of the algorithm, possible running times are:

O ( n 2 log 3 ⁡ | G | + t n log ⁡ | G | ) {\displaystyle O(n^{2}\log ^{3}|G|+tn\log |G|)} requiring memory O ( n 2 log ⁡ | G | + t n ) {\displaystyle O(n^{2}\log |G|+tn)}

O ( n 3 log 3 ⁡ | G | + t n 2 log ⁡ | G | ) {\displaystyle O(n^{3}\log ^{3}|G|+tn^{2}\log |G|)} requiring memory O ( n log 2 ⁡ | G | + t n ) {\displaystyle O(n\log ^{2}|G|+tn)}

The use of Schreier vectors can have a significant influence on the performance of implementations of the Schreier–Sims algorithm. The Monte Carlo variations of the Schreier–Sims algorithm have the estimated complexity:

O ( n log ⁡ n log 4 ⁡ | G | + t n log ⁡ | G | ) {\displaystyle O(n\log n\log ^{4}|G|+tn\log |G|)} requiring memory O ( n log ⁡ | G | + t n ) {\displaystyle O(n\log |G|+tn)} . Modern computer algebra systems, such as GAP and Magma, typically use an optimized Monte Carlo algorithm.

Outline of basic algorithm Following is C++-style pseudo-code for the basic idea of the Schreier-Sims algorithm. It is meant to leave out all finer details, such as memory management or any kind of low-level optimization, so as not to obfuscate the most important ideas of the algorithm. Its goal is not to compile.

Notable details left out here include the growing of the orbit tree and the calculation of each new Schreier generator. In place of the orbit tree, a Schreier vector can be used, but the idea is essentially the same. The tree is rooted at the identity element, which fixes the point stabilized by the subgroup. Each node of the tree can represent a permutation that, when combined with all permutations in the path from the root to it, takes that point to some new point not visited by any other node of the tree. By the orbit-stabilizer theorem, these form a transversal of the subgroup of our group that stabilizes the point whose entire orbit is maintained by the tree. Calculating a Schreier generator is a simple application of the Schreier's subgroup lemma. Another detail left out is the membership test. This test is based upon the sifting process. A permutation is sifted down the chain at each step by finding the containing coset, then using that coset's representative to find a permutation in the subgroup, and the process is repeated in the subgroup with that found permutation. If the end of the chain is reached (i.e., we reach the trivial subgroup), then the sifted permutation was a member of the group at the top of the chain.

References Knuth, Donald E. "Efficient representation of perm groups". Combinatorica 11 (1991), no. 1, 33–43. Seress, A., Permutation Group Algorithms, Cambridge U Press, 2002. Sims, Charles C. "Computational methods in the study of permutation groups", in Computational Problems in Abstract Algebra, pp. 169–183, Pergamon, Oxford, 1970.

Worked examples

Example 1 — a first encounter with Schreier–Sims algorithm

Start with the simplest possible case. Write down what Schreier–Sims algorithm claims or describes in one sentence, then invent the smallest concrete situation in which that sentence is true. In computer science, the smallest case is usually a single object, a single equation or a single measurement. Check that every symbol or term in your sentence has a meaning in that case.

Example 2 — changing one variable

Take the situation from Example 1 and change exactly one quantity: double it, halve it, or set it to zero. Predict what should happen to Schreier–Sims algorithm before you calculate. Comparing your prediction with the result is the fastest way to find out whether you understand the idea or only the words.

Example 3 — an exam-style question

Typical questions about Schreier–Sims algorithm ask you to (a) state it precisely, (b) apply it to given data, and (c) explain a limitation. Practise writing all three answers in under five minutes; the third part is what separates a full-mark answer from an average one.

Applications of Schreier–Sims algorithm

In research
Schreier–Sims algorithm appears in computer science research whenever the underlying quantities have to be modelled precisely. Papers usually cite it as a starting assumption and then explore where it breaks down.
In technology and industry
Engineering practice reuses Schreier–Sims algorithm in design rules, simulations and safety margins. Knowing the idea lets you read a specification sheet and understand why the numbers look the way they do.
In the classroom
Schreier–Sims algorithm is common in secondary-school and first-year university syllabi. It links to neighbouring topics Computational group theory, Permutation groups, so understanding it makes those chapters shorter.
In everyday life
Look for Schreier–Sims algorithm outside the textbook — in sport, cooking, traffic, electronics or the sky above you. An example you found yourself is remembered far longer than one you were given.
Ask Teacher Smith questions about this articleOpens your AI tutor with a question about “Schreier–Sims algorithm” →

Affiliate

Preply — study more efficiently by working with a personal tutor. 50% off.

How to study Schreier–Sims algorithm in 20 minutes

  1. Read the reference excerpt below once, without taking notes.
  2. Close the page and write down what Schreier–Sims algorithm means in your own words.
  3. Compare your version with the excerpt and mark what you missed.
  4. Work through the three examples above with pen and paper.
  5. Explain Schreier–Sims algorithm out loud to somebody else — or to Teacher Smith in the lgStudy chat.

Frequently asked questions

What is Schreier–Sims algorithm in simple terms?

The Schreier–Sims algorithm is an algorithm in computational group theory, named after the mathematicians Otto Schreier and Charles Sims. This algorithm can find the order of a finite permutation group, determine whether a given permutation is a member of the group, and other tasks in polynomial ti…

Why does Schreier–Sims algorithm matter?

Because it connects several computer science ideas at once: it gives you a definition you can apply, a quantity you can calculate, and a way to check whether a result is plausible.

How should I study Schreier–Sims algorithm?

Read the excerpt, restate it from memory, then work through the examples and applications listed on this page. The five-step study plan above takes about twenty minutes.

What does this page cover?

It gives you a compact reference excerpt plus original lgStudy explanations, examples, applications and study material on Schreier–Sims algorithm.

Tags

  • Computational group theory
  • Permutation groups

Keep exploring