# Optimal 2x2x3--Humanly possible?



## fanwuq (Jul 11, 2009)

For most FMC solvers, finding a 2x2x3 less than 10 moves is often the first step to a solution. I usually try to build several random blocks several times and usually achieve it after applying a premove. However, that is not the way 
Johannes Laire's cube solver ( http://laire.dy.fi/jarcs/ )work. I tried a few solutions and I do not quite understand how it works. The first 3 moves usually looks pretty random. How does it work? Is it possible for a human to use a similar approach to get the solution in 2-3 minutes?
The 2x2x2 and cross solver's solutions are pretty easy to follow (although often it is a bit more efficient than my usual speedsolve solutions.)

Edit:
Scramble:
D' U2 L R U B2 D U' F2 D L2 R2 B2 F' R' B' F' R D F L B2 D U' F
2x2x2: D2 L' D' L2
I saw that.
Cross: D2 L2 D' L' U'
Did not see that because I'm not color neutral, but it was easy to follow. I saw the optimal on D and U.
2x2x3: U2 D R D L' B' D' L2
Did not suspect the first 2 moves at all.


----------



## ErikJ (Jul 11, 2009)

crap. I have to practice FMC for nationals.


----------



## Johannes91 (Jul 12, 2009)

fanwuq said:


> The first 3 moves usually looks pretty random. How does it work? Is it possible for a human to use a similar approach to get the solution in 2-3 minutes?


It doesn't do any thinking like humans at all, just tries all possibilities, backtracks when it knows it's heading towards a dead end, and stops when it has the optimal solutions.

To learn to do something similar, I think a good start would be mastering all easy cases. Maybe at most 5-6 moves or so. A program that generates scrambles for a chosen length would be useful here. It could keep track of which scrambles you couldn't solve and generate those again later, and the ones you could solve without mistakes, it wouldn't generate again.

After you've learned all the different patterns well and can see how to solve them instantly, start practising longer solutions. For 7-movers, you would need to look ahead one or two moves. Solve a lot of scrambles and try to learn as many unique solutions as possible by heart and get fast at looking ahead a couple of moves.

I don't how well this would work. About 20% of the time, the optimal color neutral solution is 9-10 moves HTM. (On the other hand, when it's so deep, there are usually many many different solutions.) Learning to find them reasonably quickly would certainly take a lot of work, but considering what professional Go or chess players can do, I'm sure it's possible. Learn optimal tripod while you're at it and you'll be crazy good at fewest moves solving.


----------



## AvGalen (Jul 15, 2009)

Always finding an optimal 2x2x3 in a couple of minutes seems impossible to me because there are so many pieces involved that influence eachother. That is why finding an optimal cross is doable, but finding an optimal X-Cross is extremely hard.

Chess and Go players don't do optimal, they do "very good". For FMC finding a "very good" start is already useful and it is often better to try 5 "very good" starts then 1 "optimal" start


----------



## Johannes91 (Jul 15, 2009)

AvGalen said:


> Chess and Go players don't do optimal, they do "very good".


They can find optimal solutions for difficult problems (tsumego in Go terms). Their reading is really incredibly deep and accurate, no cuber is anywhere near that good. It's hard to speculate what the "limits" are for cubing, and maybe I'm wrong, but finding an optimal 2x2x3 block in 2-3 minutes almost every time (let's say 99%) doesn't seem impossible at all.



AvGalen said:


> For FMC finding a "very good" start is already useful and it is often better to try 5 "very good" starts then 1 "optimal" start


True, and that's one of the reasons I think linear solving is much more interesting.


----------



## blah (Jul 15, 2009)

Johannes91 said:


> finding an optimal 2x2x3 block in 2-3 minutes almost every time (let's say 99%) doesn't seem impossible at all.



That'll be my new goal then


----------



## blah (Jul 17, 2009)

Johannes91 said:


> About 20% of the time, the optimal color neutral solution is 9-10 moves HTM.


Sorry for the dumb question, but what about the other 80%? Is it > or < 9-10 moves HTM?


----------



## fanwuq (Jul 17, 2009)

I assume it is less, but can't verify because I can't seem to access Johannes's site right now.


----------



## blah (Jul 17, 2009)

fanwuq said:


> I assume it is less, but can't verify because I can't seem to access Johannes's site right now.


Same reason I asked the question  Seems to be down most of the time...


----------



## Johannes91 (Jul 17, 2009)

blah said:


> Johannes91 said:
> 
> 
> > About 20% of the time, the optimal color neutral solution is 9-10 moves HTM.
> ...


Less. Here's a distribution: http://laire.dy.fi/t/charts/2x2x3.png. The theoretical maximum (with color neutrality) is 11 and it's really rare (haven't found any in 2 million scrambles).

My internet connection has sucked a lot recently, it was just down for 28 hours...


----------



## blah (Jul 17, 2009)

Johannes91 said:


> blah said:
> 
> 
> > Johannes91 said:
> ...


I'm not sure if I'm interpreting the data correctly: Does that mean that (in an FMC with a 60-minute time limit) if I've found an 8/9-move 2x2x3, there really isn't any need for me to look for a better one?

Also, if I remember correctly, that solver you created was written in JavaScript right? Does that mean I can just use the source code and use it offline whenever I'd like to? Otherwise, do you happen to have an offline version of your solver that you'd allow me to use?


----------



## Johannes91 (Jul 17, 2009)

blah said:


> Does that mean that (in an FMC with a 60-minute time limit) if I've found an 8/9-move 2x2x3, there really isn't any need for me to look for a better one?


There's a ~20% chance that the optimal block is <8 moves. You're probably right, spending a lot of time looking for one is not worth it.



blah said:


> Also, if I remember correctly, that solver you created was written in JavaScript right?


Umm, no. The ones in /old are in Perl, a couple of random ones in C, all in /jarcs in Haskell. None in JavaScript, it's not exactly a good language for that.



blah said:


> Otherwise, do you happen to have an offline version of your solver that you'd allow me to use?


Not really. It needs the JavaScript interface anyway, so you'd need to install a server. And there's over 2GiB of data that takes a while to generate. I've been thinking of making an offline solver for a while, but I'm more interested in other things at the moment.


----------



## blah (Jul 17, 2009)

Johannes91 said:


> It needs the JavaScript interface anyway, so you'd need to install a server.


Can you translate that to computer-idiot-English?


----------



## mrCage (Jul 19, 2009)

blah said:


> Johannes91 said:
> 
> 
> > It needs the JavaScript interface anyway, so you'd need to install a server.
> ...


 
You know about client side and server side? Try "wiki" it

Per


----------



## Johannes91 (Jul 19, 2009)

blah said:


> Johannes91 said:
> 
> 
> > It needs the JavaScript interface anyway, so you'd need to install a server.
> ...


Ok: There's no way to use it offline, my site will have to do for now.


----------



## blah (Jul 20, 2009)

mrCage said:


> blah said:
> 
> 
> > Johannes91 said:
> ...


Hmm. I'm consider myself quite the computer idiot when it comes to stuff like these. But I _do_ know bits and pieces, for instance, I know that JavaScript is a client side scripting language and PHP is a server side one. JavaScript can run in an offline browser (e.g. the WCA scramblers); but for PHP you need a server installed for it to run, something like that I guess? 

I _have_ messed around with PHP for about a week so I do have Apache installed on my computer. What I don't get is why Johannes said a server is needed for JavaScript.


----------



## Johannes91 (Jul 20, 2009)

blah said:


> What I don't get is why Johannes said a server is needed for JavaScript.


It's needed for the solver, which isn't written in JavaScript.


----------

