![]() |
libsemigroups
v3.0.0
C++ library for semigroups and monoids
|
Defined in transf.hpp
.
A partial permutation
If N
is 0
(the default), then the degree of a PPerm instance can be defined at runtime, and if N
is not 0
, then the degree is fixed at compile time.
If N
is 0
, then the default value of Scalar
is uint32_t
. If N
is not 0
, then the default value of Scalar
is the smallest integer type able to hold N
. See also SmallestInteger.
N | the degree (default: 0 ). |
Scalar | an unsigned integer type (the type of the image values) (default: uint32_t ). |
This class inherits from either StaticPTransf or DynamicPTransf, see the documentation of these classes for more details of the available member functions.
Public Types | |
using | container_type = typename base_type::container_type |
Type of the underlying container. | |
using | point_type = Scalar |
Type of the image values. | |
Public Member Functions | |
PPerm (std::initializer_list< point_type > dom, std::initializer_list< point_type > img, size_t M) | |
Construct from domain, range, and degree. | |
template<typename OtherScalar> | |
PPerm (std::vector< OtherScalar > const &dom, std::vector< OtherScalar > const &img, size_t M) | |
Construct from domain, range, and degree. | |
void | product_inplace (PPerm const &f, PPerm const &g) |
Multiply two partial perms and store the product in this . | |
Static Public Member Functions | |
static PPerm | one (size_t M) |
Returns the identity transformation on the given number of points. | |
using container_type = typename base_type::container_type |
In this case, this is PTransf<N, Scalar>::container_type
.
using point_type = Scalar |
Also the template parameter Scalar
.
PPerm | ( | std::vector< OtherScalar > const & | dom, |
std::vector< OtherScalar > const & | img, | ||
size_t | M ) |
Constructs a partial perm of degree M
such that f[dom[i]] = img[i]
for all i
and which is UNDEFINED on every other value in the range
OtherScalar | the type of the points in dom and img . |
dom | the domain. |
img | the range. |
M | the degree. |
dom
.
|
inline |
Constructs a partial perm of degree M
such that f[dom[i]] = img[i]
for all i
and which is UNDEFINED on every other value in the range
OtherScalar | the type of the points in dom and img . |
dom | the domain. |
img | the range. |
M | the degree. |
dom
.
|
inlinestaticnodiscard |
This function returns a newly constructed transformation with degree equal to M
that fixes every value from 0
to M
.
M | the degree. |
Transf
.LibsemigroupsException | if IsStatic<Transf> is true, and M is not the same as the template parameter N . |
void product_inplace | ( | PPerm< N, Scalar > const & | f, |
PPerm< N, Scalar > const & | g ) |
Replaces the contents of this
by the product of f
and g
.
f | a partial perm. |
g | a partial perm. |
f
or g
.f
and g
have different degrees, then bad things will happen.