dejavu
Fast probabilistic symmetry detection.
|
IR search using random walks. More...
#include <rand.h>
Public Member Functions | |
void | use_look_close (bool look_close=false) |
random_ir (timed_print &printer, groups::schreier_workspace &schreier, groups::automorphism_workspace &automorphism, random_source &rgenerator) | |
void | reset_statistics () |
void | random_walks (sgraph *g, dejavu_hook *hook, std::function< ir::type_selector_hook > *selector, ir::shared_tree &ir_tree, groups::compressed_schreier &group, ir::controller &local_state, ir::controller &other_state, int fail_limit) |
void | random_walks_from_tree (sgraph *g, dejavu_hook *hook, std::function< ir::type_selector_hook > *selector, ir::shared_tree &ir_tree, groups::compressed_schreier &group, ir::controller &local_state, ir::controller &other_state, int fail_limit) |
Static Public Member Functions | |
static bool | h_almost_done (groups::compressed_schreier &group) |
static void | specific_walk (sgraph *g, ir::shared_tree &ir_tree, ir::controller &local_state, std::vector< int > &base_vertex) |
Public Attributes | |
double | s_rolling_success = 0 |
double | s_rolling_first_level_success = 1.0 |
long | s_trace_cost1 = 0 |
int | s_paths = 0 |
int | s_paths_fail1 = 0 |
int | s_paths_failany = 0 |
int | s_succeed = 0 |
int | s_leaves = 0 |
int | s_min_split_number = 0 |
int | s_random_sift_success = 0 |
bool | h_look_close = false |
const int | h_hash_col_limit = 32 |
bool | h_sift_random = true |
int | h_sift_random_lim = 8 |
int | h_randomize_up_to = INT32_MAX |
IR search using random walks.
Performs random walks of the IR shared_tree, sifting resulting automorphisms into the given Schreier structure. If the Schreier structure is complete with respect to the base, or the probabilistic abort criterion satisfied, the process terminates. The algorithm guarantees to find all automorphisms up to the specified error bound.
Alternatively, a limit for the amount of discovered differing leaves can be set.
Objects contain a local workspace which contain datastructures only used for random_ir, as well as settings and for statistics of the search.
|
inline |
|
inlinestatic |
|
inline |
Performs Monte Carlo IR search.
Returns either when probabilistic or deterministic abort criterion is satisfied, or whenever the fail_limit
is reached.
May use non-uniform base-alignment to fill Schreier tables faster.
g | graph |
hook | hook to return automorphisms |
selector | cell selector |
ir_tree | ir tree computed so far |
group | Schreier structure to sift found automorphisms into, used to calculate probabilistic abort criterion |
local_state | Local workspace used to perform random walks of IR tree |
fail_limit | Limits the number of random IR walks not leading to a new automorphisms |
|
inline |
Performs Monte Carlo IR search. Uses a given IR tree to initiate the search further down the tree (i.e., if BFS has been performed, we can start from the furthest BFS level).
Returns either when probabilistic or deterministic abort criterion is satisfied, or whenever the fail_limit
is reached.
g | graph |
hook | hook to return automorphisms |
selector | cell selector |
ir_tree | ir tree computed so far |
group | Schreier structure to sift found automorphisms into, used to calculate probabilistic abort criterion |
local_state | Local workspace used to perform random walks of IR tree |
fail_limit | Limits the number of random IR walks not leading to a new automorphisms |
|
inline |
|
inlinestatic |
|
inline |
const int dejavu::search_strategy::random_ir::h_hash_col_limit = 32 |
bool dejavu::search_strategy::random_ir::h_look_close = false |
int dejavu::search_strategy::random_ir::h_randomize_up_to = INT32_MAX |
bool dejavu::search_strategy::random_ir::h_sift_random = true |
int dejavu::search_strategy::random_ir::h_sift_random_lim = 8 |
int dejavu::search_strategy::random_ir::s_leaves = 0 |
int dejavu::search_strategy::random_ir::s_min_split_number = 0 |
int dejavu::search_strategy::random_ir::s_paths = 0 |
int dejavu::search_strategy::random_ir::s_paths_fail1 = 0 |
int dejavu::search_strategy::random_ir::s_paths_failany = 0 |
int dejavu::search_strategy::random_ir::s_random_sift_success = 0 |
double dejavu::search_strategy::random_ir::s_rolling_first_level_success = 1.0 |
double dejavu::search_strategy::random_ir::s_rolling_success = 0 |
int dejavu::search_strategy::random_ir::s_succeed = 0 |
long dejavu::search_strategy::random_ir::s_trace_cost1 = 0 |