Awali
Another Weighted Automata library
|
#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_ |
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.
using awali::sttc::internal::are_isomorphicer< Aut1, Aut2 >::class_pair_t = std::pair<states1_t, states2_t> |
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_.
using awali::sttc::internal::are_isomorphicer< Aut1, Aut2 >::state_classes_t = std::vector<class_pair_t> |
using awali::sttc::internal::are_isomorphicer< Aut1, Aut2 >::states1_t = std::vector<state_t> |
using awali::sttc::internal::are_isomorphicer< Aut1, Aut2 >::states2_t = std::vector<state_t> |
awali::sttc::internal::are_isomorphicer< Aut1, Aut2 >::are_isomorphicer | ( | const Aut1 & | a1, |
const Aut2 & | a2 | ||
) |
long awali::sttc::internal::are_isomorphicer< Aut1, Aut2 >::factorial | ( | long | n | ) |
const full_response awali::sttc::internal::are_isomorphicer< Aut1, Aut2 >::get_full_response | ( | ) |
const full_response awali::sttc::internal::are_isomorphicer< Aut1, Aut2 >::get_full_response_nonsequential | ( | ) |
const full_response awali::sttc::internal::are_isomorphicer< Aut1, Aut2 >::get_full_response_sequential | ( | ) |
void awali::sttc::internal::are_isomorphicer< Aut1, Aut2 >::initialize_next_class_combination_state | ( | ) |
bool awali::sttc::internal::are_isomorphicer< Aut1, Aut2 >::is_isomorphism_valid | ( | ) |
bool awali::sttc::internal::are_isomorphicer< Aut1, Aut2 >::is_isomorphism_valid_throwing | ( | ) |
const state_classes_t awali::sttc::internal::are_isomorphicer< Aut1, Aut2 >::make_state_classes | ( | ) |
bool awali::sttc::internal::are_isomorphicer< Aut1, Aut2 >::next_class_combination | ( | ) |
bool awali::sttc::internal::are_isomorphicer< Aut1, Aut2 >::operator() | ( | ) |
origins_t awali::sttc::internal::are_isomorphicer< Aut1, Aut2 >::origins | ( | ) |
Only meaningful if operator() returned true.
|
static |
Print origins.
void awali::sttc::internal::are_isomorphicer< Aut1, Aut2 >::print_class_stats | ( | const state_classes_t & | cs | ) |
Handy debugging method.
void awali::sttc::internal::are_isomorphicer< Aut1, Aut2 >::print_classes | ( | const state_classes_t & | cs | ) |
Handy debugging method.
class_id awali::sttc::internal::are_isomorphicer< Aut1, Aut2 >::state_to_class | ( | state_t | s, |
Automaton & | a | ||
) |
void awali::sttc::internal::are_isomorphicer< Aut1, Aut2 >::update_result_isomorphism | ( | ) |
std::vector<long> awali::sttc::internal::are_isomorphicer< Aut1, Aut2 >::class_permutation_generated_ |
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_t awali::sttc::internal::are_isomorphicer< Aut1, Aut2 >::state_classes_ |