Games, Hats, and Codes Mira Bernstein Wellesley College SUMS 2005
A game with hats (N=3) Each player is randomly assigned a red or blue hat.
A game with hats (N=3) Each player can see the color of his teammates’ hats but not his own.
A game with hats (N=3) BLUEREDPASS Players simultaneously guess the colors of their own hats. Passing is allowed.
A game with hats (N=3) BLUEREDPASS At least one correct guess No incorrect guesses WIN!
Some observations A player gets NO information about his own hat from looking at his teammates’ hats NO strategy can guarantee victory Easy strategy: one player guesses, everyone else passes. Can the players do better than 50%?
A better strategy for N=3 Instructions for all players: If you see two hats of the same color, guess the other color. If you see two different colors, pass.
Possible hat configurations Guesses #1 #2#3
Possible hat configurations Guesses RED #1 #2#3
Possible hat configurations Guesses RED BLUE #1 #2#3
Possible hat configurations Guesses RED BLUE RED #1 #2#3
Possible hat configurations Guesses RED BLUE RED BLUE #1 #2#3
Possible hat configurations Guesses RED BLUE RED BLUE #1 #2#3
Possible hat configurations Guesses RED BLUE RED BLUE #1 #2#3 √ √ √ √ √ √ X X
Possible hat configurations √ √ √ √ √ √ X X Probability of winning: 75% How is this possible? Can we do better? What about N >3?
Possible hat configurations Guesses RED BLUE RED BLUE #1 #2#3
6 correct guesses 6 incorrect guesses # correct = # incorrect RED BLUE RED BLUE #1 #2#3 Guesses
Why? The same instructions that lead to a correct guess in one situation… … will lead to an incorrect guess in another. BLUE Player #3 BLUE Player #3
In general… If the game is played once with each possible configuration of hats, then # correct guesses = # incorrect guesses True for any number of people N True for any deterministic strategy S
Why does the N=3 strategy work? It takes only one correct guess to win! Strategy: Spread out the good guesses. Concentrate the bad guesses. #1 #2#3
In general… When played over all hat combinations with N players, any strategy produces k correct guesses and k incorrect guesses. (The value of k depends on the strategy.) Best possible guess arrangement: –1 correct guess per winning combination –N incorrect guesses per losing combination A strategy which achieves this is called a perfect strategy.
Do perfect strategies actually exist? N = 3: Yes! Other N? #1 #2#3
Some terminology H: set of all possible hat configurations (sequences of 0s and 1s) Distance in H: number of places in which two elements of H differ Distance: 2
Some terminology Ball of radius r around h H: the set of all configurations whose distance from h is at most r. h: B 1 (h): | B 1 (h)| = N+1 center
Some terminology S: a (deterministic) strategy L: set of all hat configurations where a team playing according to S loses W: set of all hat configurations where a team playing according to S wins L W = H
An important fact Suppose h and h’ are elements of H that differ only in the i th entry. If, according to strategy S, Player i guesses correctly in h, then he guesses incorrectly in h’, and vice versa. 4 th player’s guess h: √ h’: X
Corollaries Theorem 1: Every element h W is within distance 1 of some element of h’ L. Proof: Suppose Player j guesses correctly in h. Let h’ be the hat configuration that differs from h only in the j th entry. Then Player j must guess incorrectly in h’, so h’ is in L.
Corollaries Theorem 2: In a perfect strategy S, every element h W is within distance 1 of exactly one element of L. Proof: Suppose h differs from h 1 L in the i th entry and from h 2 L in the j th entry. Since S is a perfect strategy, all players guess incorrectly in h 1 and h 2. But then Players i and j must both guess correctly in h, which cannot happen in a perfect strategy.
Corollaries In other words…. Theorem 1: Every element h H is contained in a ball of radius 1 around some element of L. Theorem 2: In a perfect strategy S, the balls of radius 1 around elements of L do not overlap.
Codes A perfect code of length N is a subset L in H such that the balls of radius 1 around points of L include all of H do not overlap A perfect strategy yields a perfect code!
H A perfect code
H = points of L A perfect code
H = points of L A perfect code
Perfect code perfect strategy Instructions for Player i: –If the hat configuration might be in L: Guess so that if it’s in L, you’ll be wrong. –If you can tell that the hat configuration is not in L: Pass
Results (for hat configuration h): –If h is in L: Every player guesses wrong. –If the hat configuration h is not in L: There is a unique element h’ of L which differs from h in one place -- say the i th place.The i th player can’t tell if the configuration is h or h’, so he guesses away from h’, correctly. All others pass. Perfect code perfect strategy
Example: N=3 L = {000,111}
Instructions for Player i: –If the hat configuration might be in L, guess so that if it’s in L you’ll be wrong. Translation: If you see two 0’s or two 1’s, guess the opposite number. Example: N=3 L = {000,111}
Instructions for Player i: –If you can tell that the hat configuration is not in L, pass. Translation: If you see two different numbers, pass. Example: N=3 L = {000,111}
How good are perfect strategies? Theorem: If S is a perfect strategy for N players then the probability of winning is N / N+1. Proof: In every ball, N out of the N+1 points correspond to winning configurations. Example: If N=3, the probability of winning with a perfect strategy is ¾. There can be no better strategy than the one we found.
Do perfect codes exist for N>3? Theorem: A perfect code of length N can exist only if N=2 m -1 for some integer m. Proof: A perfect code splits H into disjoint balls of radius 1. Each of the balls has N+1 points and H has 2 N points, so 2 N is divisible by N+1. Thus N+1 is a power of 2, so N=2 m -1. Example: We know a perfect code of length 3 = But what about 7, 15, 31,…?
Error-correcting codes I love you! … I love you too!
Error-correcting codes I love you! … … You what?
Error-correcting codes I love you!
Error-correcting codes I love you!
Error-correcting codes I love you!
Error-correcting codes I love you! I love you too!
A different game: Nim Rules Take any number of stones from any one pile A B
A different game: Nim Rules Whoever takes the last stone wins the game A B
A different game: Nim A B
A B
A B
A B
A B Two equal piles: bad news for whoever is next to move.
A different game: Nim A B Two equal piles: bad news for whoever is next to move.
A different game: Nim A B From now on, B simply imitates A’s moves…
A different game: Nim A B From now on, B simply imitates A’s moves…
A different game: Nim A B From now on, B simply imitates A’s moves…
A different game: Nim A B From now on, B simply imitates A’s moves…
A different game: Nim A B WINLOSE … so B is guaranteed to take the last stone.
Nim is… Combinatorial: no element of chance Impartial: same moves available to each player Finite: must end after a finite number of moves In any Nim position, exactly one of the players has a winning strategy.
Who wins? P-position: Previous player wins N-position: Next player wins e.g. the empty game is a P-position e.g. two equal piles is a P-position e.g. two unequal piles is an N-position Nim strategy: Figure out which positions are P-positions and move to them!
More on P and N P-position: cannot move to a P-position; move only to an N-position (or not at all) N-position: can move to at least one P- position If you combine two Nim games into one: P + P = P: cannot move to another P+P N + P = N: can move to P+P N + N = ? (depends on the games)
Position vectors A Nim position with all heaps of size N can be described by a vector of length N. (1,0,0,2,3) 1 heap of size 5 2 heaps of size 2 3 heaps of size 1
Position vectors Two equal heaps are a P-position, so we can ignore them (P+P=P, N+P=N). (1,0,0,2,3) 1 heap of size 5 2 heaps of size 2 3 heaps of size 1
Position vectors Thus we can replace all the entries in the position vector with 0’s and 1’s. Binary vector 1 heap of size 5 2 heaps of size 2 3 heaps of size 1 (1,0,0,0,1)
Legal moves Let X, Y be binary position vectors for Nim. One can move from X to Y if X >Y (as binary numbers) Distance from X to Y is 1 or 2 Examples:
Legal moves Let X, Y be binary position vectors for Nim. One can move from X to Y if X >Y (as binary numbers) Distance from X to Y is 1 or 2 Examples:
Legal moves Let X, Y be binary position vectors for Nim. One can move from X to Y if and only if X >Y (as binary numbers) The distance from X to Y is 1 or 2 Examples:
P and N: review P-position: cannot move to a P-position; move only to an N-position (or not at all) N-position: can move to at least one P- position
P and N revisited Theorem: The distance between two P- position vectors is ≥ 3. Proof: If the distance were 1 or 2, you could move from the larger vector to the smaller one. However, it is impossible to move from a P-position to a P-position. Corollary: Balls of radius 1 around P- positions do not overlap.
P and N revisited Theorem: Any vector X with distance ≥ 3 from all smaller P-positions is a P-position. Proof: Since you cannot move from X to any P-position, X itself must be a P- position. Corollary: We can look for P-positions inductively.
How to look for P-positions Start with (…,0,0) At each step, look for the next smallest sequence that has distance ≥ 3 from every previously-found P-position. The preceding theorems guarantee that this procedure will give you all and only P- positions!
Why look for P-positions? To win at Nim. The set of all P-positions with heaps of size N will give us non-overlapping balls of radius 1. If N=2 m -1,we may get a perfect code. To find perfect strategies for the hat game.
P-positions for heaps of size Start with Smallest v with three 1’s ? ? ?Impossible!
P-positions for heaps of size Start with Smallest v with three 1’s ? ? ?Impossible!
P-positions for heaps of size Start with Smallest v with three 1’s ? ? ?
P-positions for heaps of size Start with Smallest v with three 1’s Next smallest ? ? ?
P-positions for heaps of size A B ? ? ?
P-positions for heaps of size A B A+B ? ? ?Impossible!
P-positions for heaps of size A B A+B ? ? ?
P-positions for heaps of size A B A+B C 0 1 ? ? ? ? ?
P-positions for heaps of size A B A+B C C+A C+B C+A+B
P-positions for heaps of size 7 Can we have any other P-positions that begin 0 1 X X X X X ?D Then we would have D+A, D+B, etc: 16 total Can we have 16 P-positions with heaps 6? (16 balls of radius 1) (7 points per ball) > 2 6 Impossible!
P-positions for heaps of size A B A+B C C+A C+B C+A+B
P-positions for heaps of size ? ? ?No! A B A+B C C+A C+B C+A+B
P-positions for heaps of size ? ? ? A B A+B C C+A C+B C+A+B
P-positions for heaps of size D A B A+B C C+A C+B C+A+B
P-positions for heaps of size D A D+A B D+B A+Betc C C+A C+B C+A+B
P-positions for heaps of size 7 16 P-positions 8 points per ballA perfect code! 128 = 2 7 points A vector space over Z 2 with basis A B C D
The Hamming Code for N=7 Our code is the kernel of the matrix A = over Z 2 The columns are the numbers 1-7 in binary! This code is called the Hamming Code.
The Hamming Code for N=7 A quick way to check if v ker(A): Record the numbers corresponding to the positions where v has a 1 Write these numbers in binary, with leading zeros if necessary Add the numbers as binary vectors: 1+1 = 0, no carry! v ker(A) iff you get 0
The Hamming Code for N=7 Example: v = ( ) v has 1’s in positions 7,5,1 7 = = = padding addition with no carry The answer is not 0, so v is not in the code.
Finding the nearest code vector v = ( ) Which coordinate of v should we change? When we “added” 7,5, and 1, we got If we change the “3” coordinate of v from 0 to 1, we’ll have to “add” another = ! v’ = ( ) is in the code.
The Hamming Code for N=2 m -1 Let A be the m N matrix whose columns are the numbers 1 through N, written in binary. For N=15: A = ker(A) is called the Hamming code of length N.
The Hamming Code for N=2 m -1 Every N-vector v is within distance 1 of exactly one code vector v’. A(v), read as a binary number, gives the coordinate in which v and v’ differ! The Hamming code is a perfect code, which makes error-correction especially simple!
Homework Prove that the Hamming Code really is perfect and that A(v) gives the coordinate of the error. Using the Hamming code, find a practical strategy for Nim. Using the Hamming code, find a practical strategy for the hat game for 7 players.
A bit more about codes Not all codes are perfect: – In a general error-correcting code, the balls around the code points are disjoint, but do not necessarily include every point in the space. –In a general covering code, the balls cover the whole space, but may overlap. –A perfect code is both an error-correcting code and a covering code.
A bit more about codes In a general error-correcting code, the balls around the code points may have radius r>1. The Hamming codes are (essentially) the only perfect codes with radius 1. The is only one other perfect code: the Golay code for N=23, with radius 3.
Lexicodes We used the P-positions of a game (Nim) to construct a code (the Hamming code). In general, the P-positions of many impartial games correspond to well-known codes! These can be constructed in increasing lexicographic order, starting at 0 -- hence the name lexicodes!
References Lexicographic Codes: Error-Correcting Codes from Game Theory, John H. Conway and N.J.A. Sloane, IEEE Trans. Inform. Theory, On Hats and Other Covers, H. Lenstra and G. Seroussi, 2002 (preprint)