This version of the solver adds new search array
Dist7
(edge cube) for use with the optimal and presolved solvers.
The full size of the edge cube is 981 billion
configs which reduces by symmetry to 21 billion, it is further reduced to
660 MB by excluding three bits from edge twist and storing four configs per
byte.
The distribution of configs by depth for Dist7 is
here.
The distribution for the full size edge cube is
here,
search for: "Analysis of 3x3x3 edges only using q+h turns".
A different method is used for pruning with search arrays that contain
6-color cube components (Dist7 contains "EPR" component as defined
here) to avoid eliminating
3-color suboptimal solutions.
Instead of pruning based on search depth, it is done based on the minimum
length suboptimal solution that has currently been found (call it "minmv")
thus no 3-color suboptimal solutions that may prove to be optimal will
be eliminated.
This method relies on the 3-color pruning to quickly find a solution close
to optimal because it can only prune as efficiently as the normal method
when minmv = depth+1.
This is actually the state that the optimal solver is often in when solving
random cubes because it already has a 19 move suboptimal solution and it is
searching depth 18 so in either case it is pruning nodes where distance
> 18 (prune if dist > depth or dist ≥ minmv).
For best performance with concurrent processing, minmv should be shared
between workers so that they can all use the lowest minmv found by any
of them.
Prior versions of the solver did not share minmv which is why the log shows
multiple workers finding the same length solutions.
This version does share and as a result there are fewer solutions in the
log, usually only one for each solution length found.