Entwicklung einer Methode zum Lösen und Bewerten von Sudoku-Rätseln und Implementation derselben als Java-Applet Diplomarbeit

 
WEITER LESEN
Entwicklung einer Methode
   zum Lösen und Bewerten von
           Sudoku-Rätseln und
   Implementation derselben als
                   Java-Applet

                  Diplomarbeit

                Fachhochschule Merseburg
Fachbereich Informatik und Angewandte Naturwissenschaften
                  Studiengang: Informatik

             eingereicht von Henrik Schleider

          Erstprüfer: Prof. Dr. rer. nat. Axel Kilian
       Zweitprüfer: Prof. Dr. habil. Michael Schenke

                Merseburg, den 31. 3. 2006
Abstract

Sudoku – das beliebte Zahlenrätsel – fasziniert immer mehr Menschen. Es
eignet sich aufgrund seines strukturierten Aufbaus und seiner logischen
Lösungsmethoden hervorragend für Untersuchung mittels Computer. In der
vorliegenden Arbeit wurden verschiedene von Menschen verwendete
Techniken zum Lösen von Sudokus analysiert und verglichen. Diese
Techniken sind in Gruppen zusammengefasst und verallgemeinert worden
um Lösungsalgorithmen für Computer daraus zu erstellen. Mit Hilfe dieser
Algorithmen und einem zusätzlich entwickelten Backtracking-Verfahren ist
die (rechnergestützte) Auffindung sämtlicher Lösungen eines jeden Sudokus
möglich. Ein weiterer Schwerpunkt der Arbeit ist die Bewertung des
Schwierigkeitsgrades eines Sudokus. Hierzu wird eine Bewertungsfunktion
vorgestellt, die Sudokus in mehr als die sonst üblichen drei bis vier
Schwierigkeitsstufen einteilt. Die Funktion klassifiziert die Rätsel anhand von
Ergebnissen, die aus einer Umfrage gewonnen wurden und orientiert sich
somit an menschlichen Sudoku-Spielern.
Inhaltsverzeichnis

Inhaltsverzeichnis
1             Einleitung.................................................................................. 1

2             Einführung in Sudoku.............................................................. 4
    2.1       Die Geschichte........................................................................... 4
    2.2       Das Spiel.................................................................................... 5
    2.3       Die Begriffe................................................................................ 6

3             Strategien.................................................................................. 8
    3.1       Lösungstechniken für Sudoku-Spieler....................................... 9
    3.2       Umsetzung der Lösungstechniken für Computer..................... 20
    3.3       Der Schwierigkeitsgrad............................................................ 34
    3.4       Mehrfachlösungen.................................................................... 35

4             Das Programm........................................................................ 38
    4.1       Die Hauptklasssen................................................................... 38
      4.1.1   Die Appletklasse...................................................................... 38
      4.1.2   Die Sudokuklasse.................................................................... 40
      4.1.3   Die Lösungsklasse................................................................... 40
    4.2       Spezielle Klassen..................................................................... 42
      4.2.1   Die Algorithmusklassen............................................................ 42
      4.2.2   Das Backtracking..................................................................... 45
      4.2.3   Die Spielfeldklassen................................................................. 49
      4.2.4   Die Logklasse........................................................................... 49
      4.2.5   Hilfsklassen.............................................................................. 50

5             Die Benutzeroberfläche......................................................... 52
    5.1       Der Aufbau............................................................................... 52
    5.2       Das Spielfeld............................................................................ 55
Inhaltsverzeichnis

    5.3           Die Schaltflächen..................................................................... 56
    5.4           Der Standardablauf.................................................................. 57

6                 Bestimmung des Schwierigkeitsgrades.............................. 59
    6.1           Die Umfrage............................................................................. 61
        6.1.1     Die Erstellung........................................................................... 62
        6.1.2     Das Ergebnis............................................................................ 66
        6.1.3     Die Auswertung........................................................................ 69
    6.2           Die Bewertungsfunktion........................................................... 72

7                 Zusammenfassung................................................................ 75

Quellenverzeichnis ....................................................................................... 78

Anhang A:                     Kurzanleitung des Sudoku-Applets
Anhang B:                     Umfrage
Einleitung

1         Einleitung

Sudoku – ein aktuelles Zahlenrätsel – hat inzwischen viele Menschen auf
der ganzen Welt in seinen Bann gezogen. Die Popularität dieses Rätsels
steigt von Tag zu Tag. In fast jeder Zeitung findet man dieses Zahlenrätsel,
im Internet gibt es unzählige Seiten, auf denen Sudokus zum Ausdrucken
oder online Spielen angeboten werden, und es ist natürlich als Handyspiel
erschienen. Vielleicht ist das schlichte Spielprinzip der Grund für die hohe
Beliebtheit: es gibt nur eine Vorschrift und obwohl Zahlen eingetragen
werden müssen, sind keine Rechnungen vonnöten. Durch reines logisches
Überlegen ist ein Sudoku zu lösen.
Auf Grund der trivialen Möglichkeit zur Abstraktion und der einfachen bis hin
zu komplexen logischen Lösungstechniken bietet sich Sudoku geradezu für
eine   programmtechnische      Untersuchung     und   Umsetzung     an.   Ein
Schwerpunkt wurde dabei in der vorliegenden Diplomarbeit auf den Vergleich
der Lösungsstrategien von Mensch und Maschine gelegt. Des weiteren
wurde das Problem der Bewertung des Schwierigkeitsgrades von Sudokus
untersucht.   Das im Rahmen dieser Diplomarbeit entstandene Programm
bietet neben der Lösung von Sudokus die Möglichkeit, dass ein Anwender
selbst Rätsel lösen kann. Dabei wurde Wert auf Benutzerfreundlichkeit und
Unterstützung des Spielers gelegt.

In Kapitel 2 wird eine kurze Einführung in die Geschichte und den
prinzipiellen Aufbau eines Sudoku-Zahlenrätsels gegeben. Außerdem
werden hier die Begriffe eingeführt und erläutert, die im weiteren Verlauf der
Arbeit verwendet werden.

                                     -1-
Einleitung

Versierte Spieler verwenden unterschiedliche Techniken um ein Sudoku zu
lösen. Die wichtigsten davon werden in Kapitel 3 vorgestellt. Zu Beginn wird
ein Überblick über mögliche Lösungsansätze für Sudoku-Spieler gegeben.
Danach werden diese Ansätze zusammengefasst und für den Einsatz auf
Computern optimiert.

Für   Sudoku    Zahlenrätsel    wird   üblicherweise   ein   Schwierigkeitsgrad
angegeben, der dem Spieler bei der Einschätzung eines ungelösten Rätsels
helfen soll. Das Problem der Bewertung der Schwierigkeit von Sudoku-
Rätseln wird in Kapitel 3 ebenfalls erörtert. Im letzten Teil wird auf die Anzahl
der möglichen Lösungen eines Sudokus eingegangen.

Für die Lösung und Bewertung von Sudokus wurde ein Programm in Form
eines Java-Applets erstellt. Auf Grund der Objektorientierung ist die
Programmiersprache Java als Basis für die Erstellung der Anwendung sehr
geeignet. In Kapitel 4 wird näher auf die Implementierung des Programms
sowie   die    verwendeten     Klassen   eingegangen.     Weiterhin   wird    ein
Backtracking-Algorithmus vorgestellt. Letzterer wird für die Lösung benutzt,
wenn keine andere Regel mehr anwendbar ist.

Für die Interaktion zwischen Spieler und Programm wurde eine grafische
Oberfläche entwickelt, welche die Hauptfunktionen des Programms verfügbar
macht. Die für die Umsetzung gewählte Programmiersprache Java ist
plattformunabhängig. Diese Wahl wurde getroffen, um einen möglichst
großen Nutzerkreis zu erreichen. Kapitel 5 erläutert die grafische Oberfläche
des Programms und gibt Hinweise zur Bedienung.

Die Bewertung der Schwierigkeit eines Sudokus hängt sehr stark von der
subjektiven Empfindung und der Erfahrung des Spielers ab. Um die
vorgestellten und im Programm verwendeten Lösungsstrategien bewerten zu

                                       -2-
Einleitung

können, wurde eine Umfrage unter Nutzern von Sudokus im Internet
durchgeführt.   Anhand   der   Ergebnisse   konnte   eine   Bewertung   der
verwendeten Lösungsalgorithmen in Bezug auf Schwierigkeit und Priorität
erstellt werden. Die Einschätzung des Schwierigkeitsgrades eines Sudokus
erfolgte nun anhand der für die Lösung verwendeten Strategien.

