SanchoGGP / ggp-base

The General Game Playing Base Package
8 stars 4 forks source link

Pie-rule negates X-/O-net split #195

Closed arr28 closed 9 years ago

arr28 commented 9 years ago

Here are some propnet sizes. Format is: (repo, game, full size, X-size, O-size, goal size).

Note in particular how the X-/O-sizes for Hex are ~75% of the full size. However, for Hex w/ Pie, they're basically 100%.

    PropNetSize[] lTests = new PropNetSize[] {new PropNetSize("base", "ticTacToe",      244,   168,   168,    57),
                                              new PropNetSize("base", "connectFour",    765,   619,   619,   299),
                                              new PropNetSize("base", "breakthrough",  1844,  1203,  1203,   142),
                                              new PropNetSize("base", "sudokuGrade1",  5483,  4446,  4399,  1722),
                                              new PropNetSize("base", "reversi",      17795,  3997,  3997, 15195),
                                              new PropNetSize("base", "speedChess",   35416, 15710, 15710,  9512),
                                              new PropNetSize("base", "hex",          81507, 61164, 61164,  3250),
                                              new PropNetSize("base", "hexPie",       83023, 82342, 82335,  3300),
                                              };

When we look at mid-game latch detection, it may also make sense to look at making new propnets.

Also interesting to note how much better speedChess splits up than everything else (except Reversi, which is a bit of a special case due to its massive goal net).

SteveDraper commented 9 years ago

I am wondering about a slightly alternate approach to determining the split. In games with step counters it's generally pretty easy to detect them by analytic means (possibly simulation-aided). Given a game with a rigid step counter we can then observe that there are a set of step propositions, with a total ordering, only one of which can be true at once. Instead of splitting on the value of a single prop (as we do now) we could then split on a partitioning of the set of the step props. I would propose split on odd vs even steps.

This should address the pie issue, and would also be helpful in games where there is complex logic associated with the step counter (hex!). I'll do some hacky experiments and see if there is a worthwhile result before trying to do the anlysis

arr28 commented 9 years ago

Steve - I did some more work on this under #217, the upshot of which is that I don't think there's anything we can do here to get a significant advantage. I'd forgotten that this issue was open. I suggest you read through the notes for #217 and consider whether this should just be closed.

SteveDraper commented 9 years ago

I have now performed the experiment to split hex on the step count parity, and my conclusion is that you are correct - nothing much to be gained here. I got about a 5% improvement in hex if I combined control and step parity, but that's a non-trivial effort to clean up the analysis and would not be applicable to the Pie variant anyway, so not worthwhile.