Vcsn  2.2
Be Rational
vcsn::detail::epsilon_remover_distance< Aut, has_one > Class Template Reference

This class contains the core of the proper algorithm. More...

#include <epsilon-remover-distance.hh>

Collaboration diagram for vcsn::detail::epsilon_remover_distance< Aut, has_one >:

Public Member Functions

 epsilon_remover_distance (const automaton_t &aut, bool prune=true)
 
aut_proper_t operator() ()
 

Private Types

using automaton_t = std::remove_cv_t< Aut >
 
using state_t = state_t_of< automaton_t >
 
using weightset_t = weightset_t_of< automaton_t >
 
using weight_t = typename weightset_t::value_t
 
using labelset_t = labelset_t_of< automaton_t >
 
using transition_t = transition_t_of< automaton_t >
 
using dirty_ctx_t = context< vcsn::oneset, weightset_t >
 Context for spontaneous automaton (only spontaneous transitions of the input automaton). More...
 
using aut_dirty_t = mutable_automaton< dirty_ctx_t >
 Spontaneous automaton. More...
 
using state_dirty_t = state_t_of< aut_dirty_t >
 
using proper_ctx_t = detail::proper_context< context_t_of< Aut >>
 Context for proper automaton (only proper transitions). More...
 
using aut_proper_t = fresh_automaton_t_of< Aut, proper_ctx_t >
 Proper automaton. More...
 
using state_proper_t = state_t_of< aut_proper_t >
 
using label_proper_t = label_t_of< aut_proper_t >
 

Private Attributes

aut_proper_t aut_proper_
 The automata we work on. More...
 
aut_dirty_t aut_dirty_
 
const weightset_tws_
 Shorthand to the weightset. More...
 
bool prune_
 Whether to prune states that become inaccessible. More...
 
std::vector< state_proper_td2p_
 dirty states -> proper states. More...
 
std::vector< state_dirty_tp2d_
 proper states -> dirty states. More...
 
std::vector< std::vector< weight_t > > de_
 

Detailed Description

template<Automaton Aut, bool has_one = labelset_t_of<Aut>::has_one()>
class vcsn::detail::epsilon_remover_distance< Aut, has_one >

This class contains the core of the proper algorithm.

This class is specialized for labels_are_letter automata since all these methods become trivial.

Definition at line 21 of file epsilon-remover-distance.hh.

Member Typedef Documentation

template<Automaton Aut, bool has_one = labelset_t_of<Aut>::has_one()>
using vcsn::detail::epsilon_remover_distance< Aut, has_one >::aut_dirty_t = mutable_automaton<dirty_ctx_t>
private

Spontaneous automaton.

Definition at line 34 of file epsilon-remover-distance.hh.

template<Automaton Aut, bool has_one = labelset_t_of<Aut>::has_one()>
using vcsn::detail::epsilon_remover_distance< Aut, has_one >::aut_proper_t = fresh_automaton_t_of<Aut, proper_ctx_t>
private

Proper automaton.

Definition at line 40 of file epsilon-remover-distance.hh.

template<Automaton Aut, bool has_one = labelset_t_of<Aut>::has_one()>
using vcsn::detail::epsilon_remover_distance< Aut, has_one >::automaton_t = std::remove_cv_t<Aut>
private

Definition at line 23 of file epsilon-remover-distance.hh.

template<Automaton Aut, bool has_one = labelset_t_of<Aut>::has_one()>
using vcsn::detail::epsilon_remover_distance< Aut, has_one >::dirty_ctx_t = context<vcsn::oneset, weightset_t>
private

Context for spontaneous automaton (only spontaneous transitions of the input automaton).

Definition at line 32 of file epsilon-remover-distance.hh.

template<Automaton Aut, bool has_one = labelset_t_of<Aut>::has_one()>
using vcsn::detail::epsilon_remover_distance< Aut, has_one >::label_proper_t = label_t_of<aut_proper_t>
private

Definition at line 42 of file epsilon-remover-distance.hh.

template<Automaton Aut, bool has_one = labelset_t_of<Aut>::has_one()>
using vcsn::detail::epsilon_remover_distance< Aut, has_one >::labelset_t = labelset_t_of<automaton_t>
private

Definition at line 27 of file epsilon-remover-distance.hh.

template<Automaton Aut, bool has_one = labelset_t_of<Aut>::has_one()>
using vcsn::detail::epsilon_remover_distance< Aut, has_one >::proper_ctx_t = detail::proper_context<context_t_of<Aut>>
private

Context for proper automaton (only proper transitions).

Definition at line 38 of file epsilon-remover-distance.hh.

template<Automaton Aut, bool has_one = labelset_t_of<Aut>::has_one()>
using vcsn::detail::epsilon_remover_distance< Aut, has_one >::state_dirty_t = state_t_of<aut_dirty_t>
private

Definition at line 35 of file epsilon-remover-distance.hh.

template<Automaton Aut, bool has_one = labelset_t_of<Aut>::has_one()>
using vcsn::detail::epsilon_remover_distance< Aut, has_one >::state_proper_t = state_t_of<aut_proper_t>
private

Definition at line 41 of file epsilon-remover-distance.hh.

template<Automaton Aut, bool has_one = labelset_t_of<Aut>::has_one()>
using vcsn::detail::epsilon_remover_distance< Aut, has_one >::state_t = state_t_of<automaton_t>
private

Definition at line 24 of file epsilon-remover-distance.hh.

template<Automaton Aut, bool has_one = labelset_t_of<Aut>::has_one()>
using vcsn::detail::epsilon_remover_distance< Aut, has_one >::transition_t = transition_t_of<automaton_t>
private

Definition at line 28 of file epsilon-remover-distance.hh.

template<Automaton Aut, bool has_one = labelset_t_of<Aut>::has_one()>
using vcsn::detail::epsilon_remover_distance< Aut, has_one >::weight_t = typename weightset_t::value_t
private

Definition at line 26 of file epsilon-remover-distance.hh.

template<Automaton Aut, bool has_one = labelset_t_of<Aut>::has_one()>
using vcsn::detail::epsilon_remover_distance< Aut, has_one >::weightset_t = weightset_t_of<automaton_t>
private

Definition at line 25 of file epsilon-remover-distance.hh.

Constructor & Destructor Documentation

Member Function Documentation

Member Data Documentation

template<Automaton Aut, bool has_one = labelset_t_of<Aut>::has_one()>
aut_dirty_t vcsn::detail::epsilon_remover_distance< Aut, has_one >::aut_dirty_
private
template<Automaton Aut, bool has_one = labelset_t_of<Aut>::has_one()>
aut_proper_t vcsn::detail::epsilon_remover_distance< Aut, has_one >::aut_proper_
private
template<Automaton Aut, bool has_one = labelset_t_of<Aut>::has_one()>
std::vector<state_proper_t> vcsn::detail::epsilon_remover_distance< Aut, has_one >::d2p_
private
template<Automaton Aut, bool has_one = labelset_t_of<Aut>::has_one()>
std::vector<std::vector<weight_t> > vcsn::detail::epsilon_remover_distance< Aut, has_one >::de_
private
template<Automaton Aut, bool has_one = labelset_t_of<Aut>::has_one()>
std::vector<state_dirty_t> vcsn::detail::epsilon_remover_distance< Aut, has_one >::p2d_
private

proper states -> dirty states.

Definition at line 131 of file epsilon-remover-distance.hh.

Referenced by vcsn::detail::epsilon_remover_distance< Aut, has_one >::epsilon_remover_distance().

template<Automaton Aut, bool has_one = labelset_t_of<Aut>::has_one()>
bool vcsn::detail::epsilon_remover_distance< Aut, has_one >::prune_
private

Whether to prune states that become inaccessible.

Definition at line 126 of file epsilon-remover-distance.hh.

Referenced by vcsn::detail::epsilon_remover_distance< Aut, has_one >::operator()(), and vcsn::detail::properer< Aut >::remover_().

template<Automaton Aut, bool has_one = labelset_t_of<Aut>::has_one()>
const weightset_t& vcsn::detail::epsilon_remover_distance< Aut, has_one >::ws_
private

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