Kapitel 3: Solver konfigurieren

Inhaltsverzeichnis


Lösungsstrategie

Der interne Solver von HoDoKu verwendet dieselbe prinzipielle Lösungsstrategie wie die Solver der meisten anderen Sudokuprogramme auch. Für die verfügbaren Lösungstechniken ist eine Reihenfolge definiert. Der Solver probiert jetzt eine Technik nach der anderen in genau dieser Reihenfolge aus. Sobald er einen möglichen Lösungsschritt findet, führt er ihn aus und beginnt die Suche wieder mit der ersten Technik.

Die Reihung der Techniken basiert auf ihrem Schwierigkeitsgrad (leichtere Techniken vor schwereren). Wie schwer eine Technik wirklich ist, ist natürlich oft genug Ansichtssache, daher bietet HoDoKu die Möglichkeit, die Reihenfolge der Lösungstechniken nach Belieben zu ändern (siehe unten).

Die Folge dieser Strategie ist, dass der Solver niemals eine komplizierte Technik verwendet, wenn noch eine einfachere verfügbar ist. Das bedeutet wiederum, dass er nur sehr selten die kürzest mögliche Lösung findet. Im Normalfall wird die Lösung mit den einfachsten Techniken gefunden, unabhängig davon, wie oft diese Techniken angewendet werden müssen.

Die Standardreihenfolge kann unter "Bearbeiten|Einstellungen|Solver" nach Drücken von "Zurücksetzen" eingesehen werden. Mit Version 2.0 von HoDoKu listet dieser Dialog 91 verschiedene Techniken, von denen einige allerdings zur selben Familie gehören (z.B. allein 42 verschiedene Fish-Varianten). Andere Techniken haben nur einen Eintrag in der Liste, können aber unterschiedliche Lösungsschritte produzieren (der Eintrag "Nice Loops/AIC" kann z.B. "Discontinuous Nice Loops", "Continuous Nice Loops" und "AICs" erzeugen).


Lösungstechniken (de-)aktivieren

Screenshot: Standard order of solver steps

Lösungstechniken können aktiviert oder deaktiviert werden. Eine deaktivierte Technik wird vom Solver nicht angewendet.

Einige Techniken benötigen für die Suche sehr viel Zeit und sind daher standardmäßig deaktiviert (z.B. alle größeren Fisch-Typen). Werden solche Techniken aktiviert, kann die Zeit, die der Solver zum Lösen eines Sudokus benötigt, sehr stark ansteigen.

Techniken, die dem Spieler nicht besonders liegen, können natürlich ebenso deaktiviert werden (sie werden dann auch vom Hinweis-System nicht angeboten). Eine Technik ein- oder auszuschalten benötigt zwei Arbeitsschritte: Zunächst muss die Technik angeklickt werden, damit sie hervorgehoben wird. HoDoKu füllt die Eingabeelemente unter "Eigenschaften Lösungschritt" mit den Daten der Technik. Sobald eine Technik hervorgehoben ist, schalten weitere Klicks auf die Zeile die Checkbox ein bzw. aus.

Alle Änderungen, die in diesem Dialog durchgeführt werden, werden bei Programmende automatisch in eine Konfigurationsdatei gespeichert (siehe Konfigurationen und Sudokus speichern/laden).

Klick auf den "Baum"-Knopf oberhalb der Liste mit den Lösungstechniken schaltet die Anzeige in den Kategorie-Modus. Techniken werden als Baum nach Kategorien gruppiert angezeigt. Das macht es einfach, ganze Gruppen von Techniken mit einem Klick ein- oder auszuschalten (z.B. alle Chains oder alle Mutant Fische). Die Reihenfolge der Techniken (siehe unten) kann in der Baumansicht nicht verändert werden.


Reihenfolge der Lösungstechniken ändern

Um die Reihenfolge der Lösungstechniken zu ändern muss ebenfalls die entsprechende Technik angeklickt werden. Sobald sie hervorgehoben wurde, können die Knöpfe "Nach oben" und "Nach unten" dazu verwendet werden die Position der Technik in der Liste zu verändern.

Achtung: Wird die Reihenfolge der Lösungstechniken geändert, kann das zu einer völlig anderen Lösung führen und damit auch die Bewertung des Sudokus verändern (siehe Bewertung und Schwierigkeitsstufen).

Andererseits wirken sich Änderungen der Lösungsreihenfolge nicht nur auf den Solver, sondern auch auf das Hinweis-System aus. Techniken, die dem Spieler besonders liegen, sollten daher in der Liste weiter nach oben verschoben werden. Unbeliebte Techniken sollten besser deaktiviert werden. Soll eine Technik nur als letzter Strohhalm zum Einsatz kommen, sollte sie ans Ende der Liste verschoben werden.


Zweideutigkeiten und Beispiele

Viele Techniken existieren unter mehr als einem Namen. Ein Skyscraper beispielsweise ist sowohl ein Turbot Fish als auch eine X-Chain. Außerdem kann er als Kombination zweier Sashimi X-Wings gesehen werden. Einige Empty Rectangles können ebenso Turbot Fishes oder Finned Mutant X-Wings sein.

Durch Verändern der Reihenfolge bzw. (de-)aktivieren von Lösungsschritten kann daher erreicht werden, dass bestimmte Schritte nur unter einem bestimmten Namen gelistet werden. Als Beispiel sollen die folgenden Techniken in ihrer Standardreihenfolge dienen:

Empty Rectangles werden nur angezeigt, wenn in der Box, die das ER enthält, mindestens drei Kandidaten gesetzt sind. ERs mit nur zwei Kandidaten können über eine Option aktiviert werden. Da solche ERs aber immer auch Turbot Fishes sind und Turbot Fish vor Empty Rectangle kommt, werden diese Schritte immer als Turbot Fish gelistet und die oben genannte Option hat scheinbar keinerlei Effekt. Wenn man wirklich ERs mit zwei Kandidaten als ERs gelistet sehen will, muss entweder Empty Rectangle vor Turbot Fish geschoben werden oder Turbot Fish muss ganz deaktiviert werden. Ebenso bewirkt das Verschieben von Turbot Fish vor 2-String-Kite oder Skyscraper, dass diese Techniken nicht mehr vorkommen, da alle möglichen Eliminierungen bereits vom Turbot Fish Code erkannt werden.


Fortschrittsmaß

Ausdrücke und Definitionen

Screenshot: Fortschrittsmaß

Lösungsschritte können danach beurteilt werden, wie weit sie die Lösung des Sudokus voranbringen. Das wird als "Fortschrittsmaß" des Lösungsschritts bezeichnet. Um dieses Fortschrittsmaß zu berechnen, wird das Sudoku mit einem konfigurierbaren Set an Techniken gelöst. Der Screenshot zeigt den Konfigurationsdialog für diese Techniken. Techniken können nur gewählt werden, wenn ihr Schwierigkeitsgrad maximal "Schwer" ist. Muss unbedingt eine "Unfaire" oder "Extreme" Technik gewählt werden, muss zuerst ihr Schwierigkeitsgrad angepasst werden.

In der Listenansicht kann auch die Reihenfolge der Techniken unabhängig von der Reihenfolge im normalen Solver geändert werden.

Um die Konfiguration weiter zu vereinfachen stehen mehrere Standardeinstellungen zur Verfügung:

Das Fortschrittsmaß für einen Lösungsschritt besteht aus drei unabhängigen Werten:

Lösen bis

Die Einstellungen in diesem Dialog werden auch von der "Lösen bis"-Funktion im Hinweis-Bereich verwendet. Wird dieser Knopf gedrückt, wird die normale Lösungsstrategie angewendet. Wenn die jeweils nächste gefundene Technik als Fortschrittsmaß-Technik definiert ist, wird der Lösungsschritt automatisch angewendet und der nächste Schritt wird gesucht. Der Prozess stoppt, sobald die erste Technik gefunden wurde, die hier nicht gewählt ist.


Suche nach Hintertüren

Screenshot: Backdoor search dialog

Die meisten Sudokus, auch ganz schwere, haben eine oder mehrere Hintertüren: Eine Hintertür ist eine Zelle oder eine Kombination aus Zellen, die, wenn gesetzt, die Lösung auf Singles reduziert. Die meisten Sudokus haben Hintertüren, die nur aus einer einzigen Zelle bestehen. Extrem schwere Sudokus benötigen zwei Zellen um leicht zu werden. Das berühmte Easter Monster (von JPF im April 2007 im New Sudoku Player's Forum gepostet) benötigt sogar drei bestimmte Zellen, bevor es sich mit Singles lösen lässt.

HoDoKu kann verschiedene Typen von Hintertüren berechnen: Hintertüren für Zellen (sowohl mit Singles als auch mit den Lösungsschritten für das Fortschrittsmaß) und Hintertüren für Kandidaten oder Kombinationen von Kandidaten.

Bei der Suche werden zunächst Einzelzellen getestet. Können keine Hintertüren gefunden werden, wird die Suche mit Zellpaaren und wenn nötig auch mit Dreierkombinationen fortgesetzt. Diese Suche kann unter Umständen sehr lange dauern.

Wenn nach Kandidaten-Hintertüren gesucht wird, kann die Suchtiefe mit einer Combobox eingestellt werden. Wie bei den Zellen stoppt die Suche, sobald Hintertüren gefunden wurden. Da es normalerweise wesentlich mehr Kandidaten als ungelöste Zellen gibt, bedeutet eine Suchtiefe von 3, dass HoDoKu eine enorme Anzahl an Kandidatenkombinationen probieren muss, was naturgemäß auch sehr lange dauert.


Optionen für Lösungstechniken

Jede Lösungstechnik ist einem Schwierigkeitsgrad zugeordnet ("Level") und hat einen Score. Der Sinn dieser Eigenschaften wird detailliert in Kapitel 4: Bewertung und Schwierigkeitsstufen erklärt. Zusätzlich kann das Verhalten einiger Techniken mit den Optionen in "Bearbeiten|Einstellungen|Lösungsschritte" geändert werden:

Screenshot: Standard order of solver steps

Fische allgemein (Optionen beeinflussen alle Fisch-Typen außer Kraken Fish):

Kraken Fische:

Chains allgemein (Optionen beeinflussen X-Chains, XY-Chains und Remote Pairs):

Tabling allgemein (Optionen beeinflussen Nice Loops, AICs, Forcing Chains/Nets und Kraken Fish):

Sonstiges:

ALS allgemein:


Copyright © 2008-12 by Bernhard Hobiger
Alles Material auf dieser Site unterliegt der GNU FDLv1.3.