Peter Norvig has been doing some work on optimal strategies for the Beauty and the Geek TV show, based on a challenge from the Freakanomics blog. I’ve never seen the TV program, but I must admit that I found his approach to identifying the best strategy fascinating. He just mocked up a little simulator in python, coded a few simple strategies, and had them compete against each other in hopes of learning something.

Unfortunately, Peter didn’t notice a typo in his code—his strong strategy plays like his weak strategy, presumably due to a cut-and-paste which left a min which should have been a max. As a result, the data he generated was less than illuminating; no clear trends emerged to decide between strategies…which I guess makes sense if your strategies are largely identical. (He did, however, effectively demonstrate that “revenge” doesn’t help for the strategies he considered.) With the code typo corrected, the results are shown in the following table. The columns correspond to the different strategies the (one) medium-strength player can take, and the rows correspond to the combinations of strategies the 3 strong and 3 weak players can take. (See Peter’s post for a clearer explanation of the data format.)

              | random        RANDOM        strong        STRONG        weak          WEAK          both          BOTH         
random/random | 28/2/9        28/2/9        27/3/10       27/3/10*      29/2/9        29/2/8        27/3/9        27/3/9       
random/RANDOM | 28/2/9        28/2/9        27/3/10*      27/3/10       29/2/8        29/2/8        27/3/10       27/3/9       
random/strong | 26/4*/11      26/4/11       25/5*/12*     25/5*/12      27/3*/10      27/3/10       25/4/11       25/4*/12     
random/STRONG | 26/4/11       26/4*/12      25/5/12       25/5/12       28/2/9        27/3*/10      25/5*/12      25/4/12*     
random/weak   | 29/2/8        29/2/8        28/2/9*       28/2/9        29/1/8        29/1/8        28/2/8        28/2/9       
random/WEAK   | 29/2/8        29/2/9        28/2/10*      28/2/9        29/1/8        29/2/8        28/2/9        28/2/9       
random/both   | 27/3/11       26/3/11       25/4/12       25/4/12*      28/2/9        27/3/10       25/4/12       25/4/11      
random/BOTH   | 27/3/11       27/3/10       25/4/12       25/4/13*      28/2/9        28/3/10       25/4/11       25/4/12      
RANDOM/random | 27/3/10       27/3/10       27/4/9        27/4/9        28/2/9        28/2/10       26/4/10       26/4/10*     
RANDOM/RANDOM | 27/3/9        27/3/10       26/4/10       26/4/9        28/2/10*      28/2/10       26/4/10       27/4/9       
RANDOM/strong | 26/4/12       25/4/12       24/5*/11      24/5*/11      27/3/12*      26/3/12       25/5/11       25/5*/11     
RANDOM/STRONG | 26/4*/12      26/4*/11      24/5/11       24/5/11       27/3*/11      26/3*/12      25/5*/11      24/5/12*     
RANDOM/weak   | 28/2/9        28/2/9        27/3/8        27/3/10*      29/2/9        28/2/9        28/3/9        28/3/8       
RANDOM/WEAK   | 28/2/9        28/2/9        27/3/9        27/3/9        28/2/10*      28/2/9        27/3/10       27/3/9       
RANDOM/both   | 26/4/11       26/4/11       24/5/11       24/5/12*      27/3/12       27/3/11       25/5/11       25/5/11      
RANDOM/BOTH   | 26/4/12       26/4/12       24/5/12*      25/5/11       27/3/11       27/3/12       25/5/11       25/5/11      
strong/random | 22/8/12       22/8/12       20/9/12       20/9/11       23/6/12*      22/7/12       20/9/12       21/9/11      
strong/RANDOM | 22/8/11       22/8/12       20/9/12       20/9/12       23/6/11       23/7/11       20/9/11       20/9/12*     
strong/strong | 18/11/13*     18/12/12      16/14/10      16/14*/11     19/10*/13     19/11*/12     16/13/10      16/14*/11    
strong/STRONG | 18/11*/12     18/11/12      16/14*/10     16/14/11      20/9/12*      19/10/12      16/14*/10     16/14/11     
strong/weak   | 24/5/13       23/5/14       22/7/14       22/7/15       25/4/13       24/5/15       22/7/15       22/6/15*     
strong/WEAK   | 24/5/13       23/6/14       22/7/15*      21/7/14       25/4/13       24/5/14       22/7/14       22/7/14      
strong/both   | 18/11/13      17/12*/12     17/13/11      16/14/11      20/9/14*      19/10/13      16/13/11      16/13/11     
strong/BOTH   | 19/11/12      18/11/12      16/13/11      16/14/10      20/9/13*      19/10/13      17/13/11      16/13/11     
STRONG/random | 22/7/11       22/8/12       20/9/12       20/9/11       23/6/12*      23/7/12       21/9/11       21/9/11      
STRONG/RANDOM | 22/7/11       22/8/12       20/9/12       21/9/11       23/6/12       23/7/12*      21/9/11       21/9/11      
STRONG/strong | 18/10/14      18/10/14      17/13/12      16/13*/12     20/8/15       19/9/15*      17/13*/12     17/13*/12    
STRONG/STRONG | 19/10*/13     18/11*/13     17/13*/11     17/13/12      20/9*/14      20/9/15*      17/13/12      17/13/12     
STRONG/weak   | 24/5/12       23/6/13       22/6/14*      22/7/14       25/4/14       24/5/14       22/7/13       22/7/13      
STRONG/WEAK   | 24/5/13       23/6/13       22/7/13       22/7/13       25/4/14*      24/5/14       22/7/14       22/7/13      
STRONG/both   | 19/10/14      19/10/14      17/12/12      17/13/12      20/8/16*      19/9/15       17/13/12      17/12/12     
STRONG/BOTH   | 19/10/14      18/10/14      16/13/13      17/12/13      20/8/15       19/9*/15*     17/12/13      17/12/13     
weak  /random | 31/0/5        31/0/5        31/0/6        31/0/6*       32/0/4        32/0/4        31*/0/6       31*/0/5      
weak  /RANDOM | 31*/0/5       31/0/5        31/0/7*       31/0/7        32*/0/4       32*/0/4       31*/0/5       31/0/6       
weak  /strong | 31*/0/6       31*/0*/7      30/1/9*       30*/1*/8      31/0*/5       31/0/5        30/1/8        30/1/8       
weak  /STRONG | 31/0*/7       31*/0/6       30/1*/8*      30/1/8        32/0/5        31/0*/5       30/1*/8       30*/1*/8     
weak  /weak   | 32/0/4        32*/0/4       32/0/5        32/0/5*       32/0/3        32*/0/3       32/0/4        32/0/4       
weak  /WEAK   | 32*/0/4       32/0/4        31*/0/5       31/0/6*       32/0/3        32/0/3        32*/0/5       32*/0/5      
weak  /both   | 31/0/6        31*/0/6       30*/1/8*      30/1/8        31/0/5        31/0/5        30/1/7        30*/1/7      
weak  /BOTH   | 31*/0/6       31/0/7        30/1/8*       30/1/8        32*/0/4       32*/0/5       30*/1/7       30*/1/7      
WEAK  /random | 31*/0/5       31*/0/5       31*/1/5*      31*/1/5       32*/0/4       32*/0/4       31/1/5        31/0/5       
WEAK  /RANDOM | 31/0/5        31*/0/5       31*/1/6       31*/1/6*      32/0/4        32/0/4        31/1/5        31*/1/5      
WEAK  /strong | 31/1*/6       30/1*/7       30*/1*/7      30/1*/7*      31*/0*/5      31*/0/5       30*/1/7       30*/1/7      
WEAK  /STRONG | 31*/1/6       31/1/6        30*/1/7*      30*/1/7       32*/0/4       31*/0/5       30*/1*/6      30/1*/7      
WEAK  /weak   | 32*/0/3       32/0/4        32*/0/4*      32*/0/4       32*/0/3       32/0/3        32*/0/4       32*/0/4      
WEAK  /WEAK   | 32/0/4        32*/0/4       31/0/5        31*/0/5       32*/0/3       32*/0/3       31/0/5*       31/0/5       
WEAK  /both   | 31*/0/6       31/1/6        30/1/7*       30*/1/7       32*/0/5       32*/0*/5      30*/1/7       30/1/7       
WEAK  /BOTH   | 31/1/6        31*/1/6       30*/1/7*      30*/1/6       32/0/5        31/0/5        30/1/7        30/1/6       
both  /random | 22/6/15       22/7/16       20/9/14       20/8/15       23/5/17       23/5/17*      20/8/15       20/8/15      
both  /RANDOM | 22/6/16       21/7/15       20/8/16       20/8/15       23/5/16       23/5/17*      20/9/15       20/8/14      
both  /strong | 19/10*/15     18/10*/15     16/13/14      16/13*/14     20/7*/18*     20/8*/17      16/12*/13     16/12/14     
both  /STRONG | 19/9/16       18/10*/16     16/13*/13     16/13/13      20/7/17*      20/8/17       16/12/14      16/12*/14    
both  /weak   | 23/4/18       23/4/18       21/6/19*      22/6/18       25/2/18       24/3/19       21/6/19       21/6/18      
both  /WEAK   | 23/4/18       23/5/18       21/6/19*      21/6/19       24/3/19       24/3/18       21/6/19       21/6/19      
both  /both   | 19/9/17       18/10/17      16/12/15      16/12/15      20/7/18       20/8/18*      16/12/14      17/12/14     
both  /BOTH   | 19/9/16       18/10/16      16/12/14      16/13/14      21/7/17       20/8/17*      16/12/14      16/12/14     
BOTH  /random | 22/6/15       22/6/15       20/8/15       21/8/15       23/4/17       23/5/18*      21/8/15       21/8/14      
BOTH  /RANDOM | 22/6/15       22/6/15       21/8/15       20/8/14       23/4/17       23/5/17*      20/8/14       20/8/14      
BOTH  /strong | 19/8*/18      19/8/19       17/11*/16     17/11*/15     20/6*/21*     20/7*/20      17/11/16      17/11*/15    
BOTH  /STRONG | 19/8/17       19/9*/17      17/11/16      17/11/16      21/6/20*      20/7/19       17/11*/16     17/11/16     
BOTH  /weak   | 23/4/17       23/4/17       22/6/17       22/6/17       24/2/20*      24/3/19       22/6/16       22/5/17      
BOTH  /WEAK   | 24/4/16       23/5/17       22/6/16       22/6/17       24/3/18       24/3/19*      22/6/16       22/6/16      
BOTH  /both   | 19/8/19       19/8/19       17/11/16      17/11/16      21/6/20       20/6/21*      17/10/16      17/11/16     
BOTH  /BOTH   | 20/8/18       19/8/18       17/11/16      17/11/16      21/6/20       20/6/20*      17/11/16      17/11/16     

If you take this data at face value, there are some obvious lessons to be drawn. The “weak” strategies clearly dominate for the strong players, so game theory dictates that we expect strong players to choose those rows of the table, and in those rows the “strong” strategies mildly dominate for the medium-strength player. The weak players are screwed if the others play rationally.

This appears to give a neat and tidy answer to the original problem, but unless I’m missing something (and maybe I’m just misunderstanding the game, which I know only from Peter’s description) this simulation fundamentally mischaracterizes the motivations of the players. Each of the strong players wants to win themselves—knowing that the game was won by some other strong player isn’t much consolation for losing. So although all three strong players playing the weak strategy maximizes the chances of a strong player winning, there is a prisoner’s dilemma going on. If they’re all rational and stick together in picking off the weak players then they’ve got a 30%+ chance to win, but if one strong player betrays the other strong players by playing the “strong” strategy and trying to first eliminate strong players, then she has a significant advantage over the two collaborating strong players. Thus it is actually in each strong player’s best interest to defend against such behavior by playing the “strong” strategy themselves. With all three strong players playing the strong strategy there’s only a 20% chance each of them will win…and the chance that a medium or weak player will win jumps from 7% to almost 40%!

If the strong players are all fighting it out amongst themselves, the medium and weak players have much better chance, but there’s not much in it to decide between their strategies—“weak” seems fine for the medium player. The real lesson of this analysis is that the medium strength player needs to worry less about what he is doing and more about making sure the strong players understand the game theory well enough to pursue the competitive, not cooperative, strategy. As seems to be the case in real life, those with quantifiable advantages have to think through their actions, while everyone else is free to waste their time with politics…

Update: Peter Norvig has updated his post to account for this bug, and more importantly he actually tested the “defection” strategies I suggest (which I really should have done before asserting that they change the results). It turns out that there’s only a marginal advantage for a strong player who defects against the other two if nobody punishes them for it, and a significant disadvantage if the other two use a “revenge” strategy, so there’s really no prisoners’ dilemma. Rational strong players choose the WEAK strategy (nominate a strong player if they nominated you, but otherwise nominate a weak player), which corresponds with the well-known “tit-for-tat” strategy. Given that choice for the strong players, the medium-strength player should always nominate the strong players. The data is noisy over the finer details, but my expectation is that weak players also benefit from nominating strong ones, and that if everyone is playing rationally then the medium and weak players should not use revenge: it’s much more important for them to eliminate the strong players than to punish each other.