GIB Double-Dummy


The following was taken from a document by the author of the bridge playing program, GIB. It is supplosed to explain how the unseen hands are constructed for performing Double Dummy Analysis (DDA) for finding the best bid or play. Unfortunately, it does not really explain much.
    To construct deals consistent with the bidding, we first simplify the auction, building con­straints describing each of the hands around the table.

    We then deal hands consistent with the constraints us­ing a deal generator that deals unbiased hands given restrictions on the number of cards held by each player in each suit.

    This set of deals is then tested to remove elements that do not satisfy the remaining constraints, and each of the remaining deals is passed to the bidding module to identify those for which the observed bids would have been made by the players in question.

    This process typically takes one or two seconds to generate the full set of deals needed by the algorithm.

What does simplify the auction mean? In BidBase, opening passes (e.g.: P-P-1S) are ignored unless the bid in the database specifies that it must be made in, say, 1st or 2nd position. Entries for some bids may be the same no mattter which of 2 or more suits have the same distribution and HCPs, but that cannot be taken too far because in BB, previous entries can help defined a hand for a later entry. For example, after an opening bid of 1 of a minor, a response of one of a major does not have the same hand specs for responder for 1C-1H, 1C-1S since the 1S response tends to limit Hearts to a shorter suit than Spades while with a 1H response, the player may have an equal number of Spades.

In fact, for the purposes of DDA, opening passes would seem to be relevant because they immediately limit the number of points the hand may contain. In BidBase, if that information is relevant for a future bid, that bid's entry can specify whether or not the player is a passed hand.

The phrase deals unbiased hands given restrictions... is self-contradictory since the restrictions are a form of bias, but no further explanation is given about what such restrictions are.

It is also not clear what is meant by this set of deals is then tested to remove elements that do not satisfy the remaining constraints. How are they tested? What kind of elements are removed? If the hand lengths and bids have been specified, what remaining constraints are there?


My best guess is that GIB starts with the bid(s) made by a hand, looking at its algorithms to see the points and distribution needed for the bid(s), then specifies those limitation to the DDA engine.

For example, if North is dealer and the bidding for all four hands has gone 1H-1S-2D-P, 2H-P, and GIB is searching for the next bid by South, it will specify that North has 13-15 points and a 6-card suit and probably 2+ HCPs in Hearts.

GIB can generate a hand for North meeting those specs, and a hand for East matching GIB's specs for a 1S overcall. It then gives the remaining 13 cards to West. If East had also passed, it would be possible to also restrict his holdings to those which do not result in any call other than Pass.

If the specifications for calls made are sufficiently broad, such as an overcall normally limiting the number of points a hand has but with exceptions made for hands not suitable for, say, a takeout double so the player must overcall or even pass with a good hand. So the player should be assigned a number of points and distribution based on the odds of getting each type of hand.

The CardShark BidBase BidSim program is a bidding simulator. It works by dealing out random hands and running them through the BidBase bidding module to see if the hands are bid as specified. If not, the deal is discarded and the next deal tried.

The auction is not simplified except for removing opening passes (unless specified by an entry for a particular bid).

The more bids which are specified, the more deals must be generated to find enough which exactly match the bidding to attain a valid sample size for analysis. This can take a very long time.