Gewinnstrategie bei einem zweidimensionalen Nim

Werbung
Gewinnstrategie bei einem
zweidimensionalen Nim-Spiel
Eine Arbeit für Jugend forscht 2011
im Fachgebiet Mathematik
von Nemanja Sandic (Robert-Bosch-Gesamtschule Hildesheim)
und Tan Vu Pham (Goethegymnasium Hildesheim)
Inhaltsverzeichnis
1 Einleitung..........................................................................................2
2 Spiele.................................................................................................2
3 xor-Summe von ganzen Zahlen........................................................3
4 Grundy-Zahl......................................................................................4
5 Das zweidimensionale Nim-Spiel.....................................................4
6 Berechnung der Grundy-Zahlen.......................................................5
7 Weitere rechteckige Spielstellungen.................................................7
8 Formeln für die Grundy-Zahlen........................................................8
9 Zusammenfassung.............................................................................9
Quellenverzeichnis................................................................................9
1 Einleitung
Im Internet (z.B. [Al]) gibt es viele Möglichkeiten, das bekannte Nim-Spiel [Wi2] gegen ein
Computerprogramm zu spielen. Das Programm zieht dabei nach einer Gewinnstrategie, bei
der die Größe der Nim-Haufen als Binärzahlen nach einer bestimmten Rechenregel „addiert“
werden. Diese Gewinnstrategie ist vielen Leuten bekannt.
Unsere Idee war, Nim in zwei Dimensionen zu spielen. Statt aus eindimensionalen Haufen ist
eine Spielposition aus zweidimensionalen Rechtecken zusammengesetzt. Außerdem ändern
wir die Spielregeln so ab, dass beim Wegnehmen eines Teiles aus einem Rechteck zwei
Rechtecke entstehen können. Zu diesem Spiel konnten wir noch keine bereits bekannten
Ergebnisse finden.
Für unser Spiel wollen wir eine Gewinnstrategie finden. Dabei stützen wir uns auf die
Theorie der Grundy-Zahlen [Wi1]. Nach dieser Theorie ist es ausreichend, die Grundy-Zahlen
von unseren Rechtecken zu bestimmen, um eine Gewinnstrategie zu erhalten. Dies tun wir für
Rechtecke bis zu einer Seitenlänge von 13 (s. Tabellen 2 und 3).
Die Grundy-Zahlen berechnen wir ausgehend von kleinen Rechtecken für immer größere
Rechtecke und hoffen, dabei auf eine Regelmäßigkeit zu stoßen. Für Rechtecke der Breite 1
und 2 können wir die Grundy-Zahl über eine einfache Formel berechnen. Für breitere
Rechtecke konnten wir keine Regelmäßigkeit entdecken.
2 Spiele
In der kombinatorischen Spieltheorie beschäftigt man sich mit Zwei-Personen-Spielen. Bei
unseren Zwei-Personen-Spielen spielt der Zufall keine Rolle, es gibt keine verborgenen
Informationen für den Spieler. Dazu wird nach jedem Zug gewechselt. Ein Spiel endet nach
einer endlichen Zahl von Zügen, und es gewinnt der Spieler, der den letzten Zug machen
kann. Diese Spiele nennt man in der Literatur (s. z.B.[Wi1]) neutrale Spiele. Wir nennen sie
in dieser Arbeit einfach Spiele. Die Schreibweise S → T soll bedeuten: Man kommt durch
einen erlaubten Zug von der Spielposition S zu der Spielposition T.
Für jede Spielposition trifft genau eine der folgenden beiden Möglichkeiten zu.
➢ Entweder der Spieler, der am Zug ist, hat eine Gewinnstrategie. Das heißt, er kann
auf jeden möglichen Zug des Gegenspielers geeignet antworten und dadurch das Spiel
gewinnen.
➢ Oder jeder mögliche Zug des Spielers am Zug führt zu einer Spielposition, in der der
Gegner eine Gewinnstrategie hat.
Das bekannteste Beispiel eines Spiels ist das (eindimensionale) Nim-Spiel (s. [Wi2]), das aus
einem oder mehreren Streichholzhaufen besteht. Ein Spielzug besteht darin, von einem der
Haufen beliebig viele Streichhölzer wegzunehmen. Dieses Spiel kann man online auf [Al]
spielen.
Das Spiel, in dem kein Zug mehr möglich ist, heißt Nullspiel und wird mit 0 bezeichnet. Das
Spiel S1 ⊕··· ⊕ Sn bezeichnet man als die Summe der Spiele S1,...,Sn . Ein Zug in diesem
Summenspiel besteht darin, dass man eines der Spiele S1,...,Sn auswählt und in diesem Spiel
einen erlaubten Spielzug durchführt.
Beispiel 1.
Ein Summenspiel ist beispielsweise ein Nim-Spiel N
mit mehren Haufen, welches als Summe der einzelnen Haufen
betrachtet werden kann.
⊕
⊕
⊕
⊕
3 xor-Summe von ganzen Zahlen
Zur Berechnung der Grundy-Zahl (s.u.) einer Summe von Spielen führen wir die xorAddition ⊕ von Zahlen ein. Dazu benutzt man das binäre Zahlensystem. Dieses
Zahlensystem verwendet nur zwei Ziffern, gekennzeichnet durch 0 und 1. Eine binäre Ziffer
nennt man auch ein Bit. Die ersten elf binären Zahlen sehen wie folgt aus:
dezimal
binär
oktal
dezimal
binär
oktal
0
0
0
6
110
6
1
1
1
7
111
7
2
10
2
8
1000
O10
3
11
3
9
1001
O11
4
100
4
10
1010
O12
101
5
11
1011
Tabelle 1: Darstellung in verschiedenen Zahlensystemen
O13
5
Im Oktalsystem werden immer drei Bits zu einer Oktalziffer (0 bis 7) zusammengefasst.
Für die xor-Summe zweier Zahlen schreibt man die Zahlen rechtsbündig untereinander. Die
untereinander stehenden Ziffern werden addiert. Zwei gleiche Ziffern ergeben 0 und zwei
verschiedene Ziffern ergeben 1. Zur Verdeutlichung dieser Rechenvorschrift geben wir ein
Beispiel mit den Oktalzahlen 01332 und 0634 an.
1011011010 = 01332
110011100 = 0634
-----------------------------------01332 ⊕ 0634
= 1101000110 = 01506
An dem Beispiel sieht man, dass die Binärzahlen ziemlich unübersichtlich werden. Darum
verwenden wir das Oktalsystem, wo man auch einfach nur die untereinander stehenden
Ziffern richtig zusammenrechnet. Die Oktalzahlen unterscheiden wir von Dezimalzahlen
durch eine vorangestellte 0. Für beliebige nicht negative ganze Zahlen m und n gilt die
Formel
m ⊕ n ≤ m+ n.
(Formel 1)
4 Grundy-Zahl
Die Grundy-Zahlen spielen eine wesentliche Rolle für Spiele. Jeder Spielposition S wird eine
so genannte Grundy-Zahl g(S) zugeordnet. Sie ist eine nicht negative, ganze Zahl. Dem
Nullspiel 0 wird die Grundy-Zahl g(0) = 0 zugeordnet.
Für jedes andere Spiel erfolgt die Berechnung der Grundy-Zahl über die Gesamtheit aller in
einem Spielzug erreichbaren Positionen. Ermittelt wird sie als die kleinste natürliche Zahl, die
in den Nachfolgeposition noch nicht vorgekommen ist.
Fortsetzung von Beispiel 1.
Wenn man laut der oben genannten Rechnung vorgeht, ergibt sich die Grundy-Zahl für einen
Nim-Haufen mit n Streichhölzern als die Zahl n. Die einzelnen Haufen des Nim-Spiels N
von oben haben also die Grundy-Zahlen 6, 3, 5, 2 und 7.
Die Grundy-Zahl besitzt folgende Eigenschaften (vgl. [Wi1]):
(1) Der Spieler am Spielzug besitzt nur eine Gewinnstrategie, wenn die Grundy-Zahl
ungleich „Null“ ist.
(2) Die Grundy-Zahl einer Summe von Spielen berechnet man durch xor-Addition der
einzelnen Grundy-Zahlen: g(S1⊕S2) = g(S1) ⊕ g(S2). Dabei ist ⊕ die oben
eingeführte xor-Summe.
Fortsetzung von Beispiel 1.
Das Nim-Spiel N von oben hat mit der Rechenregel (2) die Grundy-Zahl
6 ⊕ 3 ⊕ 5 ⊕ 2 ⊕ 7 = 7.
5 Das zweidimensionale Nim-Spiel
Eine Stellung in unserem zweidimensionalen Nim-Spiel besteht aus einem oder mehreren
Rechtecken. Für ein einzelnes Rechteck mit m Zeilen und n Spalten schreiben wir (m,n).
Beispiel 2.
Abbildung 1: Beispiel eines zweidimensionalen Nim-Spiels
Zu beachten sind die Spielregeln:
(1) Man darf in seinem Spielzug von einem der Rechtecke eine oder mehrere benachbarte
Spalten oder Zeilen wegnehmen. Das könnten in Beispiel 2 die beiden grau
schattierten Spalten in dem Rechteck (2,9) sein. Das betreffende Rechteck kann dabei
in maximal zwei Rechtecke zerfallen, hier (2,9) → (2,6) ⊕ (2,1).
(2) Es wird nach jedem Spielzug gewechselt.
(3) Es gewinnt der Spieler, der den letzten Zug machen kann.
(4) Es gibt kein Zeitlimit.
Das Spiel S oben kann man deshalb als S = (7,3) ⊕ (4,4) ⊕ (3,6) ⊕ (2,9) ⊕ (5,4)
schreiben.
Um für unser Spiel eine Gewinnstrategie zu aufzustellen, bedarf es der Berechnung der
Grundy-Zahlen. Man berechnet die Grundy-Zahl zuerst einmal nur für Rechtecke (siehe
folgender Abschnitt). Für ein Spiel aus mehreren Rechtecken erhält man die Grundy-Zahl
dann durch die xor-Summe, für unser Beispiel also durch die Rechnung
g(S) = g(7,3) ⊕ g(4,4) ⊕ g(3,6) ⊕ g(2,9) ⊕ g(5,4).
6 Berechnung der Grundy-Zahlen
In der unten dargestellten Tabelle haben wir die Grundy-Zahlen aller Spielpositionen von
(1,1) bis (3,32) berechnet. Dabei haben wir uns für die oktale Schreibweise entschieden, um
die xor-Summen einfacher bestimmen und Regelmäßigkeiten der Grundy-Zahlen leichter
erkennen zu können.
Zuerst haben wir die Gundy-Zahlen g(1,n) in der ersten Spalte bestimmt. Dabei ist uns
aufgefallen, dass die von (1,n) aus in einem Zug erreichbaren Spiele alle Grundy-Zahl g < n
haben. Andererseits kann man von (1,n) nach (1,k) ziehen, wenn k kleiner als n ist.
Dadurch ergibt sich g(1,n) = n, wie in der Tabelle zu sehen ist.
Bei g(2,n) gibt es zwei Möglichkeiten. Entweder man zieht nach (1,n) oder nach (2,k) ⊕
(2,ℓ) mit k+ ℓ < n. Die kleinste Zahl, die dabei nicht als Grundy-Zahl auftritt, ist dann
g(2,n).
Bei g(3,n) haben wir vier Möglichkeiten. Man kann nach (1,n), nach (1,n) ⊕( 1,n), nach
(2,n) oder nach (3,k) ⊕ (3,ℓ) mit k+ ℓ < n ziehen. In der fünften Spalte stehen die GrundyZahlen, die man durch eine Zerlegung von (3,n) in (3,k) ⊕ (3,ℓ) erreichen kann. Man kann
dafür die meisten Grundy-Zahlen aus der darüber liegenden Zeile übernehmen. Für n = 9
zum Beispiel sind das die Grundy-Zahlen 0−012 und g(3,8) = 014. Hinzu kommen die
Grundy-Zahlen von (3,k) ⊕ (3,ℓ) mit k + ℓ = 8. Auf diese Weise treten noch zusätzlich die
beiden Zahlen
g(3,1) ⊕ g(3,7) = 3 ⊕ 010 = 013 und g(3,2) ⊕ g(3,6) = 4 ⊕ 011 = 015
auf, die in der Tabelle fett hervorgehoben sind. Daraus ergibt sich schließlich g(3,9) = 016.
n
g(1,n) g(2,n) g(3,n)
1
1
2
3 0
2
2
1
4 0,3
3
3
4
1 0, 3, 4
4
4
5
2 0, 1, 3, 4, 7
5
5
7
6 0−4, 7
6
6
010
011 0−4, 6, 7, 5
7
7
011
010 0−7, 011
8
010
013
014 0−011, 012
9
011
014
016 0−012, 014, 013, 015
10
012
015
020 0−015, 016, 017
11
013
017
021 0−020,
12
014
020
022 0−021, 023
13
015
021
025 0−023, 024
14
016
023
026 0−025
15
017
024
027 0−026
16
020
025
030 0−027
17
021
027
031 0−030
18
022
030
032 0−031, 033
19
023
031
035 0−033, 034
20
024
033
037 0−035, 036
21
025
034
040 0−037
22
026
035
041 0−040
23
027
037
042 0−041, 043
24
030
040
045 0−043, 044
25
031
041
046 0−045
26
032
043
047 0−046
27
033
044
050 0−047
28
034
045
052 0−050, 051
29
035
047
054 0−052, 053
30
036
050
055 0−054
31
037
051
060 0−055, 057, 056
32
040
053
061 0−060
Tabelle 2: Grundy-Zahlen für die Spielstellungen (1,1) bis (3,32)
Regelmäßigkeiten in Tabelle 2.
Für g(2,n) erkennen wir eine Regelmäßigkeit. Und zwar erhöht sich die Grundy-Zahl in
dieser Spalte ab n = 3 immer in zwei Einerschritten und einem darauf folgenden
Zweierschritt. Dies lässt sich auch in einer Formel ausdrücken, die wir in Abschnitt 8
angeben.
g(3,n) ist ab n = 6 unabhängig von (1,n) und ab n = 9 unabhängig von (2,n). Allerdings
lassen sich trotz dieser Unabhängigkeit keine Regelmäßigkeiten bei (3,n) erkennen. Im
Laufe der Tabelle finden in unregelmäßiger Folge Sprünge in Einer-, Zweier- und
Dreierschritten statt.
7 Weitere rechteckige Spielstellungen
Die bisher errechneten Ergebnisse aus der vorigen Tabelle haben wir in die folgende Tabelle
eingetragen, um sie für die Berechnung der anderen Positionen zu verwenden. Sie enthält alle
Spielstellungen von (1,1) bis (13,13).
m\n
1
2
3
4
5
6
7
8
1
1
2
3
4
5
6
7 010 011 012 013 014 015
2
2
1
4
5
7 010 011 013 014 015 017 020 021
3
3
4
1
2
6 011 010 014 016 020 021 022 025
4
4
5
2
3 010 012 013 011 020 021 022 023 027
5
5
7
6 010
1
4 012 020 013 014 023 021 022
6
6 010 011 012
4
2
3
5 021 022
7
7 011 010 013 012
3
4
6 022
8 010 013 014 011 020
5
6 012 017 023 024 026 030
9 011 014 016 020 013 021 022 017
10
11
12
13
7 025 020
5 020 024 023
1
4
3 012 024
5 023
4
3
6 010 013
7 020 024
3
6
5 011 012
10 012 015 020 021 014 022
11 013 017 021 022 023
9
12 014 020 022 023 021 025 024 026 012 010 011 013 016
13 015 021 025 027 022 020 023 030 024 013 012 016 010
Tabelle 3: Grundy-Zahlen für die Spielstellungen (1,1) bis (13,13)
Am Beispiel (6,5) werden wir die Grundy-Zahl bestimmen: Man berechnet die xor-Summe
aus jeweils zwei Zahlen in der fünften Spalte oder aus jeweils zwei Zahlen in der sechsten
Zeile, die bei einem Spielzug möglich sind. Die kleinste nicht bestimmbare Zahl ist somit die
Grundy-Zahl. Um im genannten Beispiel diese Zahl zu errechnen, haben wir folgende
Rechnung angewandt:
g(2,5) ⊕
g(2,5) ⊕
g(1,5) ⊕
g(1,5) ⊕
(2,5) = 7 ⊕
(3,5) = 7 ⊕
(2,5) = 5 ⊕
(2,5) = 5 ⊕
7=0
6=1
7=2
6=3
Die Grundy-Zahl 4 lässt sich durch die xor-Addition nicht erzeugen und kommt auch als
einzelne Grundy-Zahl eines kleineren Spiels nicht in der fünften Spalte oder sechsten Zeile
vor. Dadurch kommen wir zu dem Schluss, dass die Spielposition (6,5) die Grundy-Zahl 4
besitzt.
Fortsetzung von Beispiel 2.
Für das Beispiel des zweidimensionalen Nim-Spiels von oben wollen wir herausfinden, ob
der Spieler am Zug eine Gewinnstrategie hat und welchen Zug er dann machen kann.
Als erstes lesen wir hierfür die Grundy-Zahlen für die einzelnen Rechtecke aus den Tabellen
2 und 3 ab und bilden ihre xor-Summe. Dadurch erhalten wir die Grundy-Zahl für das
gesamte Spiel S:
g(S) = g(7,3) ⊕ g(4,4) ⊕ g(3,6) ⊕ g(2,9) ⊕ g(5,4) = 010 ⊕ 03 ⊕ 011 ⊕ 014 ⊕ 010 = 06
Um nun unsere Gewinnstrategie erfolgreich durchzuführen, müssen wir den Gegenspieler zur
Grundy-Zahl 0 bringen. Dies gelingt, indem wir aus dem Rechteck (2,9) die zwei oben grau
markierten Spalten (s. Abbildung 1) entnehmen. Dieser Spielzug
S = (7,3) ⊕ (4,4) ⊕ (3,6) ⊕ (2,9) ⊕ (5,4)
→ S' = (7,3) ⊕ (4,4) ⊕ (3,6) ⊕ (2,1) ⊕ (2,6) ⊕ (5,4)
ergibt die Grundy-Zahl
g(S') = 010 ⊕ 03 ⊕ 011 ⊕ 002 ⊕ 010 ⊕ 010 = 0.
Somit hat der Gegenspieler keine Möglichkeit mehr, seine eigene Gewinnstrategie
durchzusetzen.
8 Formeln für die Grundy-Zahlen
Die von uns in Tabelle 2 beobachteten Regelmäßigkeiten wollen wir als Formeln
aufschreiben. Wie wir bereits oben bemerkt haben gilt
g(1,n) = n für alle n≥0.
Beweis.
Wir beweisen die Behauptung durch Induktion nach n.
Induktionsanfang: Für n = 0 ist (1,n) = (1,0) das Nullspiel und somit ist nach der Definition
die Bestimmung der Grundy-Zahl g(1,n) = g(1,0) = 0 = n.
Wenn n>0 ist, wird die Menge G(n) := {g(S) : (1,n) → S } benötigt.
Induktionsvoraussetzung:
Wir legen fest, dass g(1,k) = k ist, wenn k < n erfüllt ist.
Induktionsschritt:
Wenn k<n gilt, kann man von (1,n) nach (1,k) ziehen. Das ist durch Wegnehmen am Rand
möglich. Nach Induktionsvoraussetzung enthält die Menge G(n) also die Grundy-Zahlen
0,1,...,n-1.
Durch die Wegnahme einer oder mehrerer Spalten oder Zeilen aus der Mitte in einem
Spielzug entsteht ein Summenspiel (1,r) ⊕ (1,s) mit r + s < n. Wir berechnen nun die GrundyZahl dieses Summenspiels. Aus Formel 1 von Abschnitt 3 oben ergibt sich
g((1,r)⊕(1,s)) = g(1,r)⊕g(1,s) = r ⊕s ≤ r + s < n.
Damit ist gezeigt, dass G(n) = {0,1,...,n-1} und g(1,n) = n ist.
Die in Abschnitt 6 beschriebene Regelmäßigkeit für g(2,n) lässt sich folgendermaßen als
Formel schreiben.
Für k>0 gilt
g(2, 3k) = 4k,
g(2, 3k+1) = 4k+1 und
g(2, 3k+2) = 4k+3.
Um die Grundy-Zahl zu bestimmen, teilt man also die Anzahl an Spalten und durch die
Zahl 3. Der bei der Division entstehende Rest entscheidet über die zu verwendende Formel.
Beispiele.
Zur Demonstration dienen folgende Beispiele:
g(2,32) = g(2, 3·10+2) = 4·10+3 = 43
g(2,55) = g(2, 3·18+1) = 4·18+1 = 73
g(2,78) = g(2, 3·26)
= 4·26
= 104
9 Zusammenfassung
Vor unseren Rechnungen hatten wir uns erhofft, dass wir eine Formel für g(m,n) und damit
eine allgemeine Gewinnstrategie formulieren können. Eine solche allgemeine Formel konnten
wir nicht herausfinden, aber zumindest eine für g(1,n) und g(2,n). Außerdem haben wir ein
Verfahren entwickelt, um die Grundy-Zahlen für immer größere Rechtecke zu bestimmen.
Die Tabellen liefern uns eine Gewinnstrategie für zweidimensionale Nim-Spiele mäßiger
Größe.
Quellenverzeichnis
[Wi1] Wikipedia: Kombinatorische Spieltheorie,
http://de.wikipedia.org/wiki/Kombinatorische_Spieltheorie#Sonderfall:_Neutrale_Spiele
(05.01.2011)
[Wi2] Wikipedia: Nim-Spiel, http://de.wikipedia.org/wiki/Nim-Spiel (05.01.2011)
[Al] Alraft: Nim-Spiel, http://www.alraft.de/altenhein/nim.htm (05.01.2011)
Erklärung
Wir versichern hiermit, dass wir diese Arbeit selbständig und nur unter Verwendung der
angegebenen Literatur und Hilfsmittel verfasst haben. Auf die Theorie der Grundy-Zahlen hat
uns unser Betreuer, Herr Miyamoto, hingewiesen.
_____________________
Nemanja Sandic
_____________________
Tan Vu Pham
Herunterladen