Hello, while looking something up on google, I stumbled upon the phrase : "A computer can solve a cube using a human method in negligible time, well under a second, even in the slowest of programming languages.", I found that it was a nice challenge, so I picked up a method (CFOP) and attempted to do that myself and sure enough I made something that works and that has a movecount average that is similar to the one given on the wiki. But there are a few things that I did that I'm not happy with. So I am sort of looking for the solution.
I would like to precise that my question is only on the algorithmic aspect of the solving method, not on the representation of the cube.
Here are the difficulties I have had:
In order to implement the cross solution, I used the A* search algorithm (apparently not uncommon for that purpose) but it took me a long time to figure out a heuristic that makes the program terminate in a reasonable amount of time (well under a second), and the only one I have found so far is the sum of the amount of moves required to solve each edge individually, but the problem is that that heuristic most of the time overestimates the distance, therefore I have no guarantee that the solution is optimal, therefore it probably isn't.
I'm pretty sure someone (if not everyone) has done a cross solver, what heuristic do competent people use? Do they even use A*?
Basically the same question for F2L, the one I have now is very basic, sum for each pair of this heuristic : If pair solved : 0 (of course), if pair is a trigger away from being solved from U layer : 4 (AUF + 3 move insert), else 7.
And I've been trying do devise a heuristic for Roux first block but nothing I could think of terminated in less than a few minutes.
Thanks in advance, Florentin.
I would like to precise that my question is only on the algorithmic aspect of the solving method, not on the representation of the cube.
Here are the difficulties I have had:
In order to implement the cross solution, I used the A* search algorithm (apparently not uncommon for that purpose) but it took me a long time to figure out a heuristic that makes the program terminate in a reasonable amount of time (well under a second), and the only one I have found so far is the sum of the amount of moves required to solve each edge individually, but the problem is that that heuristic most of the time overestimates the distance, therefore I have no guarantee that the solution is optimal, therefore it probably isn't.
I'm pretty sure someone (if not everyone) has done a cross solver, what heuristic do competent people use? Do they even use A*?
Basically the same question for F2L, the one I have now is very basic, sum for each pair of this heuristic : If pair solved : 0 (of course), if pair is a trigger away from being solved from U layer : 4 (AUF + 3 move insert), else 7.
And I've been trying do devise a heuristic for Roux first block but nothing I could think of terminated in less than a few minutes.
Thanks in advance, Florentin.