As a thought problem, I've been contemplating what's involved in
developing a double-dummy solver. I was thinking that a brute-force,
try-everything approach would work but then realized that the "best"
results would be when idiotic plays are made by the opponents. 7N
would (nearly) always be the "optimum" contract by this approach so
it would solve nothing.
Has there ever been anything written regarding this problem and the
approach(es) that could be used?
A whole branch of mathematics/computer science, that I'm afraid I know
very little about. I'm sure others can give you some sensible search
terms; I'm just going to try to give my understanding of how
double-dummy solving works. Hope this helps...
There is only one double-dummy result for a contract (in one direction)
on a given hand, coming from both pairs playing to their best advantage.
The brute-force, try-everything approach works because it is applied for
both sides - you decide your best move by trying it, then putting
yourself in the opponents' place and deciding their best move. And of
course they do so by, for each of their possible moves, putting
themselves in your place and deciding what you would do in response, and
so on, until the very last trick.
So in programming terms we are calling a function recursively, a lot of
times. But the recursion eventually gets to the end, when there are no
more cards to choose from, and the function starts returning values,
bubbling up the chain. The functions figuring out the last few tricks
return, giving results to the functions about earlier tricks, all the
way back to the start.
You can visualise the result, not as a tree of every possible sequence
of cards, but as a tree of 'best moves'. Who gets to make the first
move, deciding what the actual double-dummy result is? The opening
leader, of course!
Hope that makes sense, any corrections welcome.
Now, this approach is all very well for a single bridge hand, but the
real money is in getting results without working out the whole darn
tree. (Consider a single-dummy bridge program having to
double-dummy-analyse thousands of possible layouts; or applying the same
approach to make a computer play some other game like
draughts/checkers). The higher up you can 'prune' the tree, the more
computations you save - the difficulty is figuring out how to do so.
--
Rob Morris
arr em four four five (at) cam dot ac dot uk