champagne wrote:I looked again the brute force code to see what could be done using a wider bit field.
...
A 64 bit field can be used instead of the 32 bit field keeping untouched the zhouyundong_2012 process basics.
...
Hi Champagne,
I finally tested your latest modification of Zsolver (Zhou_useV2.zip which you have sent me in private communication).
I have ignored the sktest.cpp file and incorporated the solver into my elementary test loop.
Below are the results of Zsolver 32 and 64-bit versions, and current version of fsss2 for comparison.
All are tested on the same machine with the same g++ 64-bit compiler and flags, and after profiling.
zh32
0+48826+0 puzzles in 0.211 seconds.
0+29301+0 puzzles in 0.881 seconds.
0+50000+0 puzzles in 0.328 seconds.
0+6000+0 puzzles in 0.673 seconds.
486451+763+12786 puzzles in
0.287 seconds.
0+1763344+0 puzzles in 9.358 seconds.
0+817681+0 puzzles in 99.079 seconds.
zh64
0+48826+0 puzzles in 0.217 seconds.
0+29301+0 puzzles in 0.931 seconds.
0+50000+0 puzzles in 0.346 seconds.
0+6000+0 puzzles in 0.705 seconds.
486451+763+12786 puzzles in 0.289 seconds.
0+1763344+0 puzzles in 10.096 seconds.
0+817681+0 puzzles in 104.193 seconds.
fsss2
0+48826+0 puzzles in 0.228 seconds.
0+29301+0 puzzles in 0.719 seconds.
0+50000+0 puzzles in 0.247 seconds.
0+6000+0 puzzles in 0.327 seconds.
486451+763+12786 puzzles in
0.179 seconds.
0+1763344+0 puzzles in 5.978 seconds.
0+817681+0 puzzles in 61.477 seconds.
These are timings from my old test over Zsolver's code published by Jason.
0,203
0,784
0,321
0,527
0,664???
85,800
The 5th row is for the Jason's collection of half million random subgrids where invalid ones dominate. Your modification works drastically better with them (287 vs 664), so your optimization task is well done.
The 64-bit version is slower, and for the valid puzzles your modification is a bit slower than the original.
The testing collections have been discussed somewhere (maybe in the former programmers forum) and in general are:
- the 17-givens puzzles (not all of them)
- a collection of 20 times 1465 hard puzzles
- a collection of 5000 hard puzzles
- Tarek's pearly 6000 hard puzzles
- Jason's random subgrids
- a collection of 38-given puzzles (relatively hard)
- Champagne's collection of (some of the) hardest puzzles
Cheers,
MD