geomc 1.0
A c++ linear algebra template library
|
A matrix which, by multiplication, permutes the rows or columns of another matrix. More...
#include <geomc/linalg/mtxtypes/PermutationMatrix.h>
Public Types | |
typedef bool | elem_t |
Element type. | |
typedef MtxSubsetIterator< const PermutationMatrix< N >, const elem_t > | const_iterator |
Read-only row-major iterator over matrix elements. | |
typedef const_iterator | const_region_iterator |
Read-only row-major iterator over the matrix elements in a rectangular region. | |
typedef MtxRowIterator< const PermutationMatrix< N >, const elem_t > | const_row_iterator |
Read-only iterator over the elments of a row. | |
typedef MtxColIterator< const PermutationMatrix< N >, const elem_t > | const_col_iterator |
Read-only iterator over the elements of a column. | |
typedef Storage< storage_token_t, _ImplStorageObjCount< PermutationMatrix< N > >::count > | storagebuffer_t |
typedef PermutationMatrix< N > | recurring_t |
Public Member Functions | |
PermutationMatrix () | |
PermutationMatrix (index_t n) | |
index_t | sign () |
index_t | rows () const |
index_t | cols () const |
const index_t * | getRowSources () const |
const index_t * | getColSources () const |
const index_t * | getColDestinations () const |
const index_t * | getRowDestinations () const |
void | setRowSources (const index_t *p) |
void | setColSources (const index_t *p) |
void | setRowDestinations (const index_t *p) |
void | setColDestinations (const index_t *p) |
void | swap_rows (index_t a, index_t b) |
void | swap_cols (index_t a, index_t b) |
bool | operator() (index_t row, index_t col) const |
void | set_identity () |
void | transpose () |
void | get_storage_tokens (storage_token_t *buf) const |
constexpr index_t | storage_token_count () const |
derived_const_row_iterator | operator[] (index_t i) const |
const_row_iterator | row (index_t i) const |
const_col_iterator | col (index_t i) const |
const_iterator | begin () const |
const_iterator | end () const |
const_region_iterator | region_begin (const MatrixRegion &r) const |
const_region_iterator | region_end (const MatrixRegion &r) const |
storagebuffer_t | get_storage_token_buffer () const |
Static Public Attributes | |
static constexpr index_t | ROWDIM |
Row dimension template parameter. | |
static constexpr index_t | COLDIM |
Column dimension template parameter. | |
Friends | |
template<typename Md , typename Ma , typename Mb > | |
class | detail::_ImplMtxMul |
bool | detail::mtxequal (const PermutationMatrix< N > &a, const PermutationMatrix< N > &b) |
A matrix which, by multiplication, permutes the rows or columns of another matrix.
A permutation matrix P
permutes rows if left-multiplied (P * M
), and permutes columns if right-multiplied (M * P
).
Permutation matrices are always (n x n) and have only elements that are zero or 1. Each row and column has exactly one 1
element.
An (n x n) permutation matrix uses O(n) storage, and multiplications by other matrices are optimized to perform the permutation directly in _O(n2)_ (rather than _O(n3)_) time. Multiplication of two permutation matrices is O(n).
|
inline |
Construct a new identity permutation matrix.
|
inlineexplicit |
Construct a new identity permutation matrix of size n
. (Dynamic only).
|
inlineinherited |
|
inlineinherited |
i | Index of column (zero-indexed) |
i
|
inline |
|
inlineinherited |
|
inline |
Array containing a mapping of source columns to destination columns in a column-permuting operation.
In other words, given the column-permuting multiplication:
M * P = D
return an array a
such that column D
a[i]
= M
i
.
Because of the property that a permutation matrix's inverse is its transpose, this function is equivalent to getRowSources()
.
|
inline |
Array containing a mapping of destination columns to source columns in a column-permuting operation.
In other words, given the column-permuting multiplicaton:
M * P = D
return an array a
such that column D
i
= M
a[i]
.
|
inline |
Array containing a mapping of source rows to destination rows in a row-permuting operation.
In other words, given the row-permuting multiplication:
P * M = D
return an array a
such that row D
a[i]
= M
i
.
Because of the property that a permutation matrix's inverse is its transpose, this function is equivalent to getColSources()
.
|
inline |
Array containing a mapping of destination rows to source rows in a row-permuting operation.
In other words, given the row-permuting multiplicaton:
P * M = D
return an array a
such that row D
i
= M
a[i]
.
|
inline |
Get the element at (row, col)
.
row | Zero-indexed row coordinate |
col | Zero-indexed column coordinate |
(row, col)
; either 0 or 1.
|
inlineinherited |
i | Index of row (zero-indexed) |
i
|
inlineinherited |
r | The zero-indexed region to iterate over. The upper extreme coordinates represent the index just beyond the last element to be iterated over. |
r
, pointing at the first element in the region (upper left corner).
|
inlineinherited |
r | The zero-indexed region to iterate over. The upper extreme coordinates represent the index just beyond the last element to be iterated over. |
r
, pointing at the element just beyond the last element in the region.
|
inlineinherited |
i | Index of row (zero-indexed) |
i
|
inline |
|
inline |
Reset this matrix to the identity permutation.
|
inline |
Set the permutation described by this matrix by passing an array mapping source columns to destination columns in a column-permuting operation.
In other words, define the column-permuting multiplication:
M * P = D
with an array a
such that column D
a[i]
= M
i
.
Because of the property that a permutation matrix's inverse is its transpose, this function is equivalent to setRowSources()
.
p | Array of indecies. |
|
inline |
Set the permutation described by this matrix by passing a mapping of destination columns to source columns in a column-permuting operation.
In other words, define the column-permuting multiplicaton:
M * P = D
with an array a
such that column D
i
= M
a[i]
.
p | Array of indecies. |
|
inline |
Set the permutation described by this matrix by passing an array mapping source rows to destination rows in a row-permuting operation.
In other words, define the row-permuting multiplication:
P * M = D
with an array a
such that row D
a[i]
= M
i
.
Because of the property that a permutation matrix's inverse is its transpose, this function is equivalent to setColSources()
.
p | Array of indecies. |
|
inline |
Set the permutation described by this matrix by passing a mapping of destination rows to source rows in a row-permuting operation.
In other words, define the row-permuting multiplicaton:
P * M = D
with an array a
such that row D
i
= M
a[i]
.
p | Array of indecies. |
|
inline |
Compute the signature of this permutation.
Runs in O(n) time; or O(1) time if previously computed.
|
inline |
Adjust this matrix such that columns a
and b
are swapped in the destination matrix after applying a column permutation. This operation is cumulative on any previous swaps.
a | A column index. |
b | A column index. |
|
inline |
Adjust this matrix such that rows a
and b
are swapped in the destination matrix after applying a row permutation. This operation is cumulative on any previous swaps.
a | A row index. |
b | A row index. |
|
inline |
Transpose this matrix in-place in O(1) time. For this type of matrix, also the inverse matrix.