You do not give much information, but I would suggest setting up a search algorithm to help you keep track of what it saw. If you had a global way of ranking the leaves by "probability", you would not have a problem, since you could just visit the leaves in descending order of probability. But if I understand you correctly, you are just pretending to climb a hill, right? You can reduce storage requirements by looking for full subtrees (for example, all 1600 x 10 x 4 leaves in a cluster that were selected as "probable") and tracking clusters rather than single leaves.
It looks like your tree geometry is consistent, so depending on how your search works, it should be easy to merge your nodes up ... for example, keep an eye on level 1 nodes whose leaves have all been checked, and when all the children are level 2 node are on your list, drop the kids and keep their parents. It can also be a good way to choose what to explore: if you are exploring three children of level 3 node, then it’s probably worth considering both the fourth and the last.
Finally, the thought: are you really sure that there is no way to exclude some decisions in groups (without examining each individual)? Problems like Sudoku have astronomically large search space, but a good brute force solver eliminates large blocks of opportunity without exploring all the possible 9 x 9 boards. Given the scale of your problem, this would be the most practical way to attack it.
source share