inverse: Inverse of a permutation

View source: R/permfuns.R

inverseR Documentation

Inverse of a permutation

Description

Calculates the inverse of a permutation in either word or cycle form

Usage

inverse(x)
## S3 method for class 'word'
inverse(x)
## S3 method for class 'cycle'
inverse(x)
inverse_word_single(W)
inverse_cyclist_single(cyc)

Arguments

x

Object of class permutation to be inverted

W

In function inverse_word_single(), a vector corresponding to a permutation in word form (that is, one row of a word object)

cyc

In function inverse_cyclist_single(), a cyclist to be inverted

Details

The package provides methods to invert objects of class word (the R idiom is W[W] <- seq_along(W)) and also objects of class cycle (the idiom is lapply(cyc,function(o){c(o[1],rev(o[-1]))})).

The user should use inverse() directly, which dispatches to either inverse.word() or inverse.cycle() as appropriate.

Sometimes, using idiom such as x^-1 or id/x gives neater code, although these may require coercion between word form and cycle form.

Value

Function inverse() returns an object of the same class as its argument.

Note

Inversion of words is ultimately performed by function inverse_word_single():

inverse_word_single <- function(W){
    W[W] <- seq_along(W)
    return(W)
}

which can be replaced by order() although this is considerably less efficient, especially for small sizes of permutations. One of my longer-term plans is to implement this in C, although it is not clear that this will be any faster.

Author(s)

Robin K. S. Hankin

See Also

cycle_power

Examples

x <- rperm(10,6)
x
inverse(x)

all(is.id(x*inverse(x)))  # should be TRUE

inverse(as.cycle(matrix(1:8,9,8)))


permutations documentation built on March 7, 2023, 8:26 p.m.