I don't think the pruning is additive in this case. Given a position far from solved, your 6-TFS table tells you if it cannot be solved in les than 7 moves, and the corner pruning table tells you (maybe) if it cannot be solved in less than about 9-10 moves. You can only add the two if you want to apply every 6-move sequence to the position and then check THAT against the corner pruning table.
Very true.
But look at my node counts when I miss the TFS databases: they are huge.
Now, imagine Bruce's node counts for the same nominal depths (very small) and then speculate what would happen if you could apply the 6-TFS on top of that.
You would not "get deeper" by virtue of the two disjoint pruning methods acting as if they are the same type of mechanism, but you would get deeper via probing a much smaller tree! Even my slowest move generator (array-based laden with the 12 GB 6-TFS being probed heavily) can average 40,000,000 turns per second.
Some of Bruce's postings don't even have 40,000,000 nodes total! So that means if I pruned the leaf nodes as heavily,
OO_4x4x4 would reach the same conclusion in less than one second. Of course this operates under the conjecture that there is 0-overhead for the leaf node pruner, which is not the case, but it would be minimal.
UPDATE: Version 1.2.1 now online
http://lightningcloudcomputing.com/OO_4x4x4.zip
The newest version of
OO_4x4x4 has the following features:
1. The new Memory Menu (above) recommended by Bruce has been implemented and heavily tested. As you can see, the program differentiates from Bill Gate's absurd assumption that Virtual RAM is just as good as Physical RAM when it comes to trying to load a program under Windows. I now look at the Physical RAM that is available, and recommend options based on that. If you have less Physical RAM than any TFS database would need for a 100% loading factor, you don't even have the option to try and access it. You could always down-step though.
2. The Principal Variation bug was located, taken out back, and shot. Hopefully, it will remain dead. Please test this and let me know! It was a "conversion" issue that arose from (again, Bruce being a big help here) the fact that the moves were entered into the database in the order they were generated, and the position is being identified during a search. Well, the moves you made to create the position are really not of interest! What is of great help though, are the moves to make in order to solve the cube. The issue was complicated by the fact that any database also contains every smaller database within the same RAM cluster. So, when the 6-TFS database finds a solution with 5 moves, it would attempt to "convert" the 6th move and show it first in the PV, then convert the 5th move and show it second (which is normal when you flip the entire move order from scramble to solve), and so on. The problem is, in this case,
there was no 6th move, it was a 5-move solution! This was also the case for a 4-mover inside 6-TFS, a 3-mover, etc., as well as 4-movers inside 5-TFS, 3-movers inside 5-TFS .... all the way down to 1 movers inside 2-TFS. This took a re-coding effort to fully purge.
3. The Enter Scramble bug seems to have gone away after some shotgun style coding. I am not 100% convinced it is gone for good. Test multiple scrambles of different sorts, and see if you get all correct solutions for everything
OO_4x4x4 throws out there. Let me know if you find a bug, I will smack it silly if I can locate it.
So this is the most stable version so far. Thanks for all of the debugging help to all of those who have contributed.
P.S. I pronounce the nickname of the program as "Oh Oh 4 by 4 by 4" if anyone actually cares
