![]() |
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_ |