Schreier vector
In mathematics, especially the field of computational group theory, a Schreier vector is a tool for reducing the time and space complexity required to calculate orbits of a permutation group.
Overview
Suppose G is a finite group with generating sequence which acts on the finite set . A common task in computational group theory is to compute the orbit of some element under G. At the same time, one can record a Schreier vector for . This vector can then be used to find an element satisfying , for any . Use of Schreier vectors to perform this requires less storage space and time complexity than storing these g explicitly.
Formal definition
All variables used here are defined in the overview.
A Schreier vector for is a vector such that:
- For (the manner in which the are chosen will be made clear in the next section)
- for
Use in algorithms
Here we illustrate, using pseudocode, the use of Schreier vectors in two algorithms
- Algorithm to compute the orbit of ω under G and the corresponding Schreier vector
- Input: ω in Ω,
- for i in { 0, 1, …, n }:
- set v[i] = 0
- set orbit = { ω }, v[ω] = −1
- for α in orbit and i in { 1, 2, …, r }:
- if is not in orbit:
- append to orbit
- set
- if is not in orbit:
- return orbit, v
- Algorithm to find a g in G such that ωg = α for some α in Ω, using the v from the first algorithm
- Input: v, α, X
- if v[α] = 0:
- return false
- set g = e, and k = v[α] (where e is the identity element of G)
- while k ≠ −1:
- set
- return g