Originally Posted by
dogman_1234
Hey guys!
So, anyway. Over the last few years, I have been trying to conceptualize a way to speed up computing the dealer's conditional probabilities for each up-card for any rules set. Currently, the given CA's provided by MGP, Eric, k_c, and iCountNTrack offer significant speed-ups over any naive implementation, by caching dealer probs within a table and referencing them via some quasi-dynamic programming. Furthermore, with Eric's discovery of a faster implementation via his Steiner Tree method, any large subset of dealer hand probabilities can be computed in less than a second!
However, there is still an issue: namely, a near majority of all CA computation is done under finding dealer probabilities...to the tune of around 90% of all computations! That indicates to me that this is were one should focus on finding a newer algorithm to speed things along (and maybe make CA a more integral part in simulating any blackjack game.) I have asked Eric several questions, generally to pick is mathy brain, to see if I could get a better idea behind the problem. If I recall correctly, Eric even conjectured that one could speed things up considerably by way of finding matching shoe subsets between both player and dealer hands. This, I think, is were one could find the general speed-up for finding dealer probs. However, the problem remains: "What is the given method that enables us to visit each shoe subset *once* and only once to compute all dealer conditional probabilities, if such method exists?"
That is, if one were to fully enumerate all 33203125 single deck subsets, how can we compute all 33203125 dealer probabilities by visiting each shoe subset once? There have ben several ideas that I have had (none that I am convinced would work):
Represent each Player, Dealer, and Shoe set as a collection of tri-partite graphs and finding an association where each subset is hit once.
Constructing a Shoe stack and traversing each possible in-order shoe subset once, accumulating conditional probabilities for each dealer hand for each shoe subset
Implementing a lookup table and storing each dealer *hand* as a conditional probability and, rather than recomputing redundant probabilities, just search and accumulate for that hand subset.
----------------------------------------------------------------------
The problem with the first two is trivial: we revisit *all* shoe subsets more than once, failing our objective of only computing conditional probabilities once for each shoe/dealer subset. Similar to how the naive and current algorithms work.
The last one is more of an issue of difficulty in building the needed data structures to ensure that we 1) Don't revisit shoe subsets, and 2.) ease of tracking pointers.
To see the problem at hand, consider the following: Let us consider the dealer hand {6, 7, 8}. What is the conditional probability of this hand occurring in a single deck game, right off the top? Got it? Okay what is the conditional probability of {6, 7, 8} in a single deck game given each card A to T has been drawn? When thinking about *how* we are computing this, consider visualizing both the tree for the single dealer hand *and* the given shoe subset tree. The set of vertices for the dealer hand are [{0}, {6}, {6, 7}, {6, 7, 8}] and for the shoe tree, we have [{0}, {A}, {2}, ... , {6, 7, 8 ,T}] Now, think about how manty times we are revisiting each subset in *both* tress? What is their association? Notice any redundant computation? Think about how we are computing {6, 7, 8} for a full shoe and how it relates to computing {6, 7, 8} with an Ace missing? Also consider computing {6, 7, 8} with an Ace missing with how similar it is for a missing 2, 3, 4, 5, 9, and Ten.
There is *something* there, but what is it?
Bookmarks