Die erzielten Ergebnisse werden in Kapitel 7 abschließend zusammengefasst
und bewertet. Darüber hinaus wird ein Ausblick auf mögliche Erweiterungen
gegeben.

                                   -3-
Einführung in Sudoku

2           Einführung in Sudoku

2.1         Die Geschichte

Sudoku hat als Grundlage vermutlich das
carré latin (Lateinisches Quadrat). Dies ist
                                                         a       b       c      d
durch     den     Schweizer          Mathematiker
Leonhard      Euler     (1707-1783)      bekannt         b       d       a       c
geworden. Das Lateinische Quadrat ist ein
nxn     Feld,    in   dem      n     verschiedene
                                                         d       c       b      a
Symbole so eingetragen werden, dass in                   c       a       d      b
jeder Spalte und jeder Zeile jedes Symbol
nur einmal vorkommt.
                                                     Abbildung 1: Lateinisches Quadrat

      „Das heutige Sudoku in Blockform wurde 1979 in der Zeitschrift Math Puzzels & Logic
      Problems in den USA erstmals publiziert. Seinen Durchbruch erlangte das Sudoku
      jedoch erst um etwa 1984, als die japanische Zeitschrift Nikoli diese zunächst unter
      dem Namen Sūji wa dokushin ni kagiru regelmäßig abdruckte. Hieraus entwickelte
      sich schließlich der Begriff Sudoku. Der Neuseeländer Wayne Gould hat Sudoku auf
      einer Japanreise kennen gelernt. Sechs Jahre brauchte er, um eine Software zu
      entwickeln, die neue Sudokus per Knopfdruck entwickeln kann.
      Anschließend bot er seine Rätsel der Times in London an. Die Tageszeitung druckte
      die ersten Sudoku-Rätsel und trat auf diese Weise eine Sudoku-Lawine in der
      westlichen Welt los.“ [WI05]

Auch in Deutschland ist seit Ende des Jahres 2005 kaum eine Rätsel- oder
Tageszeitung       mehr ohne mindestens ein Sudoku zu finden. Es wurden

                                           -4-
Einführung in Sudoku

inzwischen ganze Bücher veröffentlicht, die nur diese Zahlenrätsel enthalten.
Selbst als Brettspiel kann man es mittlerweile kaufen.

Ein Paradies für Sudoku-Spieler ist auch das Internet. Dort kann man
Unmengen von diesen Rätsel finden, zum online Spielen (siehe [SS06],
[WS06]) oder Ausdrucken (siehe [SA06], [DS06]). Es existieren viele
Internetseiten, die sich nur mit dem Thema Sudoku beschäftigen . Auf diesen
Seiten werden Regeln zum Lösen erklärt und diskutiert (siehe [PS06],
[SF06]). Weiterhin werden auch eine Vielzahl von Programmen angeboten
(siehe [JO05], [SM06]). Diese Programme sollen Sudokus erstellen oder
lösen können, manche helfen auch nur beim Lösen.

2.2        Das Spiel

                                                 Das Spielfeld eines Sudokus ist ein
                                                 Quadrat mit 9 × 9 Feldern. Es wird
              1   7
                                                 zusätzlich noch in neun 3 × 3
      8                           7 6
                                                 Unterquadrate      eingeteilt,     deren
      7           4 2 9           8
                                                 Ränder für eine bessere Übersicht
      2       4       9           5
                                                 hervorgehoben       sind.    In     das
      5                               8
                                                 Spielfeld   sind   bereits       mehrere
          8           1       4       2
                                                 Zahlen eingetragen. Diese werden
          2       5 7 4               9
                                                 Vorgaben     genannt     und      haben
      6 7                             5
                          2   1                  jeweils einen Wert zwischen 1 und
                                                 9. Die Anzahl der Vorgaben liegt
                                                 üblicherweise zwischen 22 und 36.
      Abbildung 2: ein ungelöstes Sudoku

                                           -5-
Einführung in Sudoku

Es kann auch mehr oder weniger Vorgaben geben, allerdings wird dadurch
das Spiel sehr vereinfacht oder erschwert.

Die Aufgabe des Spielers besteht nun darin, alle leeren Felder mit Zahlen
von 1 bis 9 aufzufüllen, so dass in jeder Zeile, Spalte und jedem
Unterquadrat jede Zahl genau einmal vorkommt. Ein gültiges Sudoku hat nur
eine eindeutige Lösung.

Es gibt inzwischen auch viele
Sonderformen des Spiels (siehe
                                         9 3 1          7 8 6       5   2 4
[SD06]).      Eine        einfachere
                                         8 4 2          3 5 1       9   7 6
Version für Kinder besteht aus
                                         7 6 5          4 2 9       3   8 1
einem      4×4       Quadrat    und
                                         2 1 4          8 9 7       6   5 3
anstelle   der    Zahlen    werden
                                         5 9 6          2 4 3       7   1 8
Bilder     verwendet.       Weitaus
                                         3 8 7          6 1 5       4   9 2
komplexer sind Spielfelder mit
                                         1 2 3          5 7 4       8   6 9
einer Kantenlänge von 16 oder
                                         6 7 9          1 3 8       2   4 5
gar 25, bei denen dann die               4 5 8          9 6 2       1   3 7
Zahlen 1 bis 16 oder 1 bis 25
eingetragen      werden    müssen.
                                             Abbildung 3: ein gelöstes Sudoku
Weiterhin gibt es auch Sudokus,
bei denen nicht mehr das Quadrat die Grundform bildet. Der Menge der
Variationen sind so gut wie keine Grenzen gesetzt – es werden täglich mehr.

                                       -6-
Einführung in Sudoku

2.3        Die Begriffe

Das Rätsel Sudoku ist international sehr beliebt und es haben sich einige
spezielle Begriffe herausgebildet, die häufig in englischer Sprache sind –
meist weil es keine adäquate Übersetzung ins Deutsche gibt. Hier werden
nun einige Grundbegriffe eingeführt, die in den folgenden Kapitel häufig
benutzt werden.
Das komplette Sudoku-Quadrat wird Gitter (grid) oder Spielfeld genannt, es
besteht aus 9 Zeilen (rows), 9 Spalten (columns), 9 Blöcken (blocks)
beziehungsweise 81 Feldern (cells). Ein Block ist eines der 9 Unterquadrate
mit der Größe 3 × 3. Eine Zeile, eine Spalte oder ein Block wird als Einheit
(unit) bezeichnet, ein Sudoku-Gitter besteht also aus 27 Einheiten.
Ein Kandidat ist in eine in einem Feld noch mögliche Zahl, alle möglichen
Kandidaten in einem Feld werden in einer Kandidatenliste zusammengefasst.
Die One-Rule ist die Hauptregel von Sudoku. Sie besagt, dass in jeder
Einheit, also in jeder Zeile, in jeder Spalte und in jedem Block die Zahlen von
1 bis 9 nur genau einmal vorkommen dürfen und müssen.
Vorgaben sind die zu Beginn in das Sudoku schon eingetragenen Zahlen.
Ein Kandidat heißt naked single, wenn nur er in einem Feld noch möglich ist.
Naked könnte man in diesem Fall am besten mit blank oder sichtbar
übersetzen. Der Kandidat heißt hidden single, wenn er in der Einheit nur an
einer Stelle vorkommen kann. Hier passt die Übersetzung versteckt, da in
dem Feld, wo dieser Kandidat vorkommt, noch andere Kandidaten stehen
können. Weitere Beschreibungen dazu folgen im nächsten Kapitel.
Die Bezeichnungen n- Clique, Locked Candidates und n- Fish stehen für
Techniken zum Lösen von Sudokus und werden ebenfalls im kommenden
Kapitel näher erläutert.

                                     -7-
Strategien

3         Strategien

Die Lösung eines Sudokus ist eine Aufgabe, die ohne den Einsatz
verschiedener Lösungsstrategien kaum zu bewältigen ist. Dabei gibt es für
Menschen und Computer unterschiedliche Herangehensweisen.

Ein Mensch, der ein Sudoku lösen will, geht primär visuell an das Problem
heran. Er erkennt zum Beispiel mit einem Blick, ob eine bestimmte Zahl in
einem Block vorhanden ist oder fehlt. Zu Beginn wird er nur die One-Rule
benutzen, die besagt, dass in jeder Zeile, jeder Spalte und jedem Block die
Zahlen von 1 bis 9 nur jeweils einmal vorkommen dürfen. Die einfachste und
direkteste Anwendung der One-Rule ist das Eintragen der fehlenden Zahl in
Einheiten (Zeile, Spalte oder Block), in denen schon acht Zahlen vorgegeben
sind. Damit kommt der Sudoku-Spieler aber nicht sehr weit und er wird
beginnen Strategien zu entwickeln, wie er weitere Zahlen finden kann. Einige
dieser Techniken werden im ersten Teil des Kapitels vorgestellt.

