ZZF2L move count analysis - part 3

by Lars Vandenbergh, 7th May 2010

Last time we looked into the number of moves required to optimally solve two 3x2x1 blocks, one after the other. Now we’re going to split that up in to more bite-size steps.

Inevitably this is going to increase the move count, but it will also make the block building process a lot easier to conceive.

Splitting up 3x2x1 blocks

The best way to see how you can gradually build one 3x2x1 block is to look at the various ways in which you can break it up. You will find that there only two ways, really.

The first way is to build a 2x2x1 block on the side and connect it with a 2x1x1 block that is in the top layer.

3x2x1 block doublearrow 3x2x1 block - one move away doublearrow 3x2x1 block - two moves away
Solving 2x2x1 block followed by 2x1x1 block

The other way is to build a line consisting of 2 edge pieces on the side and connect it with a 3x1x1 block that is in the top layer.

3x2x1 block doublearrow 3x2x1 block - one move away doublearrow 3x2x1 block - two moves away
Solving line followed by 3x1x1 block

Clearly the latter option of making a line followed by a 3x1x1 block is rather limiting, especially with the line greatly blocking our freedom of movement.

Also, if we look at the results of the last analysis into more detail, it turns out that the majority of the optimal solutions of a full 3x2x1 block follow the first route, which is to build a 2x2x1 block and connect it with a 2x1x1 block. For instance, for building the second 3x2x1 block, 65.5% of the cases have an optimal solution that start off by making a 2x1x1 block.

Building a 2x2x1 block followed by a 2x1x1 block seems the best way to go and that’s the strategy we’re going to analyze.

Solving first 2x2x1 block

In this step we want to build a 2x2x1 block consisting of one corner piece and two edges pieces around any of the four bottom layer corners.

Let’s assume that we always build the first 2x2x1 block around a fixed corner.

EOLine arrow First 3x2x1 block
Solving first 2x2x1 block (fixed corner)

In this scenario, there is 1 corner piece that can be placed in 8 positions and 2 edge pieces that can be placed in 10 positions, adding up to a total of 3 x 8 x (10 x 9) = 2,160 cases.

Moves* # cases Distribution Cummulative
0 1 0.05% 0.05%
1 3 0.14% 0.19%
2 6 0.28% 0.46%
3 30 1.39% 1.85%
4 96 4.44% 6.30%
5 312 14.44% 20.74%
6 632 29.26% 50.00%
7 704 32.59% 82.59%
8 342 15.83% 98.43%
9 34 1.57% 100.00%
Weighted average: 6.39 moves*
*Quarter turn metric using only R, U and L faces

One can also build the first 2x2x1 block around any of two corners on a fixed side of the cube, which gives us slightly more options.

EOLine arrow First 3x2x1 block or First 2x2x1 block
Solving first 2x2x1 block (fixed side)

Now there are 2 corners that can be placed in 8 positions and 3 edges that can be placed in 10 positions, leaving us 32 x (8 x 7) x (10 x 9 x 8) = 362,880 cases to be explored.

Moves* # cases Distribution Cummulative
0 335 0.09% 0.09%
1 1,005 0.28% 0.37%
2 2,007 0.55% 0.92%
3 9,954 2.74% 3.67%
4 30,773 8.48% 12.15%
5 89,694 24.72% 36.86%
6 137,039 37.76% 74.63%
7 80,990 22.32% 96.95%
8 11,001 3.03% 99.98%
9 82 0.02% 100.00%
Weighted average: 5.74 moves*
*Quarter turn metric using only R, U and L faces

Finally, one could solve the first 2x2x1 block around any of the four corners of the bottom layer, leaving even more options open to find a short solution.

EOLine arrow First 3x2x1 block or First 2x2x1 block or First 2x2x1 block or First 2x2x1 block
Solving first 2x2x1 block (any corner)

With all remaining pieces of the first two layers involved, there are 20,575,296,000 cases in total, as we’ve worked out before.

Moves* # cases Distribution Cummulative
0 37,956,899 0.18% 0.18%
1 113,485,485 0.55% 0.74%
2 225,671,915 1.10% 1.83%
3 1,100,120,140 5.35% 7.18%
4 3,205,366,460 15.58% 22.76%
5 7,615,753,805 37.01% 59.77%
6 6,866,246,206 33.37% 93.14%
7 1,382,529,775 6.72% 99.86%
8 28,160,218 0.14% >99.99%
9 5,097 <0.01% 100.00%
Weighted average: 5.15 moves*
*Quarter turn metric using only R, U and L faces

Solving first 2x1x1 block

With the first 2x2x1 block in place, we can now connect it with the 2x1x1 block that matches it. This completes the first 3x2x1 block.

First 2x2x1 block arrow First 2x1x1 block
Solving first 2x1x1 block

In this scenario, there is 1 corner that can be placed in 7 positions and 1 edge than can be placed in 8 positions, adding up to a total of 3 x 8 x 7 = 168 cases.

Moves* # cases Distribution Cummulative
0 1 0.60% 0.60%
1 0 0.00% 0.60%
2 0 0.00% 0.60%
3 3 1.79% 2.38%
4 10 5.95% 8.33%
5 25 14.88% 23.21%
6 47 27.98% 51.19%
7 59 35.12% 86.31%
8 21 12.50% 98.81%
9 2 1.19% 100.00%
Weighted average: 6.28 moves*
*Quarter turn metric using only R, U and L faces

Solving second 2x2x1 block

With one side of the first two layers solved, we can now go on to solve a 2x2x1 block on the opposite side.

Again we can elect to always start with the same corner.

First 2x2x1 block arrow First 2x1x1 block
Solving second 2x1x1 block (fixed corner)

In this situation, there is 1 corner that can be placed in 6 positions and 2 edges that can be placed in 7 positions. Hence, the total number of cases is 3 x 6 x (7 x 6) = 756.

Moves* # cases Distribution Cummulative
0 1 0.13% 0.13%
1 3 0.40% 0.53%
2 6 0.79% 1.32%
3 18 2.38% 3.70%
4 38 5.03% 8.73%
5 102 13.49% 22.22%
6 150 19.84% 42.06%
7 224 29.63% 71.69%
8 138 18.25% 89.95%
9 66 8.73% 98.68%
10 10 1.32% 100.00%
Weighted average: 6.61 moves*
*Quarter turn metric using only R and U faces

Alternatively we can choose to build the second 2x2x1 block around any of the two remaining corners.

First 2x2x1 block arrow First 2x1x1 block or First 2x1x1 block
Solving second 2x2x1 block (any corner)

Now there are 2 corners that can be placed in 6 positions and 3 edge pieces that can be placed in 7 positions, meaning that there are 32 x (6 x 5) x (7 x 6 x 5) = 56,700 cases in total.

Moves* # cases Distribution Cummulative
0 149 0.26% 0.26%
1 447 0.79% 1.05%
2 891 1.57% 2.62%
3 2,633 4.64% 7.27%
4 5,311 9.37% 16.63%
5 12,882 22.72% 39.35%
6 15,395 27.15% 66.50%
7 14,503 25.58% 92.08%
8 3,972 7.01% 99.09%
9 505 0.89% 99.98%
10 12 0.02% 100.00%
Weighted average: 5.75 moves*
*Quarter turn metric using only R and U faces

Solving second 2x1x1 block

All that is left to do now is to solve the last 2x1x1 block to complete the first two layers.

First 2x2x1 block arrow First 2x1x1 block
Solving second 2x1x1 block

There is 1 corner that can be placed in 5 positions and 1 edge that can be placed in 5 positions, adding up to 3 x 5 x 5 = 75 cases for this final step.

Moves* # cases Distribution Cummulative
0 1 1.33% 1.33%
1 0 0.00% 1.33%
2 0 0.00% 1.33%
3 3 4.00% 5.33%
4 5 6.67% 12.00%
5 0 0.00% 12.00%
6 0 0.00% 12.00%
7 20 26.67% 38.67%
8 36 48.00% 86.67%
9 8 10.67% 97.33%
10 2 2.67% 100.00%
Weighted average: 7.32 moves*
*Quarter turn metric using only R and U faces

Cancellations

We have now established the move counts for each step individually. However when trying to apply this strategy in practice, you will often see that there are some ways to save a move here and there. Particularly during the transition between the 2x2x1 block and the 2x1x1 block, there is usually an opportunity to cancel out at least one move.

The move counts we have come up with are for solving the 2x2x1 block and aligning it with the Line on the bottom layer. The last move of such a solution will always be an L move when building the block on the left hand side and an R move when building the block on the right hand side. The only exception to this is when you completely skip this step.

First 2x2x1 block arrow First 2x1x1 block
The ending to any 2x2x1 block

Let’s assume for a while that we’re building a block on the right hand side. When you look at the optimal solutions of the 2x1x1 block, it very often also starts with an R move and thus cancels out with the last part of the 2x2x1 block, which always ends with an R move.

For the first 2x1x1 block, 98 out of the 168 cases have an optimal solution that starts with R. This means that in we can save 98 / 168 = 0.58 moves on average by looking for opportunities to “merge” the 2x2x1 and 2x1x1 blocks.

For the second 2x1x1 block, 31 out of the 75 cases have an optimal solution that starts with R. Here we can save 31 / 75 = 0.41 moves on average.

The way this would work out in practice is to keep the 2x2x1 block misaligned with the Line until the pieces of the 2x1x1 block are located. One can then go on to solve the 2x1x1 block without unnecessarily having to align and misalign the 2x2x1 block that was already there.

Thoughts

We have gathered enough statistics to be able to come up with an overall move count for this approach of making a 2x2x1 block followed by a 2x1x1 block twice.

There are three strategies we can follow:

  • Solving the blocks always starting with the same corner averages 25.61 moves
    = 6.39 + 6.28 - 0.58 + 6.61 + 7.32 - 0.41 moves
    = 12.09 moves (first side) + 13.52 moves (second side)
  • Solving the blocks always starting with the same side averages 24.10 moves
    = 5.74 + 6.28 - 0.58 + 5.75 + 7.32 - 0.41 moves
    = 11.44 moves (first side) + 12.66 moves (second side)
  • Solving the blocks starting with any corner averages 23.51 moves
    = 5.15 + 6.28 - 0.58 + 5.75 + 7.32 - 0.41 moves
    = 10.85 moves (first side) + 12.66 moves (second side)

With only a maximum of three pieces to solve at the same time, we could say that these figures are very good targets even for a human solver.

Again, to compare: the average move count for God’s Algorithm is 15.64 moves and the average move counts for solving two 3x2x1 blocks are 19.12 moves (any order) and 19.72 moves (fixed order).

The next step

We could continue this road and split up the building of the 2x2x1 blocks even further, like solving one edge piece followed by two 2x1x1 blocks. However this seems be rather incongruent with the philosophy of block building and will most likely yield poor results.

Rather than do that, we are going to challenge one restriction that we have assumed so far, namely completely solving one side before going on to solving the opposite side.

The beauty of ZZF2L is that you’re never short of options. After solving the first 2x2x1 block, there’s the option of adding a 2x1x1 block on the same side but there is also the option of building a 2x2x1 block on the opposite side straight away and then continuing from there.

This will be the focus of the next post.