Schreier vector explained

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

X=\{x1,x2,...,xr\}

which acts on the finite set

\Omega=\{1,2,...,n\}

. A common task in computational group theory is to compute the orbit of some element

\omega\in\Omega

under G. At the same time, one can record a Schreier vector for

\omega

. This vector can then be used to find an element

g\inG

satisfying

\omegag=\alpha

, for any

\alpha\in\omegaG

. 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

\omega\in\Omega

is a vector

v=(v[1],v[2],...,v[n])

such that:

v[\omega]=-1

  1. For

\alpha\in\omegaG\setminus\{{\omega}\},v[\alpha]\in\{1,...,r\}

(the manner in which the

v[\alpha]

are chosen will be made clear in the next section)

v[\alpha]=0

for

\alpha\notin\omegaG

Use in algorithms

Here we illustrate, using pseudocode, the use of Schreier vectors in two algorithms

Input: ω in Ω,

X=\{x1,x2,...,xr\}

for i in :

set v[''i''] = 0

set orbit =, v[''ω''] = −1

for α in orbit and i in :

if

xi
\alpha
is not in orbit:

append

xi
\alpha
to orbit

set

xi
v[\alpha

]=i

return orbit, v

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

g={xk}g,\alpha=

-1
x
k
\alpha

,k=v[\alpha]

return g