# 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 $X = \{x_1,x_2,...,x_r\}$ 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 \in G$ satisfying $\omega^g = \alpha$, for any $\alpha \in \omega^G$. 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 $\mathbf{v} = (v[1],v[2],...,v[n])$ such that:

1. $v[\omega] = -1$
2. For $\alpha \in \omega^G \setminus \{ {\omega} \} , v[\alpha] \in \{1,...,r\}$ (the manner in which the $v[\alpha]$ are chosen will be made clear in the next section)
3. $v[\alpha] = 0$ for $\alpha \notin \omega^G$

## 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 Ω, $X = \{x_1,x_2,...,x_r\}$
for i in { 0, 1, …, n }:
set v[i] = 0
set orbit = { ω }, v[ω] = −1
for α in orbit and i in { 1, 2, …, r }:
if $\alpha^{x_i}$ is not in orbit:
append $\alpha^{x_i}$ to orbit
set $v[\alpha^{x_i}] = i$
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 $g = {x_k}g, \alpha = \alpha^{x_k^{-1}}, k = v[\alpha]$
return g