0.1 E: Das Nim Spiel Es gibt n Haufen von Streichhölzern mit den Anzahlen x1 , . . . , xn . Der Spieler, der am Zug ist darf beliebig viele (aber mindestens eins) Streichhölzer aus einem (und nur einem Haufen) wegnehmen. Derjenige, der das letzte Streichholz nimmt hat gewonnen. Definition: Die Nimsumme zweier Zahlen x, y ∈ N0 ist wie folgt definiert: Seien x = ∑in=0 ai · 2i und x = ∑in=0 bi · 2i , ai , bi ∈ {0, 1} die Binärentwicklungen der beiden Zahlen (die kürzere mit führenden Nullen aufgefüllt, so daß beide gleich lang sind). Wir definieren die folgende Verknüpfung von Nullen und Einsen: + 0 1 0 0 1 1 1 0 und x ⊕ y := ∑in=1 ( ai ⊕ bi ) · 2i . Beispiel: 5 7 5+7 Dezimal 5 7 2 Binär 101 111 010 Satz (Eigenschaften von ⊕): Seien x, y, z natürliche Zahlen (inklusive Null), und n x= ∑ a i · 2i , y = i =0 n ∑ bi · 2 i , z = i =0 n ∑ c i · 2i i =0 die Binärentwicklungen. Definition: Für x und y in der Binärentwicklung heißt n x ⊕ y := ∑ ( a i + bi ) 2 i i =0 die Nimsumme von x und y. Eigenschaften 1) x ⊕ y = ∑in=0 ( ai + bi ) · 2i = ∑in=0 (bi + ai ) · 2i = y ⊕ x (⊕ ist kommutativ) 2)( x ⊕ y) ⊕ z = ∑in=0 [( ai + bi ) + ci ] · 2i = ∑in=0 [ ai + (bi + ci )] · 2i = x ⊕ (y ⊕ z) (⊕ ist assoziativ) 3) x ⊕ x = ∑in=0 ( ai ⊕ ai ) · 2i = ∑in=0 0 · 2i = 0. Es gilt auch umgekehrt: Ist x ⊕ y = 0, so ist x = y 4) 0 ist Neutralelement: 0 ⊕ x = ∑in=0 (0 + ai ) · 2i = x Seien nun x1, , . . . , xn die Anzahlen vor dem Zug und y1 , . . . , yn die Anzahlen nach dem Zug. Weiter seien s = x1 ⊕ . . . ⊕ x n 1 und t = y1 ⊕ . . . ⊕ y n die Nimsummen der Anzahlen. Wenn der Zug im Haufen k erfolgt ist, gilt: t = 0⊕t = s⊕s⊕t = s ⊕ ( x1 ⊕ . . . ⊕ x n ) ⊕ ( y1 ⊕ . . . ⊕ y n ) = s ⊕ ( x1 ⊕ y1 ) ⊕ . . . ⊕ ( x n ⊕ y n ) = s ⊕ 0 ⊕ . . . ⊕ 0 ⊕ ( xk ⊕ yk ) ⊕ 0 ⊕ . . . ⊕ 0 = s ⊕ xk ⊕ yk Also t = s ⊕ xk ⊕ yk (*). Lemma 1: Ist s = 0, so ist t 6= 0 unabhängig von der Art des Zuges Grund: t = 0 ⊕ xk ⊕ yk = xk ⊕ yk und xk 6= yk , also ist t 6= 0. Lemma 2: Ist s 6= 0, dann gibt es einen Zug mit t = 0 Grund: Sei d die Position des höchsten Bits 6= 0 von s. Wähle k, so daß das d−te Bit von xk ebenfalls 6= 0 ist . So ein xk existiert: Wären alle d−ten Bits der xi = 0, so auch das d−te Bit der Nimsumme s. Setze: yk := s ⊕ xk (**). Da xk die Anzahl der Hölzer vor dem Zug und yk die nach dem Zug ist, muß noch sichergestellt werden, daß der Spieler yk erreichen kann. Behauptung: yk < xk Grund: Die Situation ist wie folgt: Sei n xk = ∑ a k 2k + 2d + k = d +1 Stelle s= xk= yk = s ⊕ xk n 0 an an ... ... ... d+1 0 a d +1 a d +1 d 1 1 0 d−1 ∗ ∗ ∗ Es ist: ... ... ... ... ∑ 0 ∗ ∗ ∗ k ak 2 + 0 + k = d +1 Es ist also d −1 yk < xk ⇔ ∑ a k 2k k =0 n yk = d −1 ∑ d −1 ∑ bk 2 k k =0 bk 2 k < 2 d + k =0 d −1 ∑ a k 2k k =0 2 Nun gilt: d −1 ∑ bk 2 k ≤ k =0 d −1 ∑ 2k = 2d − 1 < 2d ≤ 2d + k =0 d −1 ∑ a k 2k k =0 Hierbei haben wir verwendet: d −1 ∑ 2k = (2 − 1)(1 + 2 + . . . + 2d−1 ) k =0 = 2 + 22 + . . . + 2 d − ( 1 + 2 + . . . + 2 d − 1 ) = 2 d − 1 Fazit: Stellungen mit Nimsumme 0 sind für den Spieler, der an der Reihe ist, Verluststellungen. Grund: Verloren hat der Spieler, der, wenn er an der Reihe ist, ein leeres Spielfeld (Nimsumme 0) vorfindet. Sein Gegner kann in allen vorherigen Spielzügen ihm immer eine Situation mit Nimsumme 0 präsentieren, da er immer eine Nimsumme 6= 0 vorfindet. Beispiel: Das klassische Nimspiel startet mit 3 Haufen mit jeweils 3, 5 und 7 Streichhölzern Analyse des ersten Zuges: Startnimsumme 011 ⊕ 101 ⊕ 111 = 001 6= 0 2 5 7 ⊕ 3 4 7 ⊕ 3 5 6 ⊕ 010 101 111 000 011 100 111 000 011 101 110 000 1 5 7 ⊕ 3 3 7 ⊕ 3 5 5 ⊕ 001 101 111 011 011 011 111 111 011 101 101 011 0 5 7 ⊕ 3 2 7 ⊕ 3 5 4 ⊕ 000 101 111 010 011 010 111 110 011 101 010 100 3 1 7 ⊕ 3 5 3 ⊕ 011 001 111 101 011 101 011 101 3 0 7 ⊕ 3 5 2 ⊕ 011 000 111 100 011 101 010 100 3 5 1 ⊕ 011 101 001 111 3 5 0 ⊕ 011 101 000 110 Für den ersten Spieler ist es also möglich, durch Wegnehmen eines einzigen Streichholzes aus einem der drei Haufen, seinem Gegner eine Nimsumme 0 zu präsentieren. Der der anfängt, gewinnt also (wenn er richtig spielt). Zum praktischen Spiel ist es nützlich zu wissen, daß folgende Konstellationen Nimsumme 0 haben: zwei gleiche Reihen, 1-2-3, genau einer fehlt (unabhängig von der Reihenfolge). Sind das alle? Wir betrachten die Nimsumme von drei Zahlen: 0 a2 a3 b1 b2 b3 c1 c2 c3 3 In jedem Fall muß b1 = c1 sein.Ist a = 0, so muß b = c sein. Ist a = 3, so muß b1 = c1 , b2 6= c2 , b3 6= c3 . Dies liefert die Zahlentripel (3,3,0),(3,1,2) und (3,4,7),(3,5,6), welche unter die beschriebenen Fälle fallen. Ist a = 2, erhalten wir (2,3,1),(2,0,2),(2,7,5),(2,4,6). Ist a = 1, erhalten wir schließlich (1,1,0),(1,2,3),(1,5,4). Es fehlten also noch die Fälle (2,4,6) und (1,5,4). 4