The algorithms already avoid evaluating x-axis mirrored folds by always initializing them with [-1].
However, there also exists y-symmetry (and even z-symmetry in 3D).
I wonder if the search tree could be pruned even more by accounting for this.
A naive approach would be to store the "mirrored partial hash" of visited subtrees in a std::set<std::string>.
(E.g.: [-1,2,1,1]$\rightarrow$[-1,-2,1,1])
To conserve memory, and since the effectiveness diminishes with smaller subtrees, this can be limited to a maximum partial hash length.
I wonder if a more sophisticated approach exists.
The algorithms already avoid evaluating x-axis mirrored folds by always initializing them with
[-1].However, there also exists y-symmetry (and even z-symmetry in 3D).
I wonder if the search tree could be pruned even more by accounting for this.$\rightarrow$
A naive approach would be to store the "mirrored partial hash" of visited subtrees in a
std::set<std::string>.(E.g.:
[-1,2,1,1][-1,-2,1,1])To conserve memory, and since the effectiveness diminishes with smaller subtrees, this can be limited to a maximum partial hash length.
I wonder if a more sophisticated approach exists.