cyclist {permutations} | R Documentation |
details of cyclists
Description
Various functionality to deal with cyclists
Usage
vec2cyclist_single(p)
vec2cyclist_single_cpp(p)
remove_length_one(x)
cyclist2word_single(cyc,n)
nicify_cyclist(x,rm1=TRUE, smallest_first=TRUE)
Arguments
p |
Integer vector, interpreted as a word |
x , cyc |
A cyclist |
n |
In function |
rm1 , smallest_first |
In function |
Details
A cyclist is an object corresponding to a permutation P. It is a list with elements that are integer vectors corresponding to the cycles of P. This object is informally known as a cyclist, but there is no S3 class corresponding to it. In general use, one should not usually deal with cyclists at all: they are internal low-level objects not intended for the user.
An object of S3 class cycle is a (possibly named) list of
cyclists. NB: there is an unavoidable notational clash here. When
considering a single permutation, “cycle” means group-theoretic
cycle [eg 1\longrightarrow 2\longrightarrow 3\longrightarrow 1
]; when considering R objects, “cycle” means
“an R object of class cycle whose elements are permutations
written in cycle form”.
The elements of a cyclist are the disjoint group-theoretic cycles. Note the redundancies inherent: firstly, because the cycles commute, their order is immaterial (and a list is ordered); and secondly, the cycles themselves are invariant under cyclic permutation. Heigh ho.
A cyclist may be poorly formed in a number of ways: the cycles may
include repeats, or contain elements which are common to more than one
cycle. Such problems are detected by cyclist_valid()
. Also,
there are less serious problems: the cycles may include length-one
cycles; the cycles may start with an element that is not the smallest.
These issues are dealt with by nicify_cyclist()
.
Function
nicify_cyclist()
takes a cyclist and puts it in a nice form but does not alter the permutation. It takes a cyclist and removes length-one cycles; then orders each cycle so that the smallest element appears first (that is, it changes(523)
to(235)
). It then orders the cycles by the smallest element. Functionnicify_cyclist()
is called automatically bycycle()
. Remember thatnicify_cyclist()
takes a cyclist!Function
remove_length_one()
takes a cyclist and removes length-one cycles from it.Function
vec2cyclist_single()
takes a vector of integers, interpreted as a word, and converts it into a cyclist. Length-one cycles are discarded.Function
vec2cyclist_single_cpp()
is a placeholder for a function that is not yet written.Function
cyclist2word_single()
takes a cyclist and returns a vector corresponding to a single word. This function is not intended for everyday use; functioncycle2word()
is much more user-friendly.Function
char2cyclist_single()
takes a character string like “(342)(19)
” and turns it into a cyclist, in this caselist(c(3,4,2),c(1,9))
. This function returns a cyclist which is not necessarily canonicalized: it might have length-one cycles, and the cycles themselves might start with the wrong number or be incorrectly ordered. It attempts to deal with absence of commas in a sensible way, so “(18,19)(2,5)
” is dealt with appropriately too. The function is insensitive to spaces. Also, one can give it an argument which does not correspond to a cycle object, egchar2cyclist_single("(94)(32)(19)(1)")
(in which “9” is repeated). The function does not return an error, but to catch this kind of problem usechar2cycle()
which calls the validity checks.The user should use
char2cycle()
which executes validity checks and coerces to a cycle object.
See also the “cyclist” vignette [type vignette("cyclist")
at the command line] which contains more details and examples.
Author(s)
Robin K. S. Hankin
See Also
Examples
vec2cyclist_single(c(7,9,3,5,8,6,1,4,2))
char2cyclist_single("(342)(19)")
nicify_cyclist(list(c(4, 6), c(7), c(2, 5, 1), c(8, 3)))
nicify_cyclist(list(c(4, 6), c(7), c(2, 5, 1), c(8, 3)),rm1=TRUE)
nicify_cyclist(list(c(4, 6), c(7), c(2, 5, 1), c(8, 3)),smallest_first=FALSE,rm1=FALSE)
nicify_cyclist(list(c(4, 6), c(7), c(2, 5, 1), c(8, 3)),smallest_first=FALSE,rm1=TRUE )
nicify_cyclist(list(c(4, 6), c(7), c(2, 5, 1), c(8, 3)),smallest_first=TRUE ,rm1=FALSE)
nicify_cyclist(list(c(4, 6), c(7), c(2, 5, 1), c(8, 3)),smallest_first=TRUE ,rm1=TRUE )
cyclist2word_single(list(c(1,4,3),c(7,8)))