Der Computer hat aufgrund seiner Geschwindigkeit einen Vorteil gegenüber
dem Menschen. Er kann viel schneller überprüfen, welche Zahlen noch
fehlen. Aber auch er braucht Algorithmen, nach denen er vorgehen kann.
Aufgrund seiner enormen Rechenleistung könnte er die Lösung durch reines
Ausprobieren finden. Die Dauer dafür würde bei der aktuellen Ausstattung
der Rechner und einem geeigneten Algorithmus nur Minuten oder Sekunden
betragen, während Menschen dafür Stunden bis Tage benötigen würden.
Jedoch kann der Computer auch die Techniken, die der Mensch verwendet,
nutzen. Dadurch wird seine Lösungsgeschwindigkeit noch erhöht, da er nicht
mehr alle Möglichkeiten durchtesten muss, sondern einige davon frühzeitig

                                     -8-
Strategien

ausschließen kann. Die Anwendung dieser Techniken wird im zweiten Teil
des Kapitels beschrieben.

Zu den meisten Sudokus wird ein Schwierigkeitsgrad angegeben. Dieser
variiert zwischen leicht (easy), mittel (medium) und schwer (hard), man findet
auch Rätsel, die als sehr schwer eingestuft sind, im Englischen werden diese
zum Beispiel als „evil“ (bösartig) oder „atrocious“ (grauenhaft) bezeichnet.
Darüber, wie die Anbieter dieser Sudokus ihre Kategorisierung vornehmen,
ist jedoch meistenteils nichts zu erfahren. Zudem stellen Sudoku-Spieler
auch häufig fest, dass ein schweres Rätsel ihnen sehr leicht lösbar erscheint,
während sie im Gegenzug für ein leichtes sehr viel Zeit und komplexe Regeln
benötigen. Mit dem Schwierigkeitsgrad von Sudokus beschäftigt sich der
dritte Teil des Kapitels.

Eine Eigenschaft des Sudokus ist die eindeutige Lösung. Um das zu
überprüfen muss das Rätsel jedoch erst einmal gelöst werden. Diesen
Aufwand betreiben nicht alle Anbieter, so kann es passieren, dass man auf
ein Sudoku mit mehreren verschiedenen Lösungen trifft. Im letzten Teil des
Kapitels wird das Problem Mehrfachlösungen besprochen.

3.1        Lösungstechniken für Sudoku-Spieler

Die wohl simpelste Methode ist, eine Zeile, eine Spalte oder einen Block zu
suchen, wo nur noch eine Zahl fehlt, also schon acht vorgegeben sind. An
dieser Stelle wird dann die noch fehlende Zahl eingetragen, diese nennt man
auch „naked single“. Im Block im Beispiel 1 fehlt in der Mitte noch die 5.
Diese Methode kann man dann auch mit sich selbst kombinieren, indem man

                                     -9-
Strategien

mehrere Einheiten betrachtet. Dazu sucht
man sich wieder ein freies Feld und
vergleicht die jeweilige Zeile mit der
dazugehörigen Spalte und überprüft, ob           1         2         3
nur noch eine Zahl in diesem Feld möglich
ist. Man kann nun die Zeile mit dem Block        4        __         6
vergleichen, die Spalte mit dem Block oder
alle drei Einheiten zusammen. Je mehr            7         8         9
Einheiten man miteinander vergleichen
muss,    desto   komplexer   wird    diese
Strategie.                                      Beispiel 1: naked single

Sehr häufig wird die folgende Technik benutzt, da sie relativ einfach
anzuwenden ist. Man sucht sich in einem Block eine Zahl aus, die nicht
vorgegeben ist und betrachtet die den Block schneidenden 3 Zeilen und
3 Spalten. In den Zeilen und Spalten, in denen die gesuchte Zahl schon
eingetragen ist, kann sie im Bereich des betrachteten Blockes nicht mehr
vorkommen. Im Idealfall bleibt nur noch eine Möglichkeit offen, so dass man
die Zahl eintragen kann. Die mit dieser Lösungsstrategie gefundenen Zahlen
werden auch als „hidden single“ bezeichnet.

Im Beispiel 2 kann man mit dieser Taktik Positionen finden, an denen eine 8
eingetragen werden muss. Betrachtet man den Block links oben, so stellt
man fest, dass in den Zeilen 1 und 2 sowie in Spalte 2 jeweils schon eine 8
steht und somit die fehlende 8 im Block links oben nur im rechten unteren
Feld möglich ist. Im Block im Zentrum des Sudokus muss die 8 im rechten

                                    - 10 -
Strategien

                                                       oberen Feld stehen, da sich in
                                                       Spalte 4, Spalte 5 und Zeile 5
       1     2   3    4   5    6   7      8    9
                                                       schon Zahlen mit dem Wert 8
   1   3              8   7               9
                                                       befinden.
   2   7                  9    5          8
   3   9         8        3        2          7
                                                       Als nächstes kommt meist die
   4                  9       8           4
                                                       Taktik       der         festgesetzten
   5   6         9        4        8          1
                                                       Kandidaten    („locked     candidate“)
   6         1                 3              9
                                                       zur Anwendung. Dabei betrachtet
   7   1         6        8        9          2
                                                       man die Schnittpunkte von Blöcken
   8         8        3   6        9          5
                                                       mit Zeilen oder Spalten. Wenn in
   9         7            2    9              8
                                                       einem Block eine bestimmte Zahl
                                                       nur noch in einer Zeile oder einer
           Beispiel 2: locked candidate
                                                       Spalte möglich ist, so sind das
Locked Candidates für diese Zeile oder Spalte – diese Zahl muss in einem
Feld dieses Schnittpunktes stehen und kann somit in der betreffenden Zeile
oder Spalte nicht mehr vorkommen. Ebenfalls ein Locked Candidate liegt vor,
wenn in einer Zeile oder einer Spalte eine Zahl nur noch in einem Block
vorkommen kann. Dann besteht für diese Zahl in dem betreffenden Block in
keiner anderen Zeile oder Spalte mehr eine Möglichkeit.

Im Beispiel 2 sind die beiden Neunen im rechten unteren Block Locked
Candidates. Da sie in diesem Block nur in der linken Spalte vorkommen,
kann man sagen, dass die 9 in der 7. Spalte im untersten Block stehen muss
und nicht im mittleren oder oberen. Durch Kombination mit der „hidden
single“-Regel kann man nun im rechten mittleren Block die 9 rechts unten
eintragen.

                                              - 11 -
Strategien

Mit diesen ersten 3 Lösungsmethoden kann man schon fast alle der als leicht
eingestuften Sudokus lösen, auch einige der mittelschweren sind damit
lösbar. Durch geeignete Kombination der Methoden sollte man sogar den
Großteil der mittleren sowie einige schwere Rätsel fertigstellen können.

Um    weitere   Techniken    nutzen    zu      können,   werden     so   genannte
Kandidatenlisten aufgestellt. Diese kann man im Kopf erstellen, jedoch ist es
einfacher sie in das Rätselfeld zu schreiben. Man trägt in die leeren Felder
alle noch möglichen Zahlen ein – alle Zahlen, die in der Zeile, Spalte oder
dem jeweiligen Block nicht vorkommen. Eine Kandidatenliste ist die Menge
der noch vorhandenen Möglichkeiten für ein Feld, nachfolgend in
geschweiften    Klammern     dargestellt    (zum   Beispiel   ist   {1, 2, 3}   eine
Kandidatenliste, die besagt, dass in einem Feld nur noch die Zahlen 1, 2 und
3 möglich sind). Das Erstellen solcher Listen gilt gleichzeitig als Überprüfung,
ob man die erste und zweite Technik richtig angewendet hat. Wenn in einem
Feld nur noch eine Zahl möglich, also nur ein Kandidat eingetragen ist, dann
entspricht dies dem Ergebnis der ersten Technik. Daher kommt auch die
Bezeichnung „naked“ (blank, bloß, offen) – es ist eindeutig sichtbar, dass es
nur noch eine Möglichkeit gibt. Wenn in einer Zeile, einer Spalte oder einem
Block eine Zahl nur in einer einzigen Kandidatenliste auftaucht, so kann man
sie an dieser Stelle eintragen. Das entspricht Technik Zwei – „hidden“
bedeutet in diesem Fall, dass die Lösung für das entsprechende Feld in einer
Kandidatenliste versteckt ist.

                                      - 12 -
Strategien

                                                                    125
       3     678      27     127         4       27         9   5    8

                           Beispiel 3: sichtbare 2-Clique

Eine Erweiterung der ersten Technik, bei der nach „naked singles“ gesucht
wird, findet Anwendung, wenn es genau 2 Kandidatenlisten in einer Einheit
(Zeile, Spalte oder Block) gibt, die aus den gleichen Zahlen („naked pairs“,
sichtbare Paare) bestehen. Dann muss in dem einen Feld die eine und in
dem anderen Feld die andere Zahl stehen. Somit kann man diese Werte aus
allen anderen Kandidatenlisten in dieser Einheit streichen.

Diese Technik kann man auch für größere Gruppen von Kandidatenlisten in
einer Einheit verwenden. Man sucht dann nach „naked triplets“ (sichtbare
3er-Gruppen), „naked quad“ (sichtbare 4er-Gruppen) und so weiter. Für eine
sichtbare 3er-Gruppe braucht man 3 Kandidatenlisten, die jeweils aus den
3 gleichen Zahlen bestehen. Eine solche Gruppe besagt, dass in den
dazugehörigen 3 Feldern diese 3 Zahlen stehen müssen, sie können somit in
der betrachteten Einheit an keiner anderen Stelle vorkommen. Diese 3
Zahlen können nun aus allen anderen Kandidatenlisten der Einheit
gestrichen werden. Sichtbare 4er-Gruppen bestehen aus 4 Kandidatenlisten
mit jeweils 4 gleichen Zahlen. Befinden sich in 5 Listen nur die gleichen 5
Zahlen, so hat man eine sichtbare 5er Gruppe gefunden und man kann diese
5 Zahlen aus den restlichen Kandidatenlisten der Einheit entfernen. Es sind
auch Gruppen von 6, 7, 8 oder 9 Zahlen möglich, die jedoch praktisch keine

                                       - 13 -
Strategien

große Bedeutung haben, da sie sehr schwer zu erkennen sind oder keinen
Effekt (es können keine Kandidaten gestrichen werden) zur Folge haben.

                      167      123                                      236
       5      238
                       8        7
                                         38      238          4   9      7

                            Beispiel 4: sichtbare 3-Clique

Eine sichtbare Gruppe der Anzahl n wird von jetzt an als sichtbare n-Clique
bezeichnet. Ein „naked single“ ist also eine sichtbare 1-Clique, ein „naked
pair“ wird sichtbare 2-Clique genannt und so weiter.

In einer sichtbaren n-Clique müssen nicht zwingend alle Kandidatenlisten
aus n Zahlen bestehen. So müssen bei einer 3-Clique nicht in allen drei
Listen alle drei Zahlen vorkommen. Nicht nur {{a, b, c}, {a, b, c}, {a, b, c}},
sondern auch {{a, b}, {a, b, c}, {a, b, c}} {{a, b, c}, {b, c}, {a, c}} und sogar
{{a, b}, {b, c}, {a, c}} sind sichtbare 3-Cliquen für die Zahlen a, b und c.

      23       15                        15       23               1      1
     569       69
                        7        4       69      679
                                                              8   56     59

                            Beispiel 5: versteckte 2-Clique

Auch die 2. Technik kann mit Hilfe der Kandidatenlisten erweitert werden.
Dabei wird nach „hidden pairs“, „hidden triplets“, „hidden quads“, also nach

                                        - 14 -
Strategien

versteckten Gruppen von Zahlen in einer Einheit gesucht. Für ein verstecktes
Paar sucht man 2 Kandidatenlisten, in denen jeweils 2 Zahlen vorkommen,
die in den anderen Kandidatenlisten dieser Einheit nicht vorhanden sind.
Falls es ein solches Paar gibt, dann muss die eine Zahl in dem einen Feld
und die andere in dem anderen Feld stehen. Somit kann man aus den
Kandidatenlisten in diesen beiden Feldern alle anderen Kandidaten
streichen.

      124                36       3         3      124               36      14
       69
                 5       89      69        89       6
                                                                7    89      89

                              Beispiel 6: versteckte 3-Clique

Für eine versteckte 3er-Clique dürfen 3 Zahlen nur in 3 Listen vorkommen,
beispielsweise kommen bei {{1, 2, 3, 4, 5}, {1, 2, 5, 6}, {1, 2, 3, 5, 7}, {4, 5, 7},
{4, 5, 6}, {5, 6}, {5, 6, 7}} die Zahlen 1, 2 und 3 nur in den ersten drei
Kandidatenlisten vor (wobei in der 2. Liste keine 3 enthalten ist), somit
können in diesen Listen die anderen Kandidaten gestrichen werden1. Auch
diese Technik lässt sich auf vier und mehr Zahlen erweitern, allerdings sind
diese versteckten Cliquen sehr schwer zu entdecken.

Bei den versteckten n-Cliquen gilt ebenfalls, dass nicht in jeder
Kandidatenliste der Clique alle n Zahlen vorkommen müssen.

1 Bemerkung: Die letzten vier Kandidatenlisten entsprechen einer sichtbaren 4-Clique für
  die Zahlen 4, 5, 6 und 7 und somit können diese Werte aus den ersten drei Listen
  gestrichen werden. Die Ergebnisse sind identisch.

                                          - 15 -
Strategien

Die Regel Locked Candidate ist mit eingetragenen Kandidatenlisten
einfacher anzuwenden. Dazu betrachtet man wieder die Schnittpunkte von
Blöcken mit Zeilen oder Spalten. Hat man eine Zahl gefunden, die in Bezug
auf die Zeile oder Spalte nur in den drei Feldern des Schnittpunktes mit dem
Block vorkommt, so hat man Locked Candidates und man kann aus allen
anderen Kandidatenlisten in diesem Block diese Zahl streichen. Auch wenn
eine Zahl in einem Block nur in einer Zeile oder Spalte auftaucht, spricht man
von Locked Candidates und kann in der betreffenden Zeile oder Spalte alle
anderen Vorkommen dieser Zahl entfernen.

Eine anspruchsvollere Technik,
auch      als   „x-wing“    bekannt,
bezieht sich auf Pärchen von                    1    2   3    4    5     6    7   8   9

gleichen Kandidaten in Zeilen           1                9         9    9     9       9
und Spalten. Wenn es eine               2                9                    9
Zeile gibt, in der eine Zahl nur        3       9        9              9
an zwei Stellen stehen kann             4

und in einer weiteren Zeile die         5

gleiche     Zahl     nur    an   den    6

gleichen beiden Stellen möglich         7                               9     9
ist, so kann man in diesen zwei         8                9                    9

Spalten diese Zahl aus allen            9       9                  9          9       9

anderen Feldern streichen. Der
Grund      hierfür   ist   folgender:                    Beispiel 7: x-wing

Wenn man in der ersten Zeile die Zahl an die erste mögliche Position setzt,
kann sie nicht an der zweiten Position stehen und man kann sie außerdem
aus allen weiteren Kandidatenlisten in der Spalte, die zur ersten Position

                                            - 16 -
Strategien

gehört, streichen. Daraufhin kann in der zweiten Zeile die Zahl nur an
Position zwei stehen und in der dazugehörigen Spalte kann die Zahl
wiederum aus allen Kandidatenlisten entfernt werden. Analog geht man vor,
wenn man in der zweiten Zeile die Zahl an Position eins setzt. Diese
Strategie kann man auch für Spalten einsetzen, dann sucht man nach zwei
Spalten, in denen die gleiche Zahl nur in jeweils zwei gleichen Positionen
vorkommen kann und streicht sie aus den Kandidatenlisten in den
dazugehörigen zwei Zeilen. Im Beispiel 7 sind nur die Felder ausgefüllt, in
denen noch eine 9 möglich ist, also mindestens eine 9 in der Kandidatenliste
vorkommt. In Zeile 2 und 8 gibt es jeweils nur zwei Möglichkeiten für die 9 in
den gleichen Spalten. Wenn nun in Zeile 2 die 9 in der Spalte 3 steht, so
muss in Zeile 8 die 9 in Spalte 7, wenn jedoch die 9 in Zeile 2, Spalte 7 steht
so muss in der 8. Zeile die 9 in Spalte 3. In beiden Fällen ist die 9 für Spalte
3 und 7 festgelegt, die anderen Möglichkeiten können also gestrichen
werden.

Noch schwieriger ist die erweiterte „x-wing“-Technik, „swordfish“ genannt. In
diesem Fall sucht man nach drei Zeilen (Spalten), bei denen ein Kandidat nur
an 3 gleichen Stellen vorkommen kann und streicht sie dann aus den
restlichen Kandidatenlisten in den jeweiligen Spalten (Zeilen). Im Beispiel 8
sind wieder nur die Felder gefüllt, in denen noch eine 7 in der Kandidatenliste
steht. In Zeile 1, 5 und 7 kann die 7 jeweils nur in einer der Spalten 2, 4 oder
6 stehen. Somit können in diesen Spalten die restlichen Möglichkeiten für die
7 gestrichen werden. Auch in den Spalten 3, 5 und 8 findet man einen
„swordfish“ - dort kann die 7 jeweils nur in Zeile 2, 3 und 4 stehen. Aus
diesen Zeilen kann man ebenfalls die restlichen Möglichkeiten für die 7
streichen.

                                     - 17 -
Strategien

Auch die „swordfish“-Technik kann
man noch erweitern, sie wird dann
                                             1   2      3   4    5   6       7   8   9
„jellyfish“ genannt und funktioniert
                                        1        7          7        7
genauso, nur dass man in diesem
                                        2    7                   7   7           7
Fall vier gleiche Kandidaten an vier
                                        3    7         7    7        7           7
gleichen Stellen sucht.
                                        4        7     7    7    7
                                        5        7          7        7
Die Techniken „x-wing“, „swordfish“
                                        6
und „jellyfish“ werden zu n-Fish
                                        7        7          7
zusammengefasst, wobei n für die
                                        8
Anzahl der gleichen Zahlen und
                                        9    7 7            7        7
Stellen steht. Einen 1-Fish findet
man in Beispiel 8. Wenn man
                                                     Beispiel 8: swordfish
sämtliche   nicht   mehr   möglichen
Kandidaten entfernt hat, fällt die allein stehende 7 in Zeile 9, Spalte 1 auf.
Das ist ein Kandidat, der in einer Zeile nur einmal in einer Spalte auftaucht,
es ist ein 1-Fish. Ein n-Fish mit n > 4 ist nicht sinnvoll, da die Summe aller
n-Fish-Kombinationen für eine Zahl 9 ergibt, somit hat man mindestens einen
4-Fish übersehen, wenn man einen 5-Fish gefunden hat. Um das zu zeigen,
wurde Beispiel 9 konstruiert. Erst wurde das komplette Spielfeld mit dem
Kandidaten 2 gefüllt. Dann wurden in Spalte 1, 3, 5, 7 und 8 einige
Kandidaten entfernt, so dass ein 5-Fish entsteht. Dafür dürfen nur in 5 Zeilen
noch Kandidaten stehen, in diesem Fall in Zeile 3, 4, 6, 8 und 9, alle anderen
wurden gelöscht. Der 5-Fish wurde schwarz markiert. Da man in 4 Zeilen
jeweils 5 Kandidaten entfernt hat (einen pro Spalte), verbleiben noch 4
Kandidaten in den gleichen 4 Spalten – das ist ein 4-Fish. Man kann dann
die gleichen Kandidaten streichen, dabei macht es keinen Unterschied, ob

                                    - 18 -
Strategien

man den 4-Fish oder den 5-Fish als
Grundlage nimmt.
                                             1     2    3   4    5   6   7       8   9

                                        1          2        2        2               2
Wenn keine der Techniken mehr
                                        2          2        2        2               2
erfolgreich    angewendet      werden
                                        3    2 2        2   2    2   2   2       2 2
kann, so muss man probieren. Um
                                        4    2 2        2   2    2   2   2       2 2
dieses Probieren möglichst effizient
                                        5          2        2        2               2
zu     gestalten,     sollte     man
                                        6    2 2        2   2    2   2   2       2 2
systematisch     vorgehen.     Dieses
                                        7          2        2        2               2
Testen wird auch „trial & error“
                                        8    2 2        2   2    2   2   2       2 2
(Versuch & Irrtum) genannt oder
                                        9    2 2        2   2    2   2   2       2 2
auch                  „backtracking“
(Zurückverfolgung, Rekursion). Man
                                                 Beispiel 9: 5-Fish und 4-Fish
sucht sich eine möglichst kurze
Kandidatenliste (ein Anfangsfeld), trägt einen der Kandidaten ein und wendet
danach alle anderen Techniken erneut an. Dabei sollte darauf geachtet
werden, dass alle vom Anfangsfeld an getätigten Änderungen wieder
rückgängig gemacht werden können.

Kommt man nach einer Anzahl weiterer Schritte zu einem Widerspruch zur
One-Rule, das heißt, es gibt in einer Einheit eine Zahl doppelt oder eine Zahl
kann in einer Einheit gar nicht mehr vorkommen, dann kann man aus der
Kandidatenliste im Anfangsfeld die getestete Zahl streichen und muss alle
von da an vorgenommenen Änderungen rückgängig machen. Danach kann
man den nächsten verbliebenen Kandidaten in das Anfangsfeld setzen und
testen, ob dieser zu einem Widerspruch führt. Ist im Anfangsfeld nur noch ein
Kandidat übrig, so ist die Lösung für dieses Feld gefunden.

                                    - 19 -
Strategien

Wenn man jedoch zu einem Punkt kommt, an dem erneut keine anderen
Regeln anwendbar sind und kein Widerspruch aufgetreten ist, sollte man die
Änderungen rückgängig machen und sich im Anfangsfeld für einen anderen
Kandidaten entscheiden2. Ist an diesem Punkt das Rätsel bereits komplett
ausgefüllt, hat man bei einem korrekten Sudoku die richtige Lösung. Ist dies
nicht der Fall, so sollte man den nächsten Kandidaten im Anfangsfeld testen.
Führen mehr als ein Kandidat aus dem Anfangsfeld zu keinem Widerspruch,
muss man das Testen für jeden der Anfangskandidaten erneut ausführen.
Dies ist sehr aufwändig, weil man im ungünstigsten Fall alle verbliebenen
Kandidaten testen muss.

Durch dieses Probieren kann man mit Glück im ersten Versuch erfolgreich
sein oder    erst nach vielen kaskadierenden Tests. Diese Methode sollte
immer erst zum Schluss angewendet werden, da sie nicht nur sehr
aufwändig, sondern auch fehleranfällig ist. Der Sudoku-Spieler muss sich
sehr konzentrieren, um keine Fehler zu machen und sich eine Technik
überlegen, wie Eintragungen wieder rückgängig gemacht werden können.

Es gibt auch noch weitere Methoden, um das Probieren hinauszuzögern.
Jedoch finden diese im Programm keine Anwendung und werden deswegen
hier nicht vorgestellt.

3.2         Umsetzung der Lösungstechniken für Computer

Im Folgenden werden die soeben besprochenen Regeln abstrahiert und für
die Verwendung in Computerprogrammen optimiert.
2 Bemerkung: man könnte auch ein anderes Anfangsfeld bestimmen, dies ist aber
  unsystematisch.

                                    - 20 -
Strategien

Die praktischste Methode zum Lösen eines Sudokus auf einem Computer ist
das Testen aller Möglichkeiten.

Die einfachste Art ein solches Probieren zu implementieren wäre eine lineare
Funktion. Dabei würde der Rechner erst in alle freien Felder eine 1 eintragen.
Dann überprüft er das Spielfeld mit der One-Rule – kommt in jeder Einheit
jede der Zahlen von 1 bis 9 nur genau einmal vor? Trifft dies nicht zu, so
tauscht er die 1 im letzten freien Feld gegen eine 2 aus. Daraufhin prüft er
das Spielfeld erneut. Ist es wieder ungültig, setzt er ins letzte freie Feld eine
3 und prüft wieder. Diesen Vorgang wiederholt der Rechner, bis er im letzten
Feld alle Zahlen bis hin zur 9 getestet hat. Ist das Sudoku auch dann nicht
gelöst, setzt er im vorletzten Feld eine um eins höhere Zahl. Nun muss er
wieder für das letzte Feld alle Zahlen von 1 bis 9 durchprobieren. Dieser
Vorgang wird so oft wiederholt, bis eine gültige Lösung gefunden wird.

Das Programm würde in einem solchen Fall aus mehreren ineinander
verschachtelten Schleifen bestehen sowie einer Testfunktion, die überprüft,
ob die eingetragenen Werte eine gültige Lösung ergeben. Die Anzahl der
Schleifen entspricht der Anzahl der freien Felder, jede Schleife läuft von 1 bis
9 und trägt die jeweilige Zahl in ein freies Feld ein.

Wenn es eine gültige Lösung gibt, wird sie durch diesen Algorithmus
gefunden.

Eine   Verbesserung      dieser   Funktion      kann     man   mit   Bildung   von
Kandidatenlisten erreichen. Dazu erstellt der Rechner vor Beginn der
Schleifen für jedes freie Feld ein Liste, in die nur die Zahlen eingetragen

                                       - 21 -
Strategien

werden, die in diesem Feld noch möglich sind, die also weder in der
zugehörigen Zeile, Spalte oder dem jeweiligen Block vorkommen. Die
Schleifen laufen dann nur noch über diese Listen, so dass nicht mehr jede
Zahl ausprobiert werden muss.

Zur weiteren Optimierung könnten diese Kandidatenlisten immer dann
aktualisiert werden, sobald eine neue Zahl eingetragen wurde. Dadurch
würde folgendes Abbruchkriterium entstehen: sobald eine Kandidatenliste
leer ist, gibt es für die eingetragenen Testwerte keine Lösung. Nun kann im
letzten getesteten Feld der nächste Kandidat ausprobiert werden. Führen alle
Kandidaten aus dem letzten Feld zu ungültigen Spielfeldern, wird auf das
vorletzte Feld zurückgegriffen. Dies nennt man Backtracking.

In das Programm wurde ein Backtracking-Algorithmus integriert, eine
genauere Beschreibung dessen wird in Kapitel 4 Abschnitt 2.2 gegeben.

Das Erstellen von Kandidatenlisten ist auch für die folgenden Algorithmen
notwendig. Zuerst wird für jedes leere Feld eine Liste, die die Zahlen von 1
bis 9 enthält, gebildet. Danach werden aus jeder Liste diejenigen Zahlen
entfernt, die im dazugehörigen freien Feld nicht mehr möglich sind. Diese
Zahlen entsprechen den bereits eingetragenen Werten in den drei Einheiten
(die Zeile, die Spalte, der Block), zu denen das Feld gehört.

Ein Algorithmus, der sich nur auf jeweils eine Einheit bezieht, ist der
n-Clique-Algorithmus. Die n-Clique ist eine Gruppe von n Kandidatenlisten, in
denen jeweils die gleichen n Kandidaten vorkommen. Es gibt zwei
verschiedene Formen von n-Cliquen.

                                     - 22 -
Strategien

Die sichtbare n-Clique besteht aus n Kandidatenlisten, in denen nur die
gleichen n Kandidaten und keine weiteren Zahlen vorkommen. In den
restlichen Listen der Einheit können aber Kandidaten aus der Clique
vorkommen.

Die versteckte n-Clique besteht aus den n Kandidatenlisten, in denen die
n Kandidaten vorkommen. Diese n Kandidaten dürfen in keiner anderen Liste
der Einheit vorkommen, es können jedoch weitere Zahlen in den zur Clique
gehörenden Kandidatenlisten auftreten.

Eine n-Clique ordnet n Kandidaten n Felder zu. Da in jedem Feld eine Zahl
stehen muss, können in diesen n Feldern keine anderen Zahlen stehen und
da jede Zahl in der Einheit nur einmal vorkommen darf, können diese n
Kandidaten in keinem anderen Feld der Einheit vorkommen. Existiert also
eine n-Clique, so kann man diese n Kandidaten in den Feldern der Einheit
streichen, die nicht zur Clique gehören. Weiterhin kann man auch alle in den
Kandidatenlisten der Clique vorkommenden Zahlen streichen, die nicht zur
Clique gehören. Es tritt immer nur eine Form der n-Clique auf, entweder eine
sichtbare oder eine versteckte, somit werden nur Zahlen in der Clique oder
außerhalb gestrichen.

Die einfachste Form der n-Clique ist die 1-Clique {a}, dabei ist in dem einen
Feld nur noch die eine Zahl möglich. Bei einer sichtbaren 1-Clique besteht
die Kandidatenliste nur noch aus einem Wert. Eine versteckte 1-Clique ist
vorhanden, wenn eine Zahl nur noch in einem Feld der Einheit vorkommen
kann. In beiden Fällen kann die Zahl, aus der die Clique besteht, sofort in
das entsprechende Feld eingetragen werden.

                                    - 23 -
Strategien

Eine 2-Clique besteht aus 2 Kandidatenlisten, in denen die 2 gleichen Zahlen
vorkommen. Eine sichtbare 2-Clique gibt es, wenn es in einer Einheit
2 Listen mit jeweils nur 2 gleichen Zahlen gibt, in der Form {a, b} und {a, b}.
Dann können aus allen anderen Listen der Einheit die Zahlen a und b
entfernt werden. Versteckte 2-Cliquen sind vorhanden, wenn 2 Zahlen a und
b nur in 2 Kandidatenlisten auftauchen. Ein Beispiel hierfür wäre eine Einheit,
in der noch folgende Listen stehen: {a, b, c, d, e}, {a, b, c, d, e}, {c, d, e},
{d, e} und {c, d, e}. Die Zahlen a und b kommen nur in den ersten beiden
Listen vor. Das heißt, eines der beiden Felder hat a als Lösung und das
andere b, somit sind c, d und e dort nicht möglich und können aus den Listen
gestrichen werden.

Die Listen einer 2-Clique müssen aber nicht unbedingt aus jeweils 2 Zahlen
bestehen, sie können auch die Form {a} und {a, b} haben. Bei einer
sichtbaren 2-Clique entspräche die erste Liste einer sichtbaren 1-Clique. Ist
die 2-Clique versteckt, wäre die zweite Liste eine versteckte 1-Clique. Wenn
man nun die 1-Cliquen-Regel anwendet, führt das jeweils dazu, dass zwei
1-Cliquen {a} und {b} entstehen. Eine 2-Clique kann also auch aus zwei
1-Cliquen bestehen.

3-Cliquen umfassen 3 Kandidatenlisten, in denen die gleichen 3 Zahlen
stehen. Gibt es in einer Einheit 3 Listen {a, b, c}, {a, b, c} und {a, b, c}, so ist
das eine sichtbare 3-Clique und man kann die Zahlen a, b und c aus den
anderen Kandidatenlisten löschen. Bei einer versteckten 3-Clique kommen
3 Zahlen nur in den gleichen 3 Listen einer Einheit vor. Ein Beispiel: in einer
Einheit sind noch die Kandidatenlisten {a, b, c, d}, {a, b, c, d,}, {a, b, c, d,},
{a, b, c, d}, {a, c, d e ,f ,g}, {a, e ,f ,g} und {d, e ,f ,g} vorhanden. Die Zahlen

                                       - 24 -
Strategien

e, f und g kommen nur in den letzten 3 Listen vor, das entspricht einer
versteckten 3-Clique, daraufhin kann man in den letzten 3 Listen alle Zahlen
bis auf e, f und g streichen.

Auch bei einer 3-Clique muss nicht jede ihrer Kandidatenlisten aus drei
Zahlen     bestehen.     Sie    kann     ebenfalls   aus   kleineren    Cliquen
zusammengesetzt sein, aus einer 2-Clique und einer 1-Clique oder aus drei
1-Cliquen. Wenn sie nicht zusammengesetzt ist, muss jeder der drei
Kandidaten in mindestens in zwei Listen vorhanden sein, das heißt auch
{a, b}, {b, c} und {a, c} bilden eine 3-Clique.

Einheiten, in denen 4 Kandidatenlisten nur aus den 4 gleichen Zahlen
bestehen, enthalten eine sichtbare 4-Clique, eine versteckte 4-Clique
existiert, wenn 4 Zahlen nur in 4 Listen der Einheit enthalten sind. Diese
4-Cliquen haben die gleiche Eigenschaften, wie kleinere Cliquen. Bei
sichtbaren kann man die 4 Zahlen der Clique aus den anderen Listen
streichen und bei versteckten können aus den zur Clique gehörenden Listen
die Zahlen, die nicht zur Clique gehören, entfernt werden.

Bei 4-Cliquen müssen ebenfalls nicht alle 4 Zahlen in jeder Kandidatenliste
vorkommen, außerdem kann die 4-Clique auch aus kleineren Cliquen
zusammengesetzt sein.

Alle Eigenschaften der n-Cliquen mit n ≤ 4 gelten auch für die n-Cliquen mit
4 < n ≤ 9. Eine 9-Clique besteht damit aus 9 Kandidatenlisten, in denen nur
9 Zahlen vorkommen. Da eine Einheit aber nur 9 Listen besitzt und es bei
Sudoku nur 9 verschiedene Zahlen gibt, wird mit einer 9-Clique kein Effekt

                                       - 25 -
Strategien

erzielt, da man keine Zahlen streichen kann. Vielmehr ist jede Einheit eine
9-Clique. Auch die 9-Clique kann zusammengesetzt sein – in einer
vollständig ausgefüllten (gelösten) Einheit besteht die 9-Clique aus neun
1-Cliquen. Daraus kann man ableiten, dass n-Cliquen mit n > 4 redundant
sind, da zu jeder n-Clique eine (9 - n)-Clique existiert. Das heißt, dass es
eine 5-Clique nur dann geben kann, wenn es auch eine 4-Clique oder eine
zusammengesetzte 4-Clique gibt. Im Beispiel 10 sieht man eine sichtbare
5-Clique in den Feldern 1, 3, 5, 7 und 9, während in den restlichen Feldern
eine 4-Clique versteckt ist.

             13579             13579             13579                13579
     13579           13579              13579              13579              13579
             2468              2468              2468                 2468

                Beispiel 10: versteckte 4-Clique und sichtbare 5-Clique

Um    eine   sichtbare   n-Clique      zu   finden,   muss      der    Computer    alle
Kandidatenlisten einer Einheit miteinander vergleichen. Er bildet erst aus der
Menge aller möglichen Kandidaten eine Teilmenge mit n Kandidaten und
vergleicht diese dann mit allen Listen der Einheit. Vor dem Vergleich setzt er
einen Zähler auf Null. Kommen alle Kandidaten einer Liste in der Teilmenge
vor, so merkt er sie sich und erhöht den Zähler. Sind alle Listen mit der
Teilmenge verglichen worden, und der Zähler ist gleich n, so hat er eine
sichtbare n-Clique gefunden und kann alle Kandidaten der Teilmenge aus
den nicht zur Clique gehörenden Kandidatenlisten entfernen. Ist der Zähler
kleiner als n so existiert keine n-Clique mit den Kandidaten der Teilmenge.
Die Teilmengen werden systematisch erzeugt, so dass jede mögliche
Kombination der Kandidaten einmal getestet wird.

                                        - 26 -
Strategien

Für versteckte Cliquen werden aus den Kandidatenlisten Positionslisten
erstellt, das heißt, die 1. Liste enthält alle Positionen des Kandidaten 1 in der
Einheit, die 2. alle Positionen des Kandidaten 2 in der Einheit und so weiter.
Jetzt wird aus der Menge aller möglichen Positionen (1 bis 9) eine Teilmenge
mit n Positionen gebildet, die analog dem Algorithmus zum Finden von
sichtbaren Cliquen mit den Positionslisten verglichen wird. Sind n
Positionslisten gefunden worden, die innerhalb der Teilmenge liegen, so
werden aus den restlichen Listen die Werte der Teilmenge gestrichen. Am
Ende werden aus den Positionslisten wieder Kandidatenlisten erstellt. Dazu
werden erst alle Kandidatenlisten geleert. Nun werden in                      die 1.
Kandidatenliste alle Nummern der Positionslisten eingetragen, in der eine
1 vorkommt, in die 2. Kandidatenliste alle Nummern der Positionslisten, in
der eine 2 vorkommt und so weiter.

Um das Finden von n-Cliquen zu
vereinfachen, kann man sich eine
Matrix erstellen, wie in    Tabelle 1.             1 2   3 4 5 6 7 8 9
                                                 1 *
Dann trägt man die gegebenen                     2   *   *
Kandidatenlisten in die Zeilen ein (im           3 *            *
                                                 4   *   *
Beispiel besteht die 1. Liste nur aus            5       *          * *
dem Kandidaten 1, die 2. Liste ist               6       *      * * *
                                                 7                            *
{2, 3}, die 3. Liste ist {1, 5} und so           8 *            *             *
weiter).   Nun     kann     man       die        9 *            *             *

Untermenge     bilden     und   für   die
Suche nach sichtbaren n-Cliquen mit                 Tabelle 1: Hilfsmatrix
den Zeilen vergleichen. Will man

                                        - 27 -
Strategien

versteckte n-Cliquen entdecken, vergleicht man die Untermenge mit den
Spalten, die den Positionslisten entsprechen.

Bei einem n-Fish werden die Schnittpunkte von zwei Einheitenarten
betrachtet. Ein Schnittpunkt von einer Zeile und einer Spalte besteht dabei
aus einem Feld, während ein Block und eine Spalte oder ein Block und eine
Zeile sich jeweils in 3 Feldern schneiden.

Ein n-Fish ist eine Menge von n Positionen von Schnittpunkten in n Einheiten
einer Art, an denen ein und dieselbe Zahl steht oder möglich ist.

Der n-Fish findet hauptsächlich Anwendung bei Schnittpunkten von Zeilen
und Spalten, deswegen wird die Beschreibung des n-Fishs nur für Zeilen und
Spalten erfolgen. Die Sonderform Locked Candidate wird separat eingeführt.

Auch beim n-Fish ist die einfachste Form ein 1-Fish. Dafür wird ein leeres
Feld gesucht und aus der Kandidatenliste ein Wert genommen. Nun werden
die Zeile und die Spalte betrachtet. Kommt dieser Kandidat in einer dieser
Einheiten nur an dieser Stelle vor, so ist dies ein 1-Fish. Wenn die Zahl in der
Spalte die einzige Möglichkeit ist, so kann man sie als Lösung an dieser
Stelle eintragen (siehe versteckte 1-Clique) und sie somit aus den
Kandidatenlisten der Zeile streichen. Ist sie in der Zeile einzig, kann man sie
auch eintragen und aus den Kandidatenlisten der Spalte streichen. Eine
bereits eingetragene Zahl ist auch ein 1-Fish.

Ein 2-Fish, auch "x-wing" genannt, tritt auf, wenn in 2 Zeilen oder 2 Spalten
eine Zahl nur an den beiden gleichen Positionen möglich ist. Das heißt, Zahl

                                     - 28 -
Strategien

a ist in Zeile y1 und y23 jeweils nur an
den Positionen x1 und x2 möglich.
                                            y   \x 1   2   3   4   5   6    7   8   9
Wenn a nun in Zeile y1 an der Stelle
                                             1         1   1       1
x1 stehen würde, müsste sie in Zeile
                                             2     1 1                              1
y2 an der Stelle x2 stehen, wenn sie         3             1   1   1        1       1
aber in y1 an der Stelle x2 stehen           4     1               1                1
würde, dann bliebe in y2 nur noch x1,        5             1   1   1        1
da eine Zahl in einer Zeile nur              6                     1                1
einmal vorkommen darf. Somit kann            7
die Zahl a in den Spalten x1 und x2          8     1 1
nur an den Stellen y1 und y2 stehen          9
und       aus       den        restlichen
Kandidatenlisten      dieser     Spalten           Beispiel 11: 2-Fish und 1-Fish
gelöscht werden. Das gleiche kann
man in den Zeilen anwenden, wenn man einen 2-Fish in den Spalten
gefunden hat. Im Beispiel 11 sieht man einen 2-Fish in den Spalten 4 und 7,
wodurch die restlichen Möglichkeiten für die 1 in den Zeilen 3 und 5
gestrichen werden können. Dadurch entsteht in Spalte 3 ein 1-Fish, der die
Entfernung der restlichen Möglichkeiten für den Kandidaten in der
zugehörigen Zeile verursacht.

Auch beim n-Fish muss in der betreffenden Spalte oder Zeile die Zahl nicht
zwingend n mal vorkommen, sondern kann weniger als n mal auftreten.
Wenn im Fall 2-Fish in einer Spalte oder Zeile eine Zahl nur einmal
vorkommt, entspricht dies einem 1-Fish. Dann kann man durch Streichen der
Kandidaten den 2-Fish auf zweimal 1-Fish reduzieren.
3 Bemerkung: Im folgenden wird x als Variablen für bestimmte Spalten und y als Variable
  für Zeilen verwendet.

                                         - 29 -
Strategien

Der 3-Fish wird auch als „swordfish“ bezeichnet und existiert, falls in 3 Zeilen
oder Spalten eine Zahl nur an den 3 gleichen Positionen vorkommen kann.
Wenn eine Zahl a in den Zeilen y1, y2 und y3 nur an den Stellen x1, x2 und x3
stehen kann, so sind alle Möglichkeiten für a sowohl in den 3 Zeilen, als auch
in den 3 Spalten ausgeschöpft, da jede Zahl in jeder Einheit nur einmal
vorkommen darf. Daraufhin kann man in allen Spalten x1, x2 und x3 außer an
den Schnittpunkten mit den Zeilen
y1,y2 und y3 die Zahl a aus den
                                          y   \x 1   2   3    4   5    6   7    8   9
Kandidatenlisten entfernen. Wenn
                                           1
man einen 3-Fish in den Spalten
                                           2     4       4             4
findet, so kann man Kandidaten
                                           3     4            4
aus   den    dazugehörigen     Zeilen
                                           4     4                              4
entfernen.
                                           5
                                           6             4                          4
Der       3-Fish     kann       auch
                                           7                           4        4   4
zusammengesetzt       aus      einem       8                  4                 4
2-Fish und einem 1-Fish oder aus           9
dreimal     einem     1-Fish    sein.
Ebenfalls gilt, dass nicht in jeder
                                                     Beispiel 12: zwei 3-Fish
Zeile oder Spalte die Zahl n mal
vorkommen muss. In Beispiel 12 findet man zwei mal einen 3-Fish. Einer
befindet sich in den Spalten 3, 6 und 9 und der andere ist in den Zeilen 3, 4
und 8. Beide haben zur Folge, dass man die 4 in Zeile 2, Spalte 1 und die in
Zeile 7, Spalte 8 streichen kann.

Beim „jellyfish“, dem 4-Fish, wird nach Zeilen (oder Spalten) gesucht, in
denen eine Zahl nur in 4 Spalten (Zeilen) vorkommen kann. In diesem Fall

                                        - 30 -
Strategien

kann diese Zahl aus den anderen Kandidatenlisten der Spalten (Zeilen)
gelöscht werden. Auch der 4-Fish kann zusammengesetzt sein, und es muss
nicht in jeder Zeile oder Spalte 4 Möglichkeiten für die Zahl geben.

Genau wie bei der n-Clique ist
beim n-Fish 9 der Maximal-Wert
                                       y   \x    1    2    3   4    5    6    7    8     9
für das n. Auch ein n-Fish kann
                                        1        5                                 5
zusammengesetzt sein. Somit ist
                                        2                  5    5   5    5    5          5
auch      ein     n-Fish   mit   n>4
                                        3             5         5             5    5     5
redundant, da es für jeden n-Fish
                                        4             5    5        5    5    5    5     5
auch einen (9 - n)-Fish gibt, das
                                        5        5         5    5                  5
heißt, wenn es einen 5-Fish gibt,
                                        6        5              5                  5
dann gibt es auch einen 4-Fish.
                                        7             5    5        5              5     5
                                        8        5         5    5
Im Beispiel 13 befindet sich in
                                        9             5             5    5    5          5
den Spalten 2, 5, 6, 7 und 9 ein
5-Fish,         den    dazugehörigen
(9 - n)-Fish (4-Fish) findet man in
                                                Beispiel 13: ein 4-Fish und ein 5-Fish
den Zeilen 1, 5, 6 und 8.

Um mit einem Computer einen n-Fish zu finden, kann man sich der gleichen
Matrix bedienen, die bei der Suche nach n-Cliquen benutzt wurde (Tabelle
1). Dabei überträgt man die noch möglichen Positionen eines Kandidaten in
die Hilfsmatrix. In das Beispiel in Tabelle 2 wurde das Kandidatenfeld aus
Beispiel 11 übernommen. Nun kann man wieder eine Untermenge bilden.
Diese Menge besteht aus n Zahlen zwischen 1 und 9. Das n entspricht dabei
dem aus         dem gesuchten n-Fish. Dann werden die Spalten mit dieser

                                       - 31 -
Strategien

                                      Untermenge verglichen, und wenn
                                      man n Spalten gefunden hat, die zur
       1 2 3 4 5 6 7 8 9
     1   * *   *                      Untermenge gehören (die Elemente
     2 * *             *              der   Spalte   sind   in   der        Menge
     3     * * *   *   *
     4 *       *       *              enthalten), so ist ein n-Fish gefunden.
     5     * * *   *                  Wurde kein n-Fish entdeckt, kann
     6         *       *
     7                                man    noch    die    Zeilen     mit       der
     8 * *                            Untermenge vergleichen.
     9

                                      Locked      Candidate          ist       eine
          Tabelle 2: Hilfsmatrix      Sonderform von n-Fish. Dabei geht
                                      es nicht um die Schnittpunkte von
Zeilen und Spalten, sondern um die Schnittpunkte von Zeilen und Blöcken
beziehungsweise Spalten und Blöcken. Jeder Schnittpunkt besteht aus 3
Feldern, wobei es egal ist, ob in diesen die gesuchte Zahl einmal, zweimal
oder dreimal vorkommt und an welchen Stellen sie steht. Weiterhin ist 3 die
Obergrenze für das n bei Locked Candidate, da maximal 3 Blöcke eine Zeile
oder eine Spalte schneiden. Da ein 3-Fish keine Veränderungen hervorrufen
würde und ein 2-Fish einen 1-Fish impliziert, muss nur nach einem 1-Fish
gesucht werden. Beim Löschen von Kandidaten muss beachtet werden, dass
die Zahlen immer in allen 3 Feldern des Schnittpunktes gelöscht werden
können.
Auch bei den Locked Candidates kann die Hilfsmatrix verwendet werden. In
diesem Fall setzt man in der Matrix ein Feld, wenn der Schnittpunkt eines
Blockes in mindestens einem Feld denjenigen Kandidaten enthält, für den
Locked Candidates angewendet werden soll. Die Matrizen in Tabelle 3 und 4
wurden ebenfalls aus dem Beispiel 11 generiert. In beiden Tabellen

                                   - 32 -
Strategien

entsprechen     die    Spaltennummern
den Nummern der Blöcke (Block 1 ist               1 2 3 4 5 6 7 8 9
links oben, Block 2 ist oben in der             1 * *
                                                2 *   *
Mitte, Block 3 ist rechts oben, Block 4         3 * * *
ist links in der Mitte und so weiter).          4       * * *
                                                5       * * *
Tabelle 3 wurde für die Schnittpunkte           6         * *
mit den Zeilen erstellt: wenn also der          7
                                                8             *
Schnittpunkt von Zeile 1 mit Block 1            9
den Kandidaten enthält, wird das Feld
(1,1) gesetzt. In Tabelle 4 wird Feld
                                                   Tabelle 3: Hilfsmatrix
(1,1) nur gesetzt, wenn der Kandidat
im Schnittpunkt der 1. Spalte mit dem 1. Block vorkommt. Da im Fall Locked
Candidate nur nach 1-Fish gesucht wird, braucht man dann in den Matrizen
nur nach Spalten oder Zeilen zu suchen, in denen nur ein Wert gesetzt ist.
Führt diese Aktion zu einem Erfolg, so hat man einen Locked Candidate in
dem Schnittpunkt, für den das gefundene Feld steht, entdeckt und kann die
                                          Kandidaten    aus     dem          Rest   des
                                          Blockes und der Spalte oder Zeile
       1 2 3 4 5 6 7 8 9
                                          streichen.   Nachdem         die    Matrizen
     1 *     *     *
     2 *           *                      durchsucht wurden, muss man nur
     3 *     *
                                          aus          den          ursprünglichen
     4   *     *
     5   *     *                          Kandidatenlisten,      die         zu     dem
     6
                                          Schnittpunkt gehören, von dem das
     7     *     *
     8                                    Feld in der Matrix gelöscht wurde,
     9     *     *
                                          den Kandidaten entfernen.

           Tabelle 4: Hilfsmatrix

                                     - 33 -
Strategien

Wenn der Rechner keine der oben angeführten Methoden mehr anwenden
kann, muss auch er probieren. Dafür ist ein Backtracking-Algorithmus die
beste Möglichkeit. Dabei werden systematisch die noch möglichen Zahlen
durchgetestet. Durch gewisse Optimierungen wie das Beginnen mit kleinen
Kandidatenlisten und Ausschluss von Kandidaten, die zu keiner Lösung
führen, kann der Algorithmus beschleunigt werden.

3.3       Der Schwierigkeitsgrad

Zu den meisten Sudokus wird ein Schwierigkeitsgrad angegeben. Dieser soll
aussagen, wie aufwändig die Lösung des Rätsels ist. Die häufigste Einteilung
ist leicht (easy) – mittel (medium) – schwer (hard). Oft werden Rätsel auch
als sehr schwer eingestuft. Das subjektive Empfinden des Sudoku-Spielers
wird durch diese Einteilung mitunter schlecht repräsentiert.

Diese Schwierigkeitsgrade können nicht verallgemeinert werden, da sie
keinen Regeln unterliegen. Es wird bei fast keinem Sudoku erwähnt, wofür
leicht, mittel oder schwer steht. Somit kann einem Sudoku-Spieler einerseits
ein schweres Rätsel sehr einfach erscheinen, jedoch andererseits die
Lösung eines leichten einiges Kopfzerbrechen bereiten. Das könnte zum
Beispiel daran liegen, dass verschiedene Anbieter ihre Sudokus für
unterschiedlich erfahrene Spieler bewerten. Es ist auch vorstellbar, dass ein
Rätsel nach der Anzahl von Vorgaben eingeschätzt wird – je weniger
Vorgaben, desto schwieriger ist es.

Sinnvoll wäre eine Bewertung nach Schwierigkeit der Regeln, die zur Lösung
eines Sudokus benutzt werden müssen. Hierbei bekämen die Regeln für das

                                      - 34 -
Sie können auch lesen