Awali
Another Weighted Automata library
Data Structures | Public Types | Public Member Functions | Static Public Member Functions | Data Fields
awali::sttc::internal::are_isomorphicer< Aut1, Aut2 > Class Template Reference

#include <are_isomorphic.hh>

Public Types

using class_id = std::size_t
 Automaton states partitioned into classes. More...
 
using class_pair_t = std::pair< states1_t, states2_t >
 
using origins_t = std::map< state_t, state_t >
 A map from each a2_ state to the corresponding a1_ state. More...
 
using state_classes_t = std::vector< class_pair_t >
 
using states1_t = std::vector< state_t >
 
using states2_t = std::vector< state_t >
 

Public Member Functions

 are_isomorphicer (const Aut1 &a1, const Aut2 &a2)
 
long factorial (long n)
 
const full_response get_full_response ()
 
const full_response get_full_response_nonsequential ()
 
const full_response get_full_response_sequential ()
 
void initialize_next_class_combination_state ()
 
bool is_isomorphism_valid ()
 
bool is_isomorphism_valid_throwing ()
 
const state_classes_t make_state_classes ()
 
bool next_class_combination ()
 
bool operator() ()
 
origins_t origins ()
 Only meaningful if operator() returned true. More...
 
void print_class_stats (const state_classes_t &cs)
 Handy debugging method. More...
 
void print_classes (const state_classes_t &cs)
 Handy debugging method. More...
 
template<typename Automaton >
class_id state_to_class (state_t s, Automaton &a)
 
void update_result_isomorphism ()
 

Static Public Member Functions

static std::ostream & print (const origins_t &orig, std::ostream &o)
 Print origins. More...
 

Data Fields

std::vector< long > class_permutation_generated_
 
std::vector< long > class_permutation_max_
 We need to keep some (small) state between a next_class_combination call and the next. More...
 
state_classes_t state_classes_
 

Member Typedef Documentation

◆ class_id

template<typename Aut1 , typename Aut2 >
using awali::sttc::internal::are_isomorphicer< Aut1, Aut2 >::class_id = std::size_t

Automaton states partitioned into classes.

It's guaranteed that a left[right] state in a given class can not be isomorphic to a right[left] in a different class. The idea of course is to restrict the brute-force search to the states within a single class.

◆ class_pair_t

template<typename Aut1 , typename Aut2 >
using awali::sttc::internal::are_isomorphicer< Aut1, Aut2 >::class_pair_t = std::pair<states1_t, states2_t>

◆ origins_t

template<typename Aut1 , typename Aut2 >
using awali::sttc::internal::are_isomorphicer< Aut1, Aut2 >::origins_t = std::map<state_t, state_t>

A map from each a2_ state to the corresponding a1_ state.

The map is ordered, as usual for origins, hence different from fr_.s2tos1_.

◆ state_classes_t

template<typename Aut1 , typename Aut2 >
using awali::sttc::internal::are_isomorphicer< Aut1, Aut2 >::state_classes_t = std::vector<class_pair_t>

◆ states1_t

template<typename Aut1 , typename Aut2 >
using awali::sttc::internal::are_isomorphicer< Aut1, Aut2 >::states1_t = std::vector<state_t>

◆ states2_t

template<typename Aut1 , typename Aut2 >
using awali::sttc::internal::are_isomorphicer< Aut1, Aut2 >::states2_t = std::vector<state_t>

Constructor & Destructor Documentation

◆ are_isomorphicer()

template<typename Aut1 , typename Aut2 >
awali::sttc::internal::are_isomorphicer< Aut1, Aut2 >::are_isomorphicer ( const Aut1 &  a1,
const Aut2 &  a2 
)

Member Function Documentation

◆ factorial()

template<typename Aut1 , typename Aut2 >
long awali::sttc::internal::are_isomorphicer< Aut1, Aut2 >::factorial ( long  n)

◆ get_full_response()

template<typename Aut1 , typename Aut2 >
const full_response awali::sttc::internal::are_isomorphicer< Aut1, Aut2 >::get_full_response ( )

◆ get_full_response_nonsequential()

template<typename Aut1 , typename Aut2 >
const full_response awali::sttc::internal::are_isomorphicer< Aut1, Aut2 >::get_full_response_nonsequential ( )

◆ get_full_response_sequential()

template<typename Aut1 , typename Aut2 >
const full_response awali::sttc::internal::are_isomorphicer< Aut1, Aut2 >::get_full_response_sequential ( )

◆ initialize_next_class_combination_state()

template<typename Aut1 , typename Aut2 >
void awali::sttc::internal::are_isomorphicer< Aut1, Aut2 >::initialize_next_class_combination_state ( )

◆ is_isomorphism_valid()

template<typename Aut1 , typename Aut2 >
bool awali::sttc::internal::are_isomorphicer< Aut1, Aut2 >::is_isomorphism_valid ( )

◆ is_isomorphism_valid_throwing()

template<typename Aut1 , typename Aut2 >
bool awali::sttc::internal::are_isomorphicer< Aut1, Aut2 >::is_isomorphism_valid_throwing ( )

◆ make_state_classes()

template<typename Aut1 , typename Aut2 >
const state_classes_t awali::sttc::internal::are_isomorphicer< Aut1, Aut2 >::make_state_classes ( )

◆ next_class_combination()

template<typename Aut1 , typename Aut2 >
bool awali::sttc::internal::are_isomorphicer< Aut1, Aut2 >::next_class_combination ( )

◆ operator()()

template<typename Aut1 , typename Aut2 >
bool awali::sttc::internal::are_isomorphicer< Aut1, Aut2 >::operator() ( )

◆ origins()

template<typename Aut1 , typename Aut2 >
origins_t awali::sttc::internal::are_isomorphicer< Aut1, Aut2 >::origins ( )

Only meaningful if operator() returned true.

◆ print()

template<typename Aut1 , typename Aut2 >
static std::ostream& awali::sttc::internal::are_isomorphicer< Aut1, Aut2 >::print ( const origins_t orig,
std::ostream &  o 
)
static

Print origins.

◆ print_class_stats()

template<typename Aut1 , typename Aut2 >
void awali::sttc::internal::are_isomorphicer< Aut1, Aut2 >::print_class_stats ( const state_classes_t cs)

Handy debugging method.

◆ print_classes()

template<typename Aut1 , typename Aut2 >
void awali::sttc::internal::are_isomorphicer< Aut1, Aut2 >::print_classes ( const state_classes_t cs)

Handy debugging method.

◆ state_to_class()

template<typename Aut1 , typename Aut2 >
template<typename Automaton >
class_id awali::sttc::internal::are_isomorphicer< Aut1, Aut2 >::state_to_class ( state_t  s,
Automaton &  a 
)

◆ update_result_isomorphism()

template<typename Aut1 , typename Aut2 >
void awali::sttc::internal::are_isomorphicer< Aut1, Aut2 >::update_result_isomorphism ( )

Field Documentation

◆ class_permutation_generated_

template<typename Aut1 , typename Aut2 >
std::vector<long> awali::sttc::internal::are_isomorphicer< Aut1, Aut2 >::class_permutation_generated_

◆ class_permutation_max_

template<typename Aut1 , typename Aut2 >
std::vector<long> awali::sttc::internal::are_isomorphicer< Aut1, Aut2 >::class_permutation_max_

We need to keep some (small) state between a next_class_combination call and the next.

◆ state_classes_

template<typename Aut1 , typename Aut2 >
state_classes_t awali::sttc::internal::are_isomorphicer< Aut1, Aut2 >::state_classes_

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