--- In fc-solve-discuss_at_yahoogroups.com, "Gary Campbell" <gary_at_...> wrote:
>
> Danny: I know we talked about recording layouts and preventing their recurrence (at a lower or higher step number) some years ago, but it’s worth being clear about exactly how the layout is recorded. If every aspect of the layout is recorded, longer search times occur, and equivalent layouts are considered different. Thus, it is worth ignoring certain differences in layouts. For example, I find that my solver runs almost twice as fast (but gets a very occasional false negative) if I simply record red vs. black in card sequences instead of all 4 suits. Another difference that doesn’t produce false negatives, if ignored, is the order of cards in free cells and the order of the columns. However, I do think that layouts have to be recorded to prevent search beyond a repeated position leading to vastly larger searches in many cases. -Gary
>
I didn't get into specifics because I doubted if anyone would be interested. My mistake. Here comes the judge ... I mean specifics.
I have two trees that store data. The first tree stores layout information exactly as generated. A "priority value" and "sequence number" dictate the order in which entries are extracted from the tree. By initially forcing the priority value to zero, I can use BFS logic to traverse N levels of entries at the start. After N levels, I can generate non-zero priority values to enable my general "priority search" logic. By splitting the logic this way, I have a nice sample space from which to choose my first prioritized layout. If I use N=0, then I'm running in prioritized mode from the start.
The second tree is the accumulation of checksum calculations for the layouts encountered. I create the checksums based on which Pass is being performed and an orderly method of gathering information from a layout so that an equivalent layout will result in the same checksum. For Pass_1 and Pass_2, I only extract red/black information from the cards. Only four deals in the first 1,000,000 deals return a false-negative after Pass_1 and Pass_2. Pass_3 uses the full card information and returns these four deals as solveable.
Regards, Danny
Received on Sat Dec 01 2012 - 16:55:57 IST