In algorithms like Counterfactual Regret Minimization/Regret Matching, most implementations are coded using floating point numbers to represent (average) strategies, and the value of the game is usually given as a floating point number. This usually makes these computed values non-exact, which is kind of a bummer.
For example, in Rock Paper Scissors, Nash Equilibrium is (1/3, 1/3, 1/3), but when you try to compute it, of course, you get (0.33333333326, 0.3333333334, 0.333333...).
Another example, in Kuhn Poker, The value of the game is -1/18--a rational number. Even more so, the optimal strategy is also a bunch of rational numbers, so why are we indirectly attacking these problems with floating point numbers?
My understanding is that (currently) rational numbers are not as efficient to perform arithmetic operations (as opposed to IEEE 754) with. But I would definitely rather compute Nash Equilibrium on my computer with the exact values I am supposed to get. Also, this kind of suggests an amazing opportunity to make rational numbers arithmetic extremely efficient to compute with.
Can anyone provide me with some insight on this? I would especially love to have some python code that returns fractions.Fraction(-1, 18) instead of -0.0555555555556131231231.
Thanks.