In this chapter we describe the functionality in &SEMIGROUPS; for creating
matrices over semirings. <B>Only square matrices are currently
supported.</B> We use the term <B>matrix</B> to mean <B>square matrix</B>
everywhere in this manual.
<P/>
For reference, matrices over the following semirings are currently supported:
<List>
<Mark>the Boolean semiring</Mark>
<Item>
the set <M>\{0, 1\}</M> where <M>0 + 0 = 0</M>,
<M>0 + 1 = 1 + 1 = 1 + 0 = 1</M>, <M>1\cdot 0 = 0 \cdot 0 = 0
\cdot 1 = 0</M>, and <M>1\cdot 1 = 1</M>.
</Item>
<Mark>the max-plus semiring</Mark>
<Item>
the set of integers and negative
infinity <M>\mathbb{Z}\cup \{-\infty\}</M> with operations max and
plus.
</Item>
<Mark>the min-plus semiring</Mark>
<Item>
the set of integers and
infinity <M>\mathbb{Z}\cup \{\infty\}</M> with operations min and
plus;
</Item>
<Mark>tropical max-plus semirings</Mark>
<Item>
the set <M>\{-\infty, 0, 1, \ldots, t\}</M> for some threshold <M>t</M>
with operations max and plus;
</Item>
<Mark>tropical min-plus semirings</Mark>
<Item>
the set <M>\{0, 1, \ldots, t, \infty\}</M> for some threshold <M>t</M>
with operations min and plus;
</Item>
<Mark>the semiring <M>\mathbb{N}_{t,p}</M></Mark>
<Item>
the semiring
<M>\mathbb{N}_{t,p} = \{0, 1, \ldots, t, t + 1, \ldots, t + p - 1\}</M>
for some threshold <M>t</M> and period <M>p</M> under addition and
multiplication modulo the congruence <M>t = t + p</M>;
</Item>
<Mark>the integers</Mark>
<Item>
the usual ring of integers;
</Item>
<Mark>finite fields</Mark>
<Item>
the finite fields <C>GF(q^d)</C> for prime <C>q</C> and some positive
integer <C>d</C>.
</Item>
</List>
With the exception of matrices of finite fields, semigroups of matrices in
&SEMIGROUPS; are of the second type described in Section <Ref Sect = "Underlying algorithms"/>. In other words, a version of the Froidure-Pin
Algorithm <Cite Key = "Froidure1997aa"/> is used to compute semigroups of
these types, i.e it is possible that all of the elements of such a
semigroup are enumerated and stored in the memory of your computer.
<Section Label = "Matrices over arbitrary semirings">
<Heading>Creating matrices over semirings</Heading>
In this section we describe the two main operations for creating matrices
over semirings in &SEMIGROUPS;, and the categories, attributes, and
operations which apply to every matrix over one of the semirings given at
the start of this chapter.<P/>
There are several special methods for boolean matrices, which can be found
in Section <Ref Sect = "Boolean matrices"/>.
There are also several special methods for finite fields, which can be found
in section <Ref Sect = "Matrices over finite fields"/>.
<!-- the following could go in a section of their own if there are more at
some point -->
<#Include Label = "ThresholdTropicalMatrix"/>
<#Include Label = "ThresholdNTPMatrix"/>
</Section>
<Section Label = "Operators for matrices over semirings">
<Heading>Operators for matrices over semirings</Heading>
<List>
<Mark><C><A>mat1</A> * <A>mat2</A></C></Mark>
<Item>
<Index Key = "*"><C>*</C> (for matrices over a semiring)</Index> returns
the product of the matrices <A>mat1</A> and <A>mat2</A> of equal
dimension over the same semiring using the usual matrix multiplication
with the operations <C>+</C> and <C>*</C> from the underlying semiring.
</Item>
<Mark><C><A>mat1</A> < <A>mat2</A></C></Mark>
<Item>
<Index Key = "<"><C><</C> (for matrices over a semiring)</Index>
returns <K>true</K> if when considered as a list of rows, the matrix
<A>mat1</A> is short-lex less than the matrix <A>mat2</A>, and
<K>false</K> if this is not the case. This means that a matrix of lower
dimension is less than a matrix of higher dimension.
</Item>
<Mark><C><A>mat1</A> = <A>mat2</A></C></Mark>
<Item>
<Index Key = "="><C>=</C> (for matrices over a semiring)</Index>
returns <K>true</K> if the matrix <A>mat1</A> equals the
matrix <A>mat2</A> (i.e. the entries are equal and the underlying
semirings are equal) and returns <K>false</K> if it does not.
</Item>
</List>
</Section>
<Section Label = "Matrices over finite fields">
<Heading>
Matrices over finite fields
</Heading>
In this section we describe some operations in &SEMIGROUPS; for matrices
over finite fields that are required for such matrices to form semigroups
satisfying <Ref Filt="IsActingSemigroup"/>. <P/>
From v5.0.0, &SEMIGROUPS; uses the &GAP; library implementation of matrices
over finite fields belonging to the category <Ref Filt="IsMatrixObj"
BookName="ref"/> rather than the previous implementation in the
&SEMIGROUPS; package. This means that from v5.0.0, matrices over a finite
field no longer belong to the category <Ref
Filt="IsMatrixOverSemiring"/>.
<P/>
The following methods are implemented in &SEMIGROUPS; for matrix objects
over finite fields.
<#Include Label="RowSpaceBasis"/>
<#Include Label="RightInverse"/>
</Section>
<Section Label = "Matrices over the integers">
<Heading>
Matrices over the integers
</Heading>
In this section we describe operations in &SEMIGROUPS; specifically for
integer matrices. <P/>
From v5.0.0, &SEMIGROUPS; uses the &GAP; library implementation of matrices
over the integers belonging to the category <Ref Filt="IsMatrixObj"
BookName="ref"/> rather than the previous implementation in the
&SEMIGROUPS; package. This means that from v5.0.0, matrices over the
integers no longer belong to the category <Ref
Filt="IsMatrixOverSemiring"/>.<P/>
The following methods are implemented in &SEMIGROUPS; for matrix objects
over the integers.
<Section Label = "Max-plus and min-plus matrices">
<Heading>
Max-plus and min-plus matrices
</Heading>
In this section we describe operations in &SEMIGROUPS; specifically for
max-plus and min-plus matrices. These are in addition to those given
elsewhere in this chapter for arbitrary matrices over semirings. These include:
In this section we describe operations and attributes in
&SEMIGROUPS; specifically for matrix semigroups. These are in addition to
those given elsewhere in this chapter for arbitrary matrices over
semirings. These include:
Random matrix semigroups can be created by using the function
<Ref Func="RandomSemigroup"/>. We can also create a matrix semigroup
isomorphic to a given semigroup by using <Ref Oper="IsomorphismSemigroup"/>
and <Ref Oper="AsSemigroup"/>. These functions require a filter, and accept
any of the filters in Section <Ref Sect="IsXMatrixSemigroup"/>. <P/>
There are corresponding functions which can be used for matrix monoids:
<Ref Func="RandomMonoid"/>, <Ref Oper="IsomorphismMonoid"/>, and
<Ref Oper="AsMonoid"/>. These can be used with the filters in
Section <Ref Sect="IsXMatrixMonoid"/>. <P/>
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung ist noch experimentell.