Confirmation of Results for Edges Only Cube, Face Turn Metric, Reduced by Symmetry
Even though it's only confirmation of some rather ancient results, I would like to report that I have succeeded in replicating Tom Rokicki's 2004 results concerning the edges only cube in the face turn metric reduced by symmetry. My goal was not really to solve that particular problem. Rather, it was to use that problem as a way to prototype some ideas I have had for improving my previous programs that enumerate cube space.
The base speed of my program is that I am now able to enumerate about 1,000,000 positions per second per processor core when not reducing the problem by symmetry, and I am now able to enumerate about 150,000 symmetry representatives per second per processor core when reducing the problem by symmetry.
I use the term "base speed" because my algorithm still runs into problems with an excessive number of duplicate positions when it gets into the tail of a search space, for example when searching out to 12, 13, and 14 moves from Start in face turn metric for the edges only cube. There are 87,801,812 positions that are 7 moves from Start, there are 555,866 positions that are 5 moves from Start, and there are 304,786,076,626 positions that are 12 moves from Start in the face turn metric for the edges only cube. My program can store out to 7 moves from Start, and to enumerate out to 12 moves from Start it must form the product of all the positions that are 7 moves from Start with all the positions that are 5 moves from Start, for a total of 48,806,042,029,192 products. Therefore, there are about 160 times as many products as there are positions that are 12 moves from Start. That's a lot of wasted time producing products that result in duplicate positions. Many of the ideas I have used to improve my programs involve mitigating that particular problem.
The net of all the improvements is that my program ran for about 2.5 days on my laptop computer. It's a Dell Inspiron N5010 with two dual core processors each running at 2.67 GHz, running 64 bit Windows 7 with 8GB memory. Therefore, my machine has four processor cores, and my program is multithreaded. The net speed of all four threads after dealing with all the duplicate positions was 24,000 symmetry representatives per second per processor core.
I plan to continue for a while with the existing program, running it for the quarter turn metric, adding support for anti-symmetry, etc. But the real goal will be to include include the corners along with the edges to see how far from Start I can enumerate cube space.
I'm very doubtful that I will be able to get anywhere near as far from Start as others already have done with supercomputers and server farms just by using my home computer. But I think it will be fun project anyway. And I probably won't have to deal with the duplicate position problem in the tail of the search space because I won't be able to enumerate the edges plus corners out far enough from Start for tail of the search space to matter.