>I tried a single O/8 example (a234 single suit vs. a2a3 ds) and got
>less then a 15% speed up. Obviously that doesn't make a study but I
>think your estimate of how much speedup you'll see is optimistic.
>Think of it this way. If all O/8 hands were split pots between the
>nuts then on average you would just see a 2x speedup. Any cases where
>one of the hands did make it to the nuts would slow you down.
>
>Omaha high might show a better speedup as you can short-circuit the
>enumeration earlier.
Sorry if I was sloppy in my earlier response -- I mainly had in mind Omaha
high (or the high half of high-low) when I came up with my optimization. I
think you will see a more significant speedup on that side.
I have some ideas for a better Omaha low evaluator but rather than try to
write them now and risk saying something dumb again I'll think about it and
write them up later.
But I will point out that you can do the following things to improve the
speed of an Omaha low evaluator using the library low-8 evaluator:
- compute ranks(board) and AND off the bits higher than 8. If nBits[that] is
less than three, no low possible.
- AND off the bits higher than 8 in the hand cards before computing
possible 2-card combinations. This will probably reduce the number of
evaluations by a lot (most hands have at least one card above eight.)
- The order in which you evaluate the possible choices matters.
However, since the eval-low-8 is much lighter weight than eval-high, it's
not as clear that there's much to be saved over a brute force approach for
Omaha low.
--
Brian Goetz
Quiotix Corporation
brian@... Tel: 650-843-1300 Fax: 650-324-8032
http://www.quiotix.com