It looks wrong to me. You should only have 4 new configurations at depth 1.
From solved, R and R' produce the same orientation configuration. Cubicles URB and DRF will each contain a cubie that is twisted clockwise, and cubicles UFR and DBR will contain counter-clockwise twisted cubies.
If you're using (DLB),UFR,ULF,URB,DRF,ULB,DFL,DBR cublicle ordering, the base 3 number should look like (0)2011002. This should give 1568 decimal. Your value of 84 (for R) would correspond to a base 3 number of (?)0010001, and it doesn't have any 2's (well, one if the "(?)" is a 2, but it actually needs to be 1 for the digits to add to 0 modulo 3) for the counterclockwise-twisted cubicles, so it doesn't make sense to me.
I changed the order of the cubicles for the place-value assignments in the power-of-3 section of the code that generates the orientation sub-index.
Here is ply 1 with the 1st two entries @ ply-2.
I still get R and R' tossing out different orientation indices from the solved state.
Code:
Node 1 == orientation # 0 [(base-3 number = 0000000) order UFR UFL UBL UBR DFR DFL DBL] @ depth 0 after --- 1 found, 2186 remain.
TOP FRONT RIGHT
--------------------- --------------------- ---------------------
|####|####|####|####| |OOOO|OOOO|OOOO|OOOO| |XXXX|XXXX|XXXX|XXXX|
--------------------- --------------------- ---------------------
|####|####|####|####| |OOOO|OOOO|OOOO|OOOO| |XXXX|XXXX|XXXX|XXXX|
--------------------- --------------------- ---------------------
|####|####|####|####| |OOOO|OOOO|OOOO|OOOO| |XXXX|XXXX|XXXX|XXXX|
--------------------- --------------------- ---------------------
|####|####|####|####| |OOOO|OOOO|OOOO|OOOO| |XXXX|XXXX|XXXX|XXXX|
--------------------- --------------------- ---------------------
BOTTOM BACK LEFT
--------------------- --------------------- ---------------------
|~~~~|~~~~|~~~~|~~~~| |&&&&|&&&&|&&&&|&&&&| |^^^^|^^^^|^^^^|^^^^|
--------------------- --------------------- ---------------------
|~~~~|~~~~|~~~~|~~~~| |&&&&|&&&&|&&&&|&&&&| |^^^^|^^^^|^^^^|^^^^|
--------------------- --------------------- ---------------------
|~~~~|~~~~|~~~~|~~~~| |&&&&|&&&&|&&&&|&&&&| |^^^^|^^^^|^^^^|^^^^|
--------------------- --------------------- ---------------------
|~~~~|~~~~|~~~~|~~~~| |&&&&|&&&&|&&&&|&&&&| |^^^^|^^^^|^^^^|^^^^|
--------------------- --------------------- ---------------------
Node 7 == orientation # 756 [(base-3 number = 1001000) order UFR UFL UBL UBR DFR DFL DBL] @ depth 1 after R. 2 found, 2185 remain.
TOP FRONT RIGHT
--------------------- --------------------- ---------------------
|####|####|####|OOOO| |OOOO|OOOO|OOOO|~~~~| |XXXX|XXXX|XXXX|XXXX|
--------------------- --------------------- ---------------------
|####|####|####|OOOO| |OOOO|OOOO|OOOO|~~~~| |XXXX|XXXX|XXXX|XXXX|
--------------------- --------------------- ---------------------
|####|####|####|OOOO| |OOOO|OOOO|OOOO|~~~~| |XXXX|XXXX|XXXX|XXXX|
--------------------- --------------------- ---------------------
|####|####|####|OOOO| |OOOO|OOOO|OOOO|~~~~| |XXXX|XXXX|XXXX|XXXX|
--------------------- --------------------- ---------------------
BOTTOM BACK LEFT
--------------------- --------------------- ---------------------
|~~~~|~~~~|~~~~|&&&&| |####|&&&&|&&&&|&&&&| |^^^^|^^^^|^^^^|^^^^|
--------------------- --------------------- ---------------------
|~~~~|~~~~|~~~~|&&&&| |####|&&&&|&&&&|&&&&| |^^^^|^^^^|^^^^|^^^^|
--------------------- --------------------- ---------------------
|~~~~|~~~~|~~~~|&&&&| |####|&&&&|&&&&|&&&&| |^^^^|^^^^|^^^^|^^^^|
--------------------- --------------------- ---------------------
|~~~~|~~~~|~~~~|&&&&| |####|&&&&|&&&&|&&&&| |^^^^|^^^^|^^^^|^^^^|
--------------------- --------------------- ---------------------
Node 8 == orientation # 738 [(base-3 number = 1000100) order UFR UFL UBL UBR DFR DFL DBL] @ depth 1 after R'. 3 found, 2184 remain.
TOP FRONT RIGHT
--------------------- --------------------- ---------------------
|####|####|####|&&&&| |OOOO|OOOO|OOOO|####| |XXXX|XXXX|XXXX|XXXX|
--------------------- --------------------- ---------------------
|####|####|####|&&&&| |OOOO|OOOO|OOOO|####| |XXXX|XXXX|XXXX|XXXX|
--------------------- --------------------- ---------------------
|####|####|####|&&&&| |OOOO|OOOO|OOOO|####| |XXXX|XXXX|XXXX|XXXX|
--------------------- --------------------- ---------------------
|####|####|####|&&&&| |OOOO|OOOO|OOOO|####| |XXXX|XXXX|XXXX|XXXX|
--------------------- --------------------- ---------------------
BOTTOM BACK LEFT
--------------------- --------------------- ---------------------
|~~~~|~~~~|~~~~|OOOO| |~~~~|&&&&|&&&&|&&&&| |^^^^|^^^^|^^^^|^^^^|
--------------------- --------------------- ---------------------
|~~~~|~~~~|~~~~|OOOO| |~~~~|&&&&|&&&&|&&&&| |^^^^|^^^^|^^^^|^^^^|
--------------------- --------------------- ---------------------
|~~~~|~~~~|~~~~|OOOO| |~~~~|&&&&|&&&&|&&&&| |^^^^|^^^^|^^^^|^^^^|
--------------------- --------------------- ---------------------
|~~~~|~~~~|~~~~|OOOO| |~~~~|&&&&|&&&&|&&&&| |^^^^|^^^^|^^^^|^^^^|
--------------------- --------------------- ---------------------
Node 10 == orientation # 328 [(base-3 number = 0110011) order UFR UFL UBL UBR DFR DFL DBL] @ depth 1 after L'. 4 found, 2183 remain.
TOP FRONT RIGHT
--------------------- --------------------- ---------------------
|OOOO|####|####|####| |~~~~|OOOO|OOOO|OOOO| |XXXX|XXXX|XXXX|XXXX|
--------------------- --------------------- ---------------------
|OOOO|####|####|####| |~~~~|OOOO|OOOO|OOOO| |XXXX|XXXX|XXXX|XXXX|
--------------------- --------------------- ---------------------
|OOOO|####|####|####| |~~~~|OOOO|OOOO|OOOO| |XXXX|XXXX|XXXX|XXXX|
--------------------- --------------------- ---------------------
|OOOO|####|####|####| |~~~~|OOOO|OOOO|OOOO| |XXXX|XXXX|XXXX|XXXX|
--------------------- --------------------- ---------------------
BOTTOM BACK LEFT
--------------------- --------------------- ---------------------
|&&&&|~~~~|~~~~|~~~~| |&&&&|&&&&|&&&&|####| |^^^^|^^^^|^^^^|^^^^|
--------------------- --------------------- ---------------------
|&&&&|~~~~|~~~~|~~~~| |&&&&|&&&&|&&&&|####| |^^^^|^^^^|^^^^|^^^^|
--------------------- --------------------- ---------------------
|&&&&|~~~~|~~~~|~~~~| |&&&&|&&&&|&&&&|####| |^^^^|^^^^|^^^^|^^^^|
--------------------- --------------------- ---------------------
|&&&&|~~~~|~~~~|~~~~| |&&&&|&&&&|&&&&|####| |^^^^|^^^^|^^^^|^^^^|
--------------------- --------------------- ---------------------
Node 13 == orientation # 1968 [(base-3 number = 2200220) order UFR UFL UBL UBR DFR DFL DBL] @ depth 1 after F. 5 found, 2182 remain.
TOP FRONT RIGHT
--------------------- --------------------- ---------------------
|####|####|####|####| |OOOO|OOOO|OOOO|OOOO| |####|XXXX|XXXX|XXXX|
--------------------- --------------------- ---------------------
|####|####|####|####| |OOOO|OOOO|OOOO|OOOO| |####|XXXX|XXXX|XXXX|
--------------------- --------------------- ---------------------
|####|####|####|####| |OOOO|OOOO|OOOO|OOOO| |####|XXXX|XXXX|XXXX|
--------------------- --------------------- ---------------------
|^^^^|^^^^|^^^^|^^^^| |OOOO|OOOO|OOOO|OOOO| |####|XXXX|XXXX|XXXX|
--------------------- --------------------- ---------------------
BOTTOM BACK LEFT
--------------------- --------------------- ---------------------
|XXXX|XXXX|XXXX|XXXX| |&&&&|&&&&|&&&&|&&&&| |^^^^|^^^^|^^^^|~~~~|
--------------------- --------------------- ---------------------
|~~~~|~~~~|~~~~|~~~~| |&&&&|&&&&|&&&&|&&&&| |^^^^|^^^^|^^^^|~~~~|
--------------------- --------------------- ---------------------
|~~~~|~~~~|~~~~|~~~~| |&&&&|&&&&|&&&&|&&&&| |^^^^|^^^^|^^^^|~~~~|
--------------------- --------------------- ---------------------
|~~~~|~~~~|~~~~|~~~~| |&&&&|&&&&|&&&&|&&&&| |^^^^|^^^^|^^^^|~~~~|
--------------------- --------------------- ---------------------
Node 16 == orientation # 216 [(base-3 number = 0022000) order UFR UFL UBL UBR DFR DFL DBL] @ depth 1 after B'. 6 found, 2181 remain.
TOP FRONT RIGHT
--------------------- --------------------- ---------------------
|^^^^|^^^^|^^^^|^^^^| |OOOO|OOOO|OOOO|OOOO| |XXXX|XXXX|XXXX|####|
--------------------- --------------------- ---------------------
|####|####|####|####| |OOOO|OOOO|OOOO|OOOO| |XXXX|XXXX|XXXX|####|
--------------------- --------------------- ---------------------
|####|####|####|####| |OOOO|OOOO|OOOO|OOOO| |XXXX|XXXX|XXXX|####|
--------------------- --------------------- ---------------------
|####|####|####|####| |OOOO|OOOO|OOOO|OOOO| |XXXX|XXXX|XXXX|####|
--------------------- --------------------- ---------------------
BOTTOM BACK LEFT
--------------------- --------------------- ---------------------
|~~~~|~~~~|~~~~|~~~~| |&&&&|&&&&|&&&&|&&&&| |~~~~|^^^^|^^^^|^^^^|
--------------------- --------------------- ---------------------
|~~~~|~~~~|~~~~|~~~~| |&&&&|&&&&|&&&&|&&&&| |~~~~|^^^^|^^^^|^^^^|
--------------------- --------------------- ---------------------
|~~~~|~~~~|~~~~|~~~~| |&&&&|&&&&|&&&&|&&&&| |~~~~|^^^^|^^^^|^^^^|
--------------------- --------------------- ---------------------
|XXXX|XXXX|XXXX|XXXX| |&&&&|&&&&|&&&&|&&&&| |~~~~|^^^^|^^^^|^^^^|
--------------------- --------------------- ---------------------
Node 17 == orientation # 164 [(base-3 number = 0020002) order UFR UFL UBL UBR DFR DFL DBL] @ depth 1 after B. 7 found, 2180 remain.
TOP FRONT RIGHT
--------------------- --------------------- ---------------------
|XXXX|XXXX|XXXX|XXXX| |OOOO|OOOO|OOOO|OOOO| |XXXX|XXXX|XXXX|~~~~|
--------------------- --------------------- ---------------------
|####|####|####|####| |OOOO|OOOO|OOOO|OOOO| |XXXX|XXXX|XXXX|~~~~|
--------------------- --------------------- ---------------------
|####|####|####|####| |OOOO|OOOO|OOOO|OOOO| |XXXX|XXXX|XXXX|~~~~|
--------------------- --------------------- ---------------------
|####|####|####|####| |OOOO|OOOO|OOOO|OOOO| |XXXX|XXXX|XXXX|~~~~|
--------------------- --------------------- ---------------------
BOTTOM BACK LEFT
--------------------- --------------------- ---------------------
|~~~~|~~~~|~~~~|~~~~| |&&&&|&&&&|&&&&|&&&&| |####|^^^^|^^^^|^^^^|
--------------------- --------------------- ---------------------
|~~~~|~~~~|~~~~|~~~~| |&&&&|&&&&|&&&&|&&&&| |####|^^^^|^^^^|^^^^|
--------------------- --------------------- ---------------------
|~~~~|~~~~|~~~~|~~~~| |&&&&|&&&&|&&&&|&&&&| |####|^^^^|^^^^|^^^^|
--------------------- --------------------- ---------------------
|^^^^|^^^^|^^^^|^^^^| |&&&&|&&&&|&&&&|&&&&| |####|^^^^|^^^^|^^^^|
--------------------- --------------------- ---------------------
Node 4 == orientation # 783 [(base-3 number = 1002000) order UFR UFL UBL UBR DFR DFL DBL] @ depth 2 after U R. 8 found, 2179 remain.
TOP FRONT RIGHT
--------------------- --------------------- ---------------------
|####|####|####|XXXX| |XXXX|XXXX|XXXX|~~~~| |XXXX|XXXX|XXXX|&&&&|
--------------------- --------------------- ---------------------
|####|####|####|OOOO| |OOOO|OOOO|OOOO|~~~~| |XXXX|XXXX|XXXX|&&&&|
--------------------- --------------------- ---------------------
|####|####|####|OOOO| |OOOO|OOOO|OOOO|~~~~| |XXXX|XXXX|XXXX|&&&&|
--------------------- --------------------- ---------------------
|####|####|####|OOOO| |OOOO|OOOO|OOOO|~~~~| |XXXX|XXXX|XXXX|&&&&|
--------------------- --------------------- ---------------------
BOTTOM BACK LEFT
--------------------- --------------------- ---------------------
|~~~~|~~~~|~~~~|&&&&| |####|^^^^|^^^^|^^^^| |OOOO|OOOO|OOOO|OOOO|
--------------------- --------------------- ---------------------
|~~~~|~~~~|~~~~|&&&&| |####|&&&&|&&&&|&&&&| |^^^^|^^^^|^^^^|^^^^|
--------------------- --------------------- ---------------------
|~~~~|~~~~|~~~~|&&&&| |####|&&&&|&&&&|&&&&| |^^^^|^^^^|^^^^|^^^^|
--------------------- --------------------- ---------------------
|~~~~|~~~~|~~~~|^^^^| |####|&&&&|&&&&|&&&&| |^^^^|^^^^|^^^^|^^^^|
--------------------- --------------------- ---------------------
Node 5 == orientation # 1476 [(base-3 number = 2000200) order UFR UFL UBL UBR DFR DFL DBL] @ depth 2 after U R'. 9 found, 2178 remain.
TOP FRONT RIGHT
--------------------- --------------------- ---------------------
|####|####|####|&&&&| |XXXX|XXXX|XXXX|####| |&&&&|XXXX|XXXX|XXXX|
--------------------- --------------------- ---------------------
|####|####|####|&&&&| |OOOO|OOOO|OOOO|####| |&&&&|XXXX|XXXX|XXXX|
--------------------- --------------------- ---------------------
|####|####|####|&&&&| |OOOO|OOOO|OOOO|####| |&&&&|XXXX|XXXX|XXXX|
--------------------- --------------------- ---------------------
|####|####|####|^^^^| |OOOO|OOOO|OOOO|####| |&&&&|XXXX|XXXX|XXXX|
--------------------- --------------------- ---------------------
BOTTOM BACK LEFT
--------------------- --------------------- ---------------------
|~~~~|~~~~|~~~~|XXXX| |~~~~|^^^^|^^^^|^^^^| |OOOO|OOOO|OOOO|OOOO|
--------------------- --------------------- ---------------------
|~~~~|~~~~|~~~~|OOOO| |~~~~|&&&&|&&&&|&&&&| |^^^^|^^^^|^^^^|^^^^|
--------------------- --------------------- ---------------------
|~~~~|~~~~|~~~~|OOOO| |~~~~|&&&&|&&&&|&&&&| |^^^^|^^^^|^^^^|^^^^|
--------------------- --------------------- ---------------------
|~~~~|~~~~|~~~~|OOOO| |~~~~|&&&&|&&&&|&&&&| |^^^^|^^^^|^^^^|^^^^|
--------------------- --------------------- ---------------------
This isn't that big a space; (24 choose 4) * (20 choose 4) for which I get 51M entries. No need
for distributed computing. Probably worth investigating.
Well you'd have to solve 51M entries via searching from scratch, and not via just move generation + hoping to run into a permutation * orientation as in the case of the corners table. With a distance-from-solved == 8 plies just for 1 center unsolved vs. 1 center unsolved, I imagine the longest to swap say 3 splattered on 1 face and 3 splattered on another could take 24 plies or longer. Might be a tough solve! And, you'd need data for every entry to make the table fully useful.
You can use some of the tricks on Jaap's site to
push things a bit further (for instance, four values in a byte by storing values mod 3 is a very classic
trick).
Oh, you can do waaaay better than 2 per byte if you use run-length encoding. When I solved the 440 billion positions in the 8-piece checkers endgame database, we averaged over 30 positions per byte by examining the runs of the same data and compressing it with data bytes that indicate how many were in a row.
Example in our case. Say you have indices where the results are (in turns from solved) 1,1,1,1,1,1,2,2,2,2,3,2,2,2,1,2,3,2,2,2,2,2,2,2,4,4,4,4,4,4,4,4,4,4,4,4
You represent the bytes as 1x6, 2x4, (3 + 2 as 4-bits each stuffed into a byte since they break up a run), (2 + 2 as 4-bits each since we don't run-length encode runs of 2 values in a row), (1 + 2, same reason), (3 + 2, same reason), 2x6, 4x12.
There is no reason to adhere to a standard where 1 represents the number 1, 2 represents the number 2, etc. I can encode "2" to mean "when I have 12 values in a row, each == 4."
In such a scheme, you have 1 byte per run of entries, and 1 byte per pair (as you suggested @ 4 bits each).
You create a lookup table as you compress the data, storing them in blocks with the last global index stored per block of data.
Code:
-----------------------------------------------------------------------------------------------------
| 205 | 206 | 50 | 34 | 18 | 50 | 207 | 208 |XXXX| store that index 36 is last entry in block |
-----------------------------------------------------------------------------------------------------
You can store up to 12 + 12 in one byte and only use 204 of the 255 values in a byte.
So you can make 205 to 255 mean anything you want!
1x6 = 205
2x4 = 206
(3 + 2 = 0011 0010) = 50
(2 + 2 = 0010 0010) = 34
(1 + 2 = 0001 0010) = 18
(3 + 2 = 0011 0010) = 50
2x6 = 207
4x12 = 208
This way, you have 36 entries encoded using only 8 bytes + a "last index in block" value that can store the largest index in your set, in this case, 4 bytes.
This means 36 entries in 12 bytes = 3 positions per byte.
So what you have is a cluster of fixed-size blocks in RAM, each of which you know the largest index contained therein. So to find the value of your position, here is what you do:
1. Generate the index.
2. Binary search among the blocks to find the block that contains the index.
3. Go to the start of that block, read the bytes sequentially, decoding the "skip" value for the entry, and keeping track until you encounter or surpass your index.
4. Once you are at such a location, the value of the byte tells you the value of your distance.
There is a "penalty" for decompression, so you want to only use this for very large databases that would not otherwise fit into RAM.