libsemigroups
Public Member Functions | Friends | List of all members
libsemigroups::ProjectiveMaxPlusMatrix Class Reference

Class for projective max-plus matrices. More...

#include <elements.h>

Inheritance diagram for libsemigroups::ProjectiveMaxPlusMatrix:
Inheritance graph
Collaboration diagram for libsemigroups::ProjectiveMaxPlusMatrix:
Collaboration graph

Public Member Functions

 ProjectiveMaxPlusMatrix (std::vector< int64_t > *matrix, Semiring< int64_t > const *semiring)
 A constructor. More...
 
 ProjectiveMaxPlusMatrix (std::vector< std::vector< int64_t >> const &matrix, Semiring< int64_t > const *semiring)
 A constructor. More...
 
- Public Member Functions inherited from libsemigroups::MatrixOverSemiringBase< int64_t, ProjectiveMaxPlusMatrix >
 MatrixOverSemiringBase (std::vector< int64_t > *matrix, Semiring< int64_t > const *semiring)
 A constructor. More...
 
 MatrixOverSemiringBase (std::vector< std::vector< int64_t >> const &matrix, Semiring< int64_t > const *semiring)
 A constructor. More...
 
size_t complexity () const override
 Returns the approximate time complexity of multiplying two matrices. More...
 
size_t degree () const override
 Returns the dimension of the matrix. More...
 
Elementidentity () const override
 Returns the identity matrix with dimension of this. More...
 
Elementreally_copy (size_t increase_deg_by=0) const override
 Returns a pointer to a copy of this. More...
 
void redefine (Element const *x, Element const *y) override
 Multiply x and y and stores the result in this. More...
 
Semiring< int64_t > const * semiring () const
 Returns a pointer to the Semiring over which the matrix is defined. More...
 
- Public Member Functions inherited from libsemigroups::ElementWithVectorData< int64_t, ProjectiveMaxPlusMatrix >
 ElementWithVectorData ()
 A constructor. More...
 
 ElementWithVectorData (std::vector< int64_t > *vector)
 A constructor. More...
 
 ElementWithVectorData (std::vector< int64_t > const &vector)
 A constructor. More...
 
int64_t at (size_t pos) const
 Returns the pos entry in the vector containing the defining data. More...
 
std::vector< int64_t >::iterator begin () const
 Returns an iterator. More...
 
std::vector< int64_t >::iterator cbegin () const
 Returns a const iterator. More...
 
std::vector< int64_t >::iterator cend () const
 Returns a const iterator. More...
 
void copy (Element const *x) override
 Copy another Element into this. More...
 
std::vector< int64_t >::iterator end () const
 Returns an iterator. More...
 
bool operator< (Element const &that) const override
 Returns true if this is less than that. More...
 
bool operator== (Element const &that) const override
 Returns true if this equals that. More...
 
int64_t operator[] (size_t pos) const
 Returns the pos entry in the vector containing the defining data. More...
 
void really_delete () override
 Deletes the defining data of an ElementWithVectorData. More...
 
void swap (Element *x) override
 Swap another Element with this. More...
 
- Public Member Functions inherited from libsemigroups::Element
 Element (elm_t type=Element::elm_t::NOT_RWSE)
 A constructor. More...
 
virtual ~Element ()
 A default destructor. More...
 
elm_t get_type () const
 Returns the type libsemigroups::Element::elm_t of an Element object. More...
 
size_t hash_value () const
 Return the hash value of an Element. More...
 
virtual void redefine (Element const *x, Element const *y, size_t const &thread_id)
 Multiplies x and y and stores the result in this. More...
 

Friends

class ElementWithVectorData< int64_t, ProjectiveMaxPlusMatrix >
 

Additional Inherited Members

- Public Types inherited from libsemigroups::Element
enum  elm_t { RWSE = 0, NOT_RWSE = 1 }
 This enum contains some different types of Element. More...
 
- Protected Member Functions inherited from libsemigroups::MatrixOverSemiringBase< int64_t, ProjectiveMaxPlusMatrix >
 MatrixOverSemiringBase (std::vector< int64_t > *matrix)
 Constructs a MatrixOverSemiringBase with whose underlying semiring is not defined. The underlying semiring must be set by any class deriving from this one. More...
 
- Protected Member Functions inherited from libsemigroups::ElementWithVectorDataDefaultHash< int64_t, ProjectiveMaxPlusMatrix >
void cache_hash_value () const override
 This method implements the default hash function for an ElementWithVectorData, which uses ElementWithVectorData::vector_hash. Derive from this class if you are defining a class derived from ElementWithVectorData and there is a specialization of std::hash for the template parameter TValueType, and you do not want to define a hash function explicitly in your derived class. More...
 
- Protected Member Functions inherited from libsemigroups::Element
void reset_hash_value () const
 Reset the cached value used by Element::hash_value. More...
 
- Static Protected Member Functions inherited from libsemigroups::ElementWithVectorData< int64_t, ProjectiveMaxPlusMatrix >
static size_t vector_hash (std::vector< T > const *vec)
 Returns a hash value for a vector provided there is a specialization of std::hash for the template type T. More...
 
- Protected Attributes inherited from libsemigroups::ElementWithVectorData< int64_t, ProjectiveMaxPlusMatrix >
std::vector< int64_t > * _vector
 The vector containing the defining data of this. More...
 
- Static Protected Attributes inherited from libsemigroups::Element
static size_t const UNDEFINED = std::numeric_limits<size_t>::max()
 UNDEFINED value. More...
 

Detailed Description

Class for projective max-plus matrices.

These matrices belong to the quotient of the monoid of all max-plus matrices by the congruence where two matrices are related if they differ by a scalar multiple.

See also
MaxPlusSemiring and MatrixOverSemiring.

Matrices in this class are modified when constructed to be in a normal form which is obtained by subtracting the maximum finite entry in the matrix from the every finite entry.

Constructor & Destructor Documentation

§ ProjectiveMaxPlusMatrix() [1/2]

libsemigroups::ProjectiveMaxPlusMatrix::ProjectiveMaxPlusMatrix ( std::vector< int64_t > *  matrix,
Semiring< int64_t > const *  semiring 
)
inline

A constructor.

See MatrixOverSemiring::MatrixOverSemiring for details about this method.

The parameter matrix is converted into its normal form when when the object is constructed.

§ ProjectiveMaxPlusMatrix() [2/2]

libsemigroups::ProjectiveMaxPlusMatrix::ProjectiveMaxPlusMatrix ( std::vector< std::vector< int64_t >> const &  matrix,
Semiring< int64_t > const *  semiring 
)
inline

A constructor.

See MatrixOverSemiring::MatrixOverSemiring for details about this method.

The copy of the parameter matrix in the object constructed is converted into its normal form when the object is constructed.


The documentation for this class was generated from the following file: