Sudoku Solver - mit Diagonalen

NEU: Auflistung aller Einzelschritte inklusive genauer Erklärungen und Punkte-Bewertung - und mit Einzelzahl-Ketten (statt X-Wings), Goldenen Ketten und Ausschluss-Rechtecken

Vorheriger Stand der Software (März 2007)

Geben Sie die Ausgangszahlen ein (1..9)

|
|
|
|
|
|
|
|
|
|
|
|

|
|
|
|
|
|
|
|
|
|
|
|

|
|
|
|
|
|
|
|
|
|
|
|
  PS: Sie können mit der TAB-Taste von Feld zu Feld springen
         ohne die Maus zu benutzen :-)


Prinzipen zur Lösung von Sudokus

Sudoku-Grundregel: Es sollen in jeder Zeile, in jeder Spalte und in jeder Box (3x3-Kästchen) alle Zahlen von 1 bis 9 genau einmal vorkommen. Die Zeilen und Spalten werden hier von oben links an mit 1 bis 9 durchnummeriert, die Boxen werden mit OL (oben links), OM (oben Mitte), OR (oben rechts), ML (Mitte links), MM (Mitte Mitte), ..., bis UR (unten rechts) bezeichnet.

Dieses Programm benutzt 5 Lösungsverfahren mit verschiedener Punkte-Gewichtung, wobei für die Ausdünnung 6 verschiedene Analysemethoden (ebenfalls mit unterschiedlichen Punkten gewichtet) programmiert wurden.
Dabei wird nach einem Treffer immer wieder bei der einfachsten Methode begonnen, und zusätzlich in der Reihenfolge: Suche immer erst in Zeilen - dadurch sind diese Fälle immer am häufigsten -, dann in Spalten, zuletzt in Boxen (außer bei der A- und B-Methode).

Bei der Lösung und der Bewertung wird davon ausgegangen, dass zuerst versucht wird, das Sudoku ohne Anschreiben der Kandidaten (Reste) zu lösen, da beim Arbeiten mit Hand dies zuerst einmal der natürliche Weg ist - im Gegensatz zu den sonst üblichen, im Internet zu findenden Sudoku-Solver (z.B. HoDoKu, SudokuExplainer), die sofort alle möglichen Kandidaten für alle Zellen aufschreiben! Es kommen also zuerst nur die Methoden A, B und C zum Einsatz. Erst dann, wenn man damit nicht weiter kommt, muss man für jede Zelle alle Zahlen aufschreiben, die dafür in Frage kommen: die Kandidaten, die hier als Ganzes oft Rest genannt und auch der Einfachheit halber als eine mehrstellige Zahl (ohne Komma oder andere Trennzeichen) geschrieben werden - und das ist per Hand einiges an Arbeit (dafür gibt es auch extra Punkte). Danach versucht man, diese Reste so lange auszudünnen, also zu verkürzen, bis man zu einer eindeutigen Lösung für eine Zelle kommt (Methoden D und E). Das Ausdünnen (Kandidaten-Reduzierung) wird hier mit den wichtigsten 6 Methoden versucht, die weiter unten erklärt werden.

Trial- and Error-Verfahren werden nicht benutzt, sondern nur logisch nachvollziehbare Methoden - wobei aber auf Verfahren, die von Hand kaum ausführbar sind (z.B. Zwangsketten, Forcing Chains), verzichtet wird. Dieses Programm soll nicht ein Sudoku einfach lösen, sondern alle Lösungsschritte - zum Nachvollziehen - aufzeigen. Und: Ein "richtiges" Sudoku sollte auf jeden Fall eindeutig gelöst werden können.

Programm-Neuigkeiten

Fünf Sudoku-Lösungsmethoden (A bis E)

  1. Einfachste Methode (Wert: 1 Punkt innerhalb Boxen, 3 Punkte innerhalb Zeilen/Spalten, 0 Punkte bei der 9. fehlenden Zahl; Farbmarkierung: Grün): Direkte Dreier-Methode oder eindeutige Stelle (Hidden Single): Bestimme die fehlende dritte Zahl in drei zusammen liegenden (nebeneinander oder untereinander) Boxen. D.h.: Findet man in zwei von drei zusammen liegenden Boxen eine bestimmte Zahl, sucht man in der dritten Box nach einem eindeutigen Ort, an dem diese Zahl stehen kann. In vielen Fällen ist es auch einfach die einzige Stelle, an der eine bestimmte Zahl nur stehen kann, insbesondere beim Durchsuchen von Zeilen und Spalten.
    Bemerkung: In knapp 95 % aller Lösungsschritte findet man eine Zahl (und den dazugehörenden Ort) mit dieser Methode, davon 90 % mit der Suche innerhalb von Boxen!
  2. Einfacher Fall:
    In der dritten Box (OR) kann die Zahl 7 nur in der dritten Zeile sein; damit bleibt die letzte Spalte als einzig möglicher Ort übrig (mit kleinem x markiert).
    PS: Der Übersichtlichkeit wegen wurden viele Felder nicht ausgefüllt, da deren Inhalt ohne Bedeutung ist; ebenso fehlen im Allgemeinen die letzten Zeilen der Beispiel-Sudokus.

    |
    |
    7 |
    |
    7 |
    |
    |
    |
    |
    |
    1 |
    |
    4 5

    ... ... ... |
    |
    ... ... ... |
    |
    ... ... ...

    Komplexerer Fall:
    Es kann auch in den Zeilen und Spalten nachgesehen werden, ob eine Stelle für die bestimmte Zahl frei ist. In diesem Beispiel kann die Zahl 7 wieder nur in der dritten Zeile der rechten Box (OR) liegen. Da aber in der 8. Spalte in der darunter liegenden Box (MR) schon eine 7 steht, bleibt wieder nur die letzte Spalte (mit kleinem x markiert) als Zielort übrig.

    |
    |
    7 |
    |
    7 |
    |
    |
    |
    |
    |
    1 |
    |
    4

    |
    |
    |
    |
    7
    ... ... ... |
    |
    ... ... ... |
    |
    ... ... ...

  3. Erweiterte oder indirekte Dreier-Methode (Wert: 2 Punkte mal Anzahl der Begründungen, Farbmarkierung: Rot): Bestimme den Ort der dritten Zahl ohne genaue Kenntnis des Ortes der zweiten Zahl (entspricht dem hier offensichtlichen Zeilen-/Spalten-Test, siehe unter Ausdünnen):
    Hier nutzt man aus, dass die Position der zweiten Zahl zwar noch nicht genau bekannt ist, aber auf eine Zeile oder Spalte einer Box beschränkt werden kann. Dann folgt der Ort für die dritte Zahl analog der oben beschriebenen Methode A. Dieses Verfahren kann in bestimmten Fällen auch ohne Kenntnis der ersten Zahl funktionieren. Diese Methode ist oft einfacher zu sehen als die A1- und A2-Methoden (einzige Position in einer Zeile oder Spalte), wenn es nur eine Begründung gibt.
  4. Einfacher Fall:
    Im einfachen Fall weiß man, dass in der rechten Box (OR) die Zahl 6 nur in der zweiten Zeile sein kann, da die erste Zeile nicht in Frage kommt (wegen der 6 in Spalte 9) - die genaue Position der Zahl 6 in der mittleren Zeile von Box OR ist aber noch unbekannt. Trotzdem kann man daraus schließen, dass in der ersten Box (OL) die 6 nur in der dritten Zeile sein kann; in dieser Zeile bleibt dann nur die zweite Spalte als einzig möglicher Ort übrig (mit kleinem x markiert).

    5 4 7 |
    |
    |
    |
    2 8
    8 |
    |
    2 |
    |
    2 3 |
    |
    |
    |
    5 4 9

    |
    |
    |
    |
    6
    ... ... ... |
    |
    ... ... ... |
    |
    ... ... ...

    Komplexerer Fall:
    Wegen der Zahl 7 in der rechten mittleren Box (MR) kann in der davor liegenden Box (MM) die 7 nicht in Zeile 5 stehen. Damit bleiben als möglicher Ort für die 7 in dieser Box nur die beiden Positionen in der Spalte 5 übrig (mit kleinem a markiert).
    Nun kann man ähnlich wie im einfachen Fall folgern, dass in der darüber liegenden Box (OM) die Zahl 7 nur in der oberen Zeile sein kann (Spalte 4 oder 6), wobei die genaue Position aber noch unbekannt ist. Also muss in der rechts davon liegenden Box (OR) die 7 wieder in der 3. Zeile sein. Da aber in der 8. Spalte in der darunter liegenden Box (MR) schon eine 7 steht, bleibt wieder nur die letzte Spalte (mit kleinem x markiert) als Zielort übrig.

    Alternativ kann man auch argumentieren, dass die Zahl 7 in der 3. Zeile nicht in Box OL stehen kann (in dieser Box ist schon eine 7), auch nicht in Box OM wegen der 7 irgendwo in Spalte 5 von Box MM (siehe oben, mit kleinem a markiert), aber auch nicht in Spalte 8 der Box OR (siehe oben), und somit bleibt dort nur die Spalte 9 (mit kleinem x markiert) als Zielort übrig.

    |
    |
    |
    |
    7 |
    |
    |
    |
    |
    |
    2 1 |
    |
    4

    |
    |
    3 2 |
    |
    |
    |
    |
    |
    7
    ... ... ... |
    |
    5 8 |
    |
    ... ... ...

    Beispiele mit vielen B-Begründungen:

    Wegen ... und ... daher ... und ... daher ... : 000000000000000012003045000000000400010600000700200080000170060045000000800000000

    Wegen ... daher ... und ... daher ... daher... : 000602000030000080000705400501000604000000000709000501002409800040000010000801000

    Wegen ... daher ... daher ... und ... daher ... : 000908000003105200090000070160000042000000000240000096050000010002504800000706000

  5. Einzig mögliche Zahl (Wert: 5 Punkte, Farbmarkierung: Blau): Einzige noch fehlende Zahl an einem bestimmtem Ort (Naked Single):
    Man untersucht für einen Ort, welche der 9 Zahlen dort stehen könnten, wobei die Sudoku-Regeln berücksichtigt werden müssen. Bleibt nur eine Zahl übrig, hat man die Lösung für diese Stelle gefunden. Das klingt zwar einfach, ist aber nicht so leicht zu erkennen.
  6. Beispiel: Die einzige Zahl an der Position Zeile 3 und Spalte 4 (mit kleinem x markiert) kann nur die Zahl 7 sein, weil alle anderen Zahlen schon in gleicher Zeile (1, 4, 8, 9), in gleicher Spalte (2, 5), bzw. in gleicher Box (1, 2, 3, 6) vorhanden sind.

    |
    |
    2 6 |
    |
    |
    |
    3 |
    |
    8 |
    |
    1 |
    |
    4 9

    |
    |
    5 |
    |
    7
    ... ... ... |
    |
    ... ... ... |
    |
    ... ... ...

    Beispiele mit vielen C-Fällen:

    Mit 11 C-Fällen ohne Ausdünnung: 030201060570000098000000000640090005000002000920610040000000000210040083090007010

    Mit 11 C-Fällen mit Ausdünnung: 160005907840000000050100002095400010000000000700509000900306058000907600000000000

  7. Vollständige Ausdünnung mit einstelliger Restzahl bzw. einziger Kandidatenzahl (Wert: 1 Basis-Punkt, Farbmarkierung: Braun): Hat man nach einem oder mehreren Ausdünnschritten einen Rest so weit verkleinert, dass er nur noch aus einer Zahl besteht, ist diese Zahl die Lösung für die betrachtete Stelle.
  8. Ausdünnung:
    Hier wird davon ausgegangen, dass zuerst versucht wird, das Sudoku ohne Anschreiben der Reste (das sind die Kandidaten, also die möglichen Zahlen für die jeweilige Stelle) zu lösen (Methoden A, B und C). Kommt man damit nicht weiter, muss man für jede freie Stelle alle Zahlen aufschreiben, die für diese Stelle in Frage kommen (also die dafür überhaupt noch möglichen Zahlen): Das sind die Kandidaten für die jeweilige Stelle, die hier als Ganzes "Rest" genannt und auch der Einfachheit halber als eine mehrstellige Zahl (ohne Komma oder andere Trennzeichen unterhalb der Eingabefelder) geschrieben werden.
    Danach versucht man, diese Reste so lange "auszudünnen", also zu verkürzen, bis man zu einer eindeutigen Lösung für eine Stelle kommt (Methoden D und E). Die Ausdünn-Methoden I bis VI werden im nächsten Abschnitt ausführlich beschrieben.

    Beispiel:
    Nach der Ausdünn-Methode I (siehe weiter unten im nächsten Abschnitt) kommt die Zahl 9 innerhalb der zweiten Zeile nur in der ersten Box (OL) vor: Daher muss die 9 dort sein (auch wenn man die Position innerhalb der zweiten Zeile noch nicht weiß) - sie kann also nicht in der dritten Zeile dieser Box noch einmal vorkommen. Daher kann man aus den Resten dieser Zeile in der Box OL den Kandidaten 9 streichen (d.h.: 249 wird zu 24, 39 wird zu 3).
    Damit bleibt an der Position Zeile 3 und Spalte 3 (mit kleinem x markiert) nur noch die 3 als Kandidat übrig. Also hat man einen eindeutigen Rest an dieser Stelle gefunden.

    5
     

    246

    36
    |
    |
    9
     
    8
     
    7
     
    |
    |

    1234

    1234

    1234
    1
     

    279

    379
    |
    |

    23

    23
    4
     
    |
    |
    8
     
    6
     
    5
     
    8
     

    249

    39
    |
    |
    1
     
    6
     
    5
     
    |
    |
    7
     

    2349

    2349

    4 |
    |
    |
    |
    3 2 |
    |
    |
    |
    ... ... ... |
    |
    ... ... ... |
    |
    ... ... ...

  9. Vollständige Ausdünnung mit einzig auftretender Restzahl (alleine auftretender Kandidat) (Wert: 4 Basis-Punkte, Farbmarkierung: Lila): Hat man nach einem oder mehreren Ausdünnschritten mehrere Reste so weit verkleinert, dass eine bestimmte Zahl nur noch an einer einzigen Stelle innerhalb der Reste einer Zeile, einer Spalte oder einer Box vorkommt, ist diese Zahl Lösung für diese Stelle.
  10. Beispiel:
    Nach der Ausdünn-Methode III (siehe weiter unten im nächsten Abschnitt) findet man in der Box OR das Reste-Paar 79 zwei Mal. Die Zahlen 7 und 9 müssen also an diesen beiden Stellen auftreten. Damit können in allen anderen Resten dieser Box die Zahlen 7 und 9 gestrichen werden. Daraus folgt, dass an der Position Zeile 1 und Spalte 4 (mit kleinem x markiert) die Zahl 7 stehen muss.

    2
     
    6
     
    4
     
    |
    |

    157
    9
     

    15
    |
    |

    157
    8
     
    3
     

    1579

    1579

    1579
    |
    |
    2
     

    3578

    1358
    |
    |
    6
     
    4
     

    79
    3
     
    8
     

    1579
    |
    |

    1357
    6
     
    4
     
    |
    |

    1579
    2
     

    79

    |
    |
    6 2 |
    |
    8 1
    |
    |
    8 1 7 |
    |
    5
    ... ... ... |
    |
    ... ... ... |
    |
    ... ... ...

Sechs Methoden zur Ausdünnung der Reste (I bis VI)

Der Begriff der Ausdünnung zur Verkürzung der Reste wurde im vorherigen Abschnitt unter Methode D schon erlätert. Im Allgemeinen sind, um eine Lösung zu finden, immer mehrere Ausdünnschritte notwendig (bis zu 23 direkt nacheinander wurden schon beobachtet!). Manche Schritte helfen dabei nicht zur Lösungsfindung, aber das weiß man vorher nicht.
Über die Hälfte (56 %) aller hier berechneten Sudokus sind nur durch Anschreiben der Reste und anschließender Ausdünnung lösbar!
In den folgenden Beispielen werden oft nur Teile eines Sudokus mit entsprechenden Resten dargestellt, um das Ganze übersichtlicher zu machen; es sind Ausschnitte aus aktuellen Sudokus.
  1. Box-Test der Reste in einer Zeile oder Spalte (Line/Block Interaction, Claiming): Man sieht in den Resten einer Box nach, ob innerhalb einer Zeile bzw. Spalte eine Zahl vorkommt, die nur genau in dieser Box auftaucht. Diese Zahl muss also innerhalb dieser Box in der gefundenen Zeile bzw. Spalte stehen (wobei die genaue Position noch unbekannt ist), sie kann dann aber aus den anderen Zeilen bzw. Spalten innerhalb dieser Box gestrichen werden. Dies ist die am häufigsten auftretende Methode, um die Reste auszudünnen: 48 %!

  2. Bewertung: Für jedes Vorkommen gibt es 4 Punkte.

    Beispiel:


    28
    5
     
    3
     
    |
    |
    4
     
    7
     
    9
     
    |
    |

    12
    6
     

    128
    7
     

    1289

    12689
    |
    |

    136

    136
    5
     
    |
    |

    1239

    12389
    4
     
    4
     

    19

    169
    |
    |
    8
     

    136
    2
     
    |
    |

    1359
    7
     

    1359

    1 6 |
    |
    |
    |
    8
    ... ... ... |
    |
    ... ... ... |
    |
    ... ... ...

    Hier findet man z.B. die Zahl 1: Sie ist innerhalb der ersten Zeile nur in den Resten der rechten Box OR vorhanden (rot gefärbte Reste). Also kann man in den anderen Zeilen dieser Box diese Zahl aus den Resten streichen - das wird hier durch die Darstellung in eckigen Klammern hervorgehoben. Damit bleibt übrig:


    28
    5
     
    3
     
    |
    |
    4
     
    7
     
    9
     
    |
    |

    12
    6
     

    128
    7
     

    1289

    12689
    |
    |

    136

    136
    5
     
    |
    |

    [1]239

    [1]2389
    4
     
    4
     

    19

    169
    |
    |
    8
     

    136
    2
     
    |
    |

    [1]359
    7
     

    [1]359

    1 6 |
    |
    |
    |
    8
    ... ... ... |
    |
    ... ... ... |
    |
    ... ... ...

  3. Zeilen-/Spalten-Test der Reste innerhalb einer Box (Block/Line Interaction, Pointing): Man sieht in den Resten nach, ob innerhalb einer Box eine Zahl vorkommt, die nur genau in einer Zeile bzw. Spalte dieser Box auftaucht - diese Zahl muss dann in dieser Zeile bzw. Spalte dieser Box stehen (wobei die genaue Position noch unbekannt ist). Dann kann man in den anderen Resten dieser Zeile bzw. Spalte außerhalb der Box diese Zahl streichen.

  4. Bewertung: Für jedes Vorkommen gibt es 6 Punkte.

    Beispiel:

    3
     

    789
    5
     
    |
    |

    12789

    12489

    124789
    |
    |

    1479

    1479
    6
     

    178
    4
     

    1789
    |
    |
    5
     

    1389
    6
     
    |
    |

    1379
    2
     

    1379
    6
     

    79
    2
     
    |
    |

    1379

    1349

    13479
    |
    |
    8
     

    134579

    134579

    9 1 |
    |
    4 7 2 |
    |
    ... ... ... |
    |
    ... ... ... |
    |
    ... ... ...

    Hier findet man z.B. die Zahl 1: Sie ist in den Resten der Box OL nur in der zweiten Zeile vorhanden (rot gefärbte Reste), nicht in den anderen Zeilen dieser Box. Also kann man in den anderen Resten dieser Zeile in den anderen beiden Boxen diese Zahl streichen (durch die Darstellung in eckigen Klammern hervorgehoben). Damit bleibt übrig:

    3
     

    789
    5
     
    |
    |

    12789

    12489

    124789
    |
    |

    1479

    1479
    6
     

    178
    4
     

    1789
    |
    |
    5
     

    [1]389
    6
     
    |
    |

    [1]379
    2
     

    [1]379
    6
     

    79
    2
     
    |
    |

    1379

    1349

    13479
    |
    |
    8
     

    134579

    134579

    9 1 |
    |
    4 7 2 |
    |
    ... ... ... |
    |
    ... ... ... |
    |
    ... ... ...

  5. Man sucht in einer Zeile, Spalte oder Box nach N-Tupel, also danach, dass bestimmte Kandidaten an nur wenigen Stellen auftreten (Naked Pairs, Hidden Pairs, Naked Triples, Hidden Triples, Naked Quadrupels, Hidden Quadrupels): Genauer heißt das, dass man N Stellen innerhalb einer Zeile, Spalte oder Box sucht, in denen genau N verschiedene Kandidaten auftreten, also keine anderen Kandidaten. Wenn an N Stellen alle oder ein Teil der N betrachteten Kandidaten stehen, können diese Kandidaten nur an diesen N Stellen auftreten (wobei die Verteilung noch unbekannt ist); diese Kandidaten können dann aber aus den anderen Resten gestrichen werden.

  6. Es gibt 2-Tupel (Doppel), 3-Tupel (Tripel), 4-Tupel (Quadrupel), 5-Tupel (Pentupel), 6-Tupel und 7-Tupel (8-Tupel machen keinen Sinn, da dann die neunte Zahl eindeutig ist und somit direkt gefunden werden kann). Zu jedem gefundenen N-Tupel gehört ein entsprechendes verstecktes M-Tupel (mit M anderen Kandidaten), wobei N+M gleich der Anzahl der freien Zellen innerhalb einer Zeile, Spalte oder Box ist. Sind die N Kandidaten aus den anderen Resten gestrichen worden, wird aus dem versteckten M-Tupel ein normales M-Tupel (im ersten Beispiel gibt es zu dem Doppel 79 das versteckte Tripel 345).

    Bewertung: Für jedes N-Tupel gibt es 2*N Punkte.

    Einfaches Beispiel mit 2-Tupel (Doppel):

    6
     

    79
    2
     
    |
    |

    79
    1
     

    3479
    |
    |
    8
     

    34579

    34579

    189
    4
     

    179
    |
    |
    5
     

    3789
    6
     
    |
    |

    1379
    2
     

    1379
    3
     

    1789
    5
     
    |
    |

    2789

    24789

    2479
    |
    |

    1479

    1479
    6
     

    7 8 |
    |
    4 |
    |
    |
    |
    3 8 |
    |
    ... ... ... |
    |
    ... ... ... |
    |
    ... ... ...

    Hier findet man z.B. in der ersten Zeile das 2-Tupel 79 (Doppel: 79, 79) - bzw. das versteckte 3-Tupel (Tripel) 345 -, als rot gefärbte Reste markiert; die beiden Kandidaten 7 und 9 müssen also an diesen beiden Stellen sein. Also kann man in den anderen Resten dieser Zeile diese beiden Zahlen streichen (durch die Darstellung in eckigen Klammern hervorgehoben). Damit bleibt übrig:

    6
     

    79
    2
     
    |
    |

    79
    1
     

    34[7][9]
    |
    |
    8
     

    345[7][9]

    345[7][9]

    189
    4
     

    179
    |
    |
    5
     

    3789
    6
     
    |
    |

    1379
    2
     

    1379
    3
     

    1789
    5
     
    |
    |

    2789

    24789

    2479
    |
    |

    1479

    1479
    6
     

    7 8 |
    |
    4 |
    |
    |
    |
    3 8 |
    |
    ... ... ... |
    |
    ... ... ... |
    |
    ... ... ...

    Kurzes Beispiel mit 3-Tupel (Tripel):
    Hier findet man in der Box OM (und in der 5. Spalte) das 3-Tupel 235 (Tripel: 235, 23, 25). Damit können in allen anderen Resten dieser Box (und in der 5. Spalte) die Zahlen 2, 3 und 5 gestrichen werden.


     
    4
     

     
    |
    |

    2357

    235
    9
     
    |
    |

     
    1
     

     

     
    1
     

     
    |
    |
    6
     

    23
    8
     
    |
    |

     

     
    5
     

     

     
    3
     
    |
    |

    12457

    25

    12457
    |
    |

     

     

     

    |
    |
    7 |
    |
    |
    |
    4 |
    |
    ... ... ... |
    |
    ... 1 ... |
    |
    ... ... ...

    Relativ häufig (in etwa 10% aller N-Tupel-Fälle) findet man noch 4-Tupel (z.B. das Quadrupel 1479 mit: 147, 17, 79, 49), aber 5-Tupel, 6-Tupel und 7-Tupel sind sowohl noch seltener (2 %) als auch schwieriger zu erkennen...

  7. Einzelzahl-Ketten (Single Digit Pattern, Forcing X-Chain): Kette aus Resten, bei denen überall eine bestimmte Zahl vorkommt (verbindendes Element). Man sieht für eine bestimmte Zahl in den Resten nach, ob in Zeilen oder Spalten oder Boxen diese Zahl genau zwei Mal vorkommt. Hat man mehrere solcher sogenannten starken Paare gefunden, lassen sich diese eventuell dadurch zu einer Einzelzahl-Kette verbinden, dass jeweils ein Anfang oder Ende in der gleichen Zeile, Spalte oder Box wie ein anderes starkes Paar liegen; interessant ist hierbei, dass die anderen Kandidaten der jeweiligen Reste keine Rolle spielen. Wenn sowohl vom Anfang einer so konstruierten Kette als auch vom Ende dieser Kette ein oder mehrere Zellen "gesehen" werden, also in der jeweils gleichen Zeile, Spalte oder Box liegen, kann die bestimmte Zahl aus diesen Zellen gestrichen werden. Es gilt: Entweder liegt die bestimmte Zahl am Anfang der Kette; ist das nicht der Fall, gilt foldender Schluss: Liegt diese Zahl nicht im ersten Feld der Kette, muss sie aber im zweiten Feld liegen, da dieses ein starkes Paar ist; dann kann sie jedoch nicht im dritten Feld sein, muss somit im vierten Feld liegen, usw. - d.h. in jedem 2*K-ten Feld der Kette muss dann die bestimmte Zahl liegen, also auch - wegen der Geradzahligkeit der Kettenglieder - im letzten Feld am Ende der Kette.

  8. Bewertung: Für jedes Vorkommen gibt es 3*N Punkte entsprechend der Länge N der gefundenen Kette (N = 4 bis 10, immer geradzahlig, maximal 18 ist möglich).

    Literatur:
    Sonderfälle dieses Verfahrens: X-Wing, Swordfish (Minimum-Version), Jellyfish (Minimum-Version), Skyscraper, Turbot Fish, Two-String Kite (Long String Kite und Empty Rectangle sind Erweiterungen).
    AHR Software: Single Digit Pattern, z.B. Skyscraper http://www.ahr-sudoku.de/solving.php/technic/Skyscraper
    HoDoKu: http://hodoku.sourceforge.net/de/tech_sdp.php

    Beispiel:


    2389
    1
     

    89
    |
    |
    7
     

    34
    5
     
    |
    |
    6
     

    489

    28

    568

    568
    4
     
    |
    |
    2
     
    9
     
    1
     
    |
    |

    58
    7
     
    3
     

    2359

    2359
    7
     
    |
    |
    6
     

    34
    8
     
    |
    |

    24

    459
    1
     

    1
     

    278
    3
     
    |
    |
    5
     

    27
    9
     
    |
    |

    24

    48
    6
     

    2459

    2459

    59
    |
    |
    8
     
    6
     
    3
     
    |
    |
    7
     
    1
     

    29

    2789

    2789
    6
     
    |
    |
    1
     

    27
    4
     
    |
    |

    35

    35

    289

    ...     ...     ...     |
    |
    ...     ...     ...     |
    |
    ...     ...     ...    

    Hier untersucht man z.B. die Zahl 2: Man findet die 2 genau zwei Mal in Zeile 1 (2389-28), in Spalte 5 oder in Box MM (27-27) und in Spalte 7 (24-24), und in Box OR (28-24). Startet man zum Beispiel mit dem Paar 27-27 in Spalte 5, kann man mit dem zweiten Spaltenpaar (24-24) über Zeile 4 verbinden (die dritte 2 in dieser Zeile stört hier nicht). Das Zeilenpaar kann man als letzten Teil der Kette in der rechten oberen Box anschließen (das starke Paar 28-24 ist hierbei keine Notwendigkleit) und erhält somit die Kette: (6:5)27 - (4:5)27 - (4:7)24 - (3:7)24 - (1:9)28 - (1:1)2389.
    Die Kette kann natürlich auch andersherum geschrieben werde: (1:1)2389 - (1:9)28 - (3:7)24 - (4:7)24 - (4:5)27 - (6:5)27.

    Nun gilt: In Zeile 6/Spalte 1 kann die Zahl 2 nicht stehen, denn entweder liegt wegen der gefundenen Kette die 2 in Zeile 6/Spalte 5 (Anfang der Kette) oder in Zeile 1/Spalte 1 (Ende der Kette). D.h.: Ist die 2 in Zeile 6/Spalte 5, ist alles klar; ist die 2 aber nicht in Zeile 6/Spalte 5, muss sie in Zeile 4/Spalte 5 sein (da 27-27 ein sogenanntes starkes Paar ist), kann somit nicht in Zeile 4/Spalte 7 sein, muss also in Zeile 3/Spalte 7 sein (starkes Paar 24-24), also nicht in Zeile 1/Spalte 9, und muss daher in Zeile 1/Spalte 1 (starkes Paar 2389-28) sein. Damit erhält man:


    23896
    1
     

    89
    |
    |
    7
     

    34
    5
     
    |
    |
    6
     

    489

    285

    568

    568
    4
     
    |
    |
    2
     
    9
     
    1
     
    |
    |

    58
    7
     
    3
     

    2359

    2359
    7
     
    |
    |
    6
     

    34
    8
     
    |
    |

    244

    459
    1
     

    1
     

    278
    3
     
    |
    |
    5
     

    272
    9
     
    |
    |

    243

    48
    6
     

    2459

    2459

    59
    |
    |
    8
     
    6
     
    3
     
    |
    |
    7
     
    1
     

    29

    [2]789

    2789
    6
     
    |
    |
    1
     

    271
    4
     
    |
    |

    35

    35

    289

    ...     ...     ...     |
    |
    ...     ...     ...     |
    |
    ...     ...     ...    

    Bisher wurde hier die X-Wing-Methode benutzt. Diese ist aber nur ein Sonderfall der Einzelzahl-Ketten-Methode, im Beispiel also die Ketten 56-56-157-157 (ab Spalte 2) und 56-56-157-157 (ab Spalte 5): es können alle Auftreten der Zahl 5 außerhalb dieser Kette bzw. des X-Wings in der Spalte 2 bzw. Spalte 5 gestrichen werden:

    8
     

    56
    3
     
    |
    |
    9
     

    56
    2
     
    |
    |
    1
     
    4
     
    7
     

    567

    2[5]67
    9
     
    |
    |

    56
    4
     
    1
     
    |
    |
    8
     
    3
     

    25

    45

    24[5]
    1
     
    |
    |
    7
     
    3
     
    8
     
    |
    |
    6
     
    9
     

    25


    1457

    14[5]7
    8
     
    |
    |

    56
    2
     
    9
     
    |
    |
    3
     

    167

    146
    3
     

    157
    6
     
    |
    |
    8
     

    157
    4
     
    |
    |
    2
     

    17
    9
     
    2 ... ... |
    |
    ... ... ... |
    |
    ... 5 ...

    Die Erkenntnis, dass X-Wing nur ein Sonderfall der Einzelzahl-Ketten-Methode ist, erklärt auch, warum X-Wing relativ selten (gegenüber der Goldenen Kette) auftrat. Aber auch dieses Verfahren könnte noch mehr verallgemeinert werden...

  9. Goldene Kette:
  10. Eine Goldene Kette (Golden Chain, manchmal auch Double Implication Chain genannt) ist eine Reihe von Paaren vom Typ ab, bc, cd, de, ef, ..., xy, yz, za, von denen jeweils zwei aufeinanderfolgende Paare in der gleichen Zeile, Spalte oder Box liegen und die eine gemeinsame Zahl besitzen, die aber - im Gegensatz zur Einzelzahl-Kette - von Kettenglied zu Kettenglied anders sein kann. Wenn die Zahl des ersten Paars, die nicht im zweiten Paar vorkommt (hier bei ab also a) mit der Zahl des letzten Paars, die nicht im vorletzten Paar vorkommt (bei za also auch a), übereinstimmt, dann kann man alle Zahlen a streichen, die sowohl von dem ersten als auch dem letzten Paar aus "gesehen" werden, also in der jeweils gleichen Zeile, Spalte oder Box liegen, weil die Zahl a auf jeden Fall entweder am Anfang der Kette oder am Ende der Kette vorkommen muss (wenn a an der Stelle des ersten Paares vorkommt, ist das offensichtlich; kommt dort aber b vor, so muss an der Stelle des zweiten Paares c sein, daher an der des dritten Paares d usw., bis zu z an der Stelle des vorletzten Paares, also a an der Stelle des letzten Paares, was behauptet wurde).
    Bewertung: Hierbei gibt es 3*N Punkte entsprechend der Länge N der gefundenen Kette (N = 3 bis 14, mit 14 als größte bisher gefundene Kettenlänge).

    Literatur:
    Download des Artikels von Eduyng Castan: http://www.coverpop.com/sfiles/Sudoku-GoldenChains.pdf
    Ähnlicher Artikel von Mihail Iusut: http://www.scanraid.com/sudoku/Remote_Pairs_and_XY_Chains.pdf

    Beispiel einer Goldenen Kette (nach wenigen anderen Ausdünnschritten):

    8
     

    271
    6
     
    |
    |
    4
     
    9
     
    5
     
    |
    |

    372

    23
    1
     

    1[2]
    3
     

    124
    |
    |
    8
     
    7
     
    6
     
    |
    |
    5
     
    9
     

    24
    5
     
    9
     

    47
    |
    |

    23

    123

    12
    |
    |
    8
     
    6
     

    47


    124
    6
     
    9
     
    |
    |

    237
    4
     

    27
    |
    |

    133
    5
     
    8
     
    7
     

    1[2]
    8
     
    |
    |
    5
     

    23
    9
     
    |
    |
    4
     

    13
    6
     
    ... ... ... |
    |
    ... ... ... |
    |
    ... ... ...

    Die gefundene Goldene Kette ist: (1:2)27 - (1:7)73 - (4:7)31 - (4:1)12. Beachte, dass hier die Reihenfolge der Zahlen innerhalb eines Doppels dem Verkettungs-Prinzip angepasst ist: Also 73 statt der sonst aufsteigenden Reihenfolge 37 und 31 statt sonst 13. Das jeweilige Ende der Goldenen Kette ist also die Zahl 2, die daher im Feld (2:1), also Zeile 2 und Spalte 1, und im Feld (5:2), also Zeile 5 und Spalte 2, gestrichen werden kann.
    Identisch mit der gefundenen Goldenen Kette ist auch die in umgekehrter Reihenfolge: (4:1)21 - (4:7)13 - (1:7)37 - (1:2)72.

  11. Ausschluss-Rechtecke:
  12. Ausschluss-Rechtecke sind 4 Zellen, die in zwei verschiedenen Zeilen, zwei verschiedenen Spalten und zwei (!) verschiedenen Boxen liegen und in allen diesen Zellen neben anderen Kandidaten zwei gleiche Kandidaten haben. Wegen der eindeutigen Lösbarkeit eines Sudokus kann man dann bestimmte Kandidaten ausschließen; dabei werden (hier) 7 Typen unterschieden. Genaueres siehe bei http://hodoku.sourceforge.net/de/tech_ur.php.

    Übersicht der Typen (mit "ab" als die zwei gleichen Kandidaten):

    Beispiel mit den Typen 1, 2, 4: 000000000000000012003004000000000005000006307010000000000087000004010020020500080

    Beispiel mit den Typen 3, 6, 7: 020450000006000000709003500200000908091200040800900030300000850010070400000010000

    Beispiel mit Typ 5: 103400000050709000000020004000005007600000090000007258092000000501090300000060000

Allgemeines

Die Punktzahlen sind so einigermaßen den Schwierigkeitsgraden angepasst. Sie hängen aber auch von der Reihenfolge im Programm ab - so ergibt eine andere Reihenfolge im Suchen von Mustern in den Resten etwas andere Werte. Gerade die Bewertung beim Ausdünnen ist schwierig: es werden alle Ausdünnschritte mitgezählt, egal, ob sie am Ende etwas bringen oder nicht. Aber das weiß man ja auch beim Lösen mit Hand vorher nicht...

Ab 50 Punkten wird es interessant, über 75 Punkte ist es schon schwerer, über 100 Punkte wirklich schwer, und über 125 Punkte ist schon eine Herausforderung. Der Mittelwert aller Sudokus liegt bei 106 Punkten (der Hauptwert liegt um 60 Punkte ohne Ausdünnung (siehe Kurve), und um 144 Punkte mit Ausdünnung (siehe Kurve)). Aktuelles Maximum mit schwer zu überbietenden 591 Punkten (sehr viel mehr Punkte sind mit diesen Methoden wohl kaum erreichbar?!), also das bisher am schwersten (hier) gelöste Sudoku:

Das 440-Punkte-Sudoku wurde durch Reduzierung aller bis dahin gelösten etwa 9200 Sudokus in einem Aufwand von über 2100 Stunden Rechenzeit (insgesamt wurden fast 3 Millionen Sudokus durchgerechnet) gefunden... Reduzierung heißt hier: Lässt man aus einem Sudoku mit N Zahlen jeweils eine Zahl aus, so entstehen N Sudokus mit jeweils N-1 Zahlen, die alle berechnet werden. Gibt es dabei Lösungen, macht man die gleiche Prozedur mit dem berechneten Sudoku, das die höchste Punktzahl hat, usw., bis es keine Lösung mehr gibt.

Etwas Statistik:

Bei (Stand Anfang 2010) insgesamt etwa 22100 gelösten Sudokus wurden etwa 1197000 mal die Methoden A bis E eingesetzt; davon 94.5% für Methode A, 2.8% (0.8% + 2.0%) Methode B+C, und 2.7% (1.9% + 0.8%) Methode D+E (also Ausdünnung). Die Ausdünn-Methoden werden zwar selten gebraucht, sind aber trotzdem zur Lösung von knapp der Hälfte aller Sudokus notwendig!

Genauer gesehen waren etwa 26% der Sudokus allein mit Methode A lösbar, insgesamt 54% nur mit den Methoden A+B+C. Das sind die einfacheren Sudokus, obwohl dabei immerhin auch fast 100 Punkte erreicht werden können - bisheriges Maximum: 93 (nach aktueller Punkte-Bewertung), also die (hier) schwierigsten Sudokus ohne Ausdünnung:

Für die etwa 10200 Sudokus (46% der Fälle) - Stand Anfang 2010, bei denen die Kandidaten/Reste analysiert werden mussten, waren insgesamt etwa 81000 Ausdünnschritte notwendig (davon 48 % Box-Tests, 7 % Zeilen-/Spalten-Tests, 20.5 % N-Tupel, 2.5 % X-Wings, 22 % Goldene Ketten). In einem Fall waren es 23 Ausdünnschritte hintereinander, bis eine Zahl gefunden werden konnte, und in einem anderen Fall insgesamt 33 Schritte!

Dabei konnten etwa 1350 alleine durch die einfachen Box-Test- und Zeilen-/Spalten-Test-Methoden gelöst werden. Etwa 2950 Sudokus wurden durch die N-Tupel-Methode (darunter ein 7-Tupel!), nur 260 Sudokus durch die X-Wing-Methode (erstaunlich wenig!, aber immerhin wurden insgesamt etwa 1900 X-Wings gefunden), jedoch 5650 durch die Goldene Kette gelöst (bei insgesamt gut 17700 gefundenen Goldenen Ketten, und in einzelnen Sudokus bis zu 20 Goldenen Ketten bzw. maximal mit der Länge 14) - insofern verwundert es, dass dieses Verfahren so wenig bekannt ist!

Literatur:

Allgemeine Lösungsstrategien bei: http://www.sadmansoftware.com/sudoku/solvingtechniques.htm
oder bei: http://hodoku.sourceforge.net/de/techniques.php


Neustart


Ausgewählte Sudoku-Beispiele (von 24364 Sudokus)



Aktuelles Programm (Loop) mit X-Wing

Vorhergehendes Programm (Loop)

Altes Programm (Loop)

Altes Programm (Einzelschritt)

Variante mit Einbeziehung der Diagonalen

Variante: Farb-Sudoku


DIE ZEIT: Sudoku

The Daily Telegraph: Sudoku

(Für Neugierige: Dieses PHP-Programm)

Kommentare bitte an Ingolf Giese