Schreier vector
From Wikipedia, the free encyclopedia
In computational group theory, a Schreier vector is a tool for reducing the time and space complexity required to calculate transversal elements.
[edit] Overview
Suppose G is a finite group with generating sequence X = {x1,x2,...,xr} which acts on the finite set Ω = {1,2,...,n}. A common task in computational group theory would be to compute the orbit of some element under G. At the same time as we do this, we can computer a Schreier vector for ω. This vector can then be used later to find the satisfying ωg = α, for any . Use of Schreier vectors to perform this requires less storage space than storing these g explicitly and has a lower time complexity than computing the g directly.
[edit] Formal definition
(All variables used here are defined as per the overview)
A Schreier vector for is a vector such that:
- v[ω] = − 1
- For (the manner in which the v[α] are chosen will be made clear in the next section)
- v[α] = 0 for
[edit] 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: , X = {x1,x2,...,xr}
- for :
- set v[i] = 0
- set orbit = {ω},v[ω] = − 1
- for orbit and :
- if orbit:
- append to orbit
- set
- if orbit:
- return orbit, v
- Algorithm to find a such that ωG = α for some , using the v from the first algorithm
- Input:
- if v[α] = 0:
- return false
- set g = e, k = v[α] (where e is the identity element of G)
- while k != -1:
- set
- return g