Description of program in title.
Essentially what the program I am working on is doing is
With this program I'm able to (in 1-2 seconds usually) take a list of ~1000 CE solutions, generate a list of ~20000 solutions which include all possible ways to rewrite things like L F L' into r U r' and other substitutions, give each of these solutions a score, and then output a clean list (sorted by score and categorized by movecount) with the algs most worth considering near the top.
The program is still in development, but I have been using it in its current form to help a friend generate ZZLLs. He will send me, usually, a list of CE 500-1000 algs and I will send back a ranked list; if a good algorithm for the case already exists on algdb.net, these algorithms are almost always top results in the sorted list, and if the algorithm on algdb.net is not good, we are often able to find a much better replacement alg in 1-2 minutes. These good algs are often in the middle of depth 17-18 CE solutions, so I can't imagine how long it would take to find them by mentally trying each alg up until then.
Here are some sample inputs and outputs (EDIT: as @TDM pointed out, these outputs are actually from when I was using a different mathematical method. It got the job done okay, but was an approximation and pretty sloppy mathematically. I'm presently too lazy to update these, but maybe I will tomorrow. damn math majors and their scrutiny):
https://puu.sh/w9Lz8/29b8e5f6dc.txt (in), https://pastebin.com/2CshfYRV (out)
https://puu.sh/w9MX2/aecf94a58b.txt (in), https://pastebin.com/xgZaeZtp (out)
https://puu.sh/waKF7/7b47f467d0.txt (in), https://pastebin.com/Vxy1FBns (out)
https://puu.sh/w9Bwp/42c2c4bcdd.txt (in), https://pastebin.com/mm7xm0St (out)
I have some fancier features planned as well (considering not only substitutions, but also removing pre/post auf, considering rotations before each alg, etc). It's written in Python, so you'd need that to run it, but if there's enough people wanting an .exe I will look into specifics of compiling .py's.
Essentially what the program I am working on is doing is
pulling a bunch (~4000) of solves from cubesolv.es, collecting all the algorithms in a file, and then using the file to construct a 2nd order markov model of "algorithm-like" move sequences (not quite deep learning, but good enough for this task imo).
To evaluate algs based on how "algorithm-like" they are, I compute the sum of the log of the transition probabilities for each move in the alg (log-likelihood). Algs with high log-likelihood (close to 0) are interpreted as being "more speedsolve-worthy" than algs with low log-likelihood (far less than 0).
To evaluate algs based on how "algorithm-like" they are, I compute the sum of the log of the transition probabilities for each move in the alg (log-likelihood). Algs with high log-likelihood (close to 0) are interpreted as being "more speedsolve-worthy" than algs with low log-likelihood (far less than 0).
With this program I'm able to (in 1-2 seconds usually) take a list of ~1000 CE solutions, generate a list of ~20000 solutions which include all possible ways to rewrite things like L F L' into r U r' and other substitutions, give each of these solutions a score, and then output a clean list (sorted by score and categorized by movecount) with the algs most worth considering near the top.
The program is still in development, but I have been using it in its current form to help a friend generate ZZLLs. He will send me, usually, a list of CE 500-1000 algs and I will send back a ranked list; if a good algorithm for the case already exists on algdb.net, these algorithms are almost always top results in the sorted list, and if the algorithm on algdb.net is not good, we are often able to find a much better replacement alg in 1-2 minutes. These good algs are often in the middle of depth 17-18 CE solutions, so I can't imagine how long it would take to find them by mentally trying each alg up until then.
Here are some sample inputs and outputs (EDIT: as @TDM pointed out, these outputs are actually from when I was using a different mathematical method. It got the job done okay, but was an approximation and pretty sloppy mathematically. I'm presently too lazy to update these, but maybe I will tomorrow. damn math majors and their scrutiny):
https://puu.sh/w9Lz8/29b8e5f6dc.txt (in), https://pastebin.com/2CshfYRV (out)
https://puu.sh/w9MX2/aecf94a58b.txt (in), https://pastebin.com/xgZaeZtp (out)
https://puu.sh/waKF7/7b47f467d0.txt (in), https://pastebin.com/Vxy1FBns (out)
https://puu.sh/w9Bwp/42c2c4bcdd.txt (in), https://pastebin.com/mm7xm0St (out)
I have some fancier features planned as well (considering not only substitutions, but also removing pre/post auf, considering rotations before each alg, etc). It's written in Python, so you'd need that to run it, but if there's enough people wanting an .exe I will look into specifics of compiling .py's.
Attachments
Last edited: