PermutationRelationGraph
Takes permutations and a set of relations and builds a graph from them
__init__(self, relations):
relations:Anysets of rules connecting permutations
@classmethod
merge_groups(cls, groups):
This really needs to be cleaned up…
groups:Any:returns:_
@classmethod
make_relation_graph(cls, relations):
relations:Iterable[Iterable[Iterable[int]]]:returns:_
apply_rels(self, states, max_sum=None):
For each state checks if it is divisible by one of the group rules and if so applies the relevant transformations to it
states:Any:returns:_
build_state_graph(self, states, max_sum=None, extra_groups=None, max_iterations=10, raise_iteration_error=True):
states:Anymax_iterations:Anyraise_iteration_error:Any:returns:Iterable[np.ndarray]