![]() |
Vcsn
2.8
Be Rational
|
#include <reduce.hh>
Public Types | |
using | z_weight_t = vcsn::detail::z_impl::value_t |
Specializations for Q and R. More... | |
using | q_weight_t = vcsn::detail::q_impl::value_t |
using | r_weight_t = vcsn::detail::r_impl::value_t |
Public Member Functions | |
left_reductioner (const automaton_t &input) | |
void | linear_representation () |
Create the linear representation of the input. More... | |
void | product_vector_matrix (const vector_t &v, const matrix_t &m, vector_t &res) |
Computes the product of a row vector with a matrix. More... | |
weight_t | scalar_product (const vector_t &v, const vector_t &w) |
Computes the scalar product of two vectors. More... | |
unsigned | find_pivot_by_norm (const vector_t &v, unsigned begin, unsigned *permutation) |
void | z_reduce_vector (vector_t &vbasis, vector_t ¤t, unsigned nb, unsigned *permutation) |
void | z_vector_in_new_basis (std::vector< vector_t > &basis, vector_t ¤t, vector_t &new_vector, unsigned *permutation) |
unsigned | find_pivot (const vector_t &v, unsigned begin, unsigned *permutation) |
Return the first (w.r.t the column permutation) non zero element as pivot. More... | |
weight_t | reduce_vector (vector_t &vbasis, vector_t ¤t, unsigned b, unsigned *permutation) |
Reduce a vector w.r.t. More... | |
void | normalisation_vector (vector_t &v, unsigned pivot, unsigned *permutation) |
Normalize the basis vector such that its pivot is equal to 1. More... | |
void | bottom_up_reduction (std::vector< vector_t > &basis, unsigned *permutation) |
Apply reduction to vectors of the basis to maximize the number of zeros. More... | |
void | vector_in_new_basis (std::vector< vector_t > &basis, vector_t ¤t, vector_t &new_vector, unsigned *permutation) |
Compute the coordinate of a vector in the new basis. More... | |
output_automaton_t | operator() () |
Core algorithm This algorithm computes a basis of I.mu(w). More... | |
Static Public Member Functions | |
static weight_t | norm (const q_weight_t &w) |
static weight_t | norm (const r_weight_t &w) |
Norm for real numbers; a "stable" pivot should minimize this norm. More... | |
static weight_t | norm (const z_weight_t &w) |
Norm for integers. More... | |
static z_weight_t | gcd (z_weight_t x, z_weight_t y, z_weight_t &a, z_weight_t &b) |
Private Types | |
using | automaton_t = Aut |
using | context_t = context_t_of< automaton_t > |
using | weightset_t = typename context_t::weightset_t |
using | output_automaton_t = fresh_automaton_t_of< automaton_t > |
using | label_t = label_t_of< automaton_t > |
using | state_t = state_t_of< automaton_t > |
using | output_state_t = state_t_of< output_automaton_t > |
using | weight_t = typename context_t::weight_t |
using | vector_t = std::vector< weight_t > |
using | matrix_t = std::vector< std::map< std::size_t, weight_t > > |
using | matrix_set_t = std::map< label_t, matrix_t > |
Private Attributes | |
automaton_t | input_ |
const weightset_t_of< automaton_t > | ws_ = *input_->weightset() |
output_automaton_t | res_ |
unsigned | dimension_ = 0 |
vector_t | init_ |
vector_t | final_ |
matrix_set_t | letter_matrix_set_ |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
using vcsn::detail::left_reductioner< Aut >::q_weight_t = vcsn::detail::q_impl::value_t |
using vcsn::detail::left_reductioner< Aut >::r_weight_t = vcsn::detail::r_impl::value_t |
|
private |
|
private |
|
private |
|
private |
using vcsn::detail::left_reductioner< Aut >::z_weight_t = vcsn::detail::z_impl::value_t |
|
inline |
|
inline |
Apply reduction to vectors of the basis to maximize the number of zeros.
Definition at line 462 of file reduce.hh.
References vcsn::detail::select< Weightset >::reduce_vector().
|
inline |
|
inline |
|
inlinestatic |
Definition at line 325 of file reduce.hh.
References vcsn::detail::gcd(), and vcsn::res.
|
inline |
Create the linear representation of the input.
Definition at line 213 of file reduce.hh.
References vcsn::detail::final_transitions(), vcsn::detail::initial_transitions(), and vcsn::detail::transitions().
|
inlinestatic |
Definition at line 282 of file reduce.hh.
References vcsn::detail::q_impl::value_t::den, and vcsn::detail::q_impl::value_t::num.
|
inlinestatic |
|
inlinestatic |
|
inline |
|
inline |
Core algorithm This algorithm computes a basis of I.mu(w).
The basis is scaled.
An automaton where states correspond to the vectors of this basis is built
Definition at line 487 of file reduce.hh.
References vcsn::detail::swap(), and vcsn::detail::v.
|
inline |
|
inline |
Reduce a vector w.r.t.
a vector of the basis.
When this method is called, in vbasis and current, all the entries that come before (w.r.t the permutation) the pivot are zero. Moreover, vbasis[pivot]=1 This method computes current := current - current[pivot].vbasis
|
inline |
|
inline |
Compute the coordinate of a vector in the new basis.
Definition at line 471 of file reduce.hh.
References vcsn::detail::select< Weightset >::reduce_vector().
|
inline |
Definition at line 365 of file reduce.hh.
References vcsn::detail::gcd().
|
inline |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |