Sudoku Rätseln mit Maschineller Intelligenz

1,147 views

Published on

Computer können Kreationen erschaffen die jeden überzeugen – die Kinos präsentieren die neuesten überwältigenden 3D-Multimedia-Spektakel. Die Resultate und ihr Nutzen beschränkt sich nicht auf das Amusement und die Kinofilme, die modernen Methoden für unsere Maschinen bringen weitere äußerst beachtliche Verbesserungen in die Realität. Evolutional entwickeln sich die Programme und Algorithmen in Bio-Informatik und im Gesundheitswesen. Maschinelle Intelligenz kann für Sudoku Rätsel genauso erfolgreich eingesetzt werden. Dieser Artikel präsentiert einen intelligenten Ansatz zum Knacken harter Sudoku-Nüsse mit dem Computer oder auch mit Bleistift und Papier.

Der Autor, Dr. Harald Hiss, hat sein Diplom in der Software-Entwicklung 2004 erhalten und 2008 in Datenbanken/XML und Logik promoviert. In diesem
Artikel präsentiert er eine Methode und ein Programm zum Sudoku-Rätseln mit Erfolg. Er entwickelt einige Sudoku-Strategien und einen Plan zur schnellen, einfachen und effizienten Entwicklung von Sudoku-Rätslern mit den neuesten Technologien.

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
1,147
On SlideShare
0
From Embeds
0
Number of Embeds
13
Actions
Shares
0
Downloads
10
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Sudoku Rätseln mit Maschineller Intelligenz

  1. 1. Sudoku Rätseln mit Maschineller Intelligenz Dr. Harald Hiss 10.07.2010
  2. 2. Zusammenfassung Computer können Kreationen erschaffen die jeden überzeugen – die Kinos präsentieren die neuesten überwältigenden 3D-Multimedia-Spektakel. Die Resultate und ihr Nutzen beschränkt sich nicht auf das Amusement und die Kinofilme, die modernen Methoden für unsere Maschinen bringen weitere äußerst beachtliche Verbesserungen in die Realität. Evolutional entwickeln sich die Programme und Algorithmen in Bio-Informatik und im Gesundheits- wesen. Maschinelle Intelligenz kann für Sudoku Rätsel genauso erfolgreich eingesetzt werden. Dieser Artikel präsentiert einen intelligenten Ansatz zum Knacken harter Sudoku-Nüsse mit dem Computer oder auch mit Bleistift und Papier. Der Autor, Dr. Harald Hiss, hat sein Diplom in der Software-Entwicklung 2004 erhalten und 2008 in Datenbanken/XML und Logik promoviert. In die- sem Artikel präsentiert er eine Methode und ein Programm zum Sudoku- Rätseln mit Erfolg. Er entwickelt einige Sudoku-Strategien und einen Plan zur schnellen, einfachen und effizienten Entwicklung von Sudoku-Rätslern mit den neuesten Technologien.
  3. 3. Inhaltsverzeichnis 1 Sudoku Rätseln mit Maschineller Intelligenz 1 2 Sudoku und eine Scanning-Strategie 1 3 Schätzung der Möglichkeiten 3 4 Techniken und Strategien speziell für Sudoku 5 5 Software-Architektur für das Spiel 7 6 Suchmethoden Künstlicher Intelligenz 8
  4. 4. 2 Sudoku und eine Scanning-Strategie 1 1 Sudoku Rätseln mit Maschineller Intelligenz Computer können Kreationen erschaffen, die jeden überzeugen. Die Kinos präsen- tieren die neuesten überwältigenden 3D-Multimedia-Spektakel. Die Resultate und ihr Nutzen beschränkt sich nicht auf Amusement und Kinofilme, moderne Methoden für die Maschinen bringen weitere äußerst beachtliche Verbesserungen in unsere Realität. Programme und Algorithmen in Bio-Informatik und im Gesundheitswesen entwickeln sich evolutional. Maschinelle Intelligenz kann für Sudoku Rätsel genauso erfolgreich eingesetzt werden. Dieser Artikel präsentiert einen intelligenten Ansatz zum Lösen von Sudokus mit dem Computer. Dieses Nussknacker-Beispiel zeigt Strategien speziell für das Spiel, schätzt die Komplexität und beweist erneut die Stärke und Ausdruckskraft maschineller Intelligenz. Zur Jahrtausendwende wurde das Zahlenrätsel äußerst populär. Die sehr genussvolle Suche zum Füllen von Zahlen in Feldern ist in einigen Varianten und Schwierigkeits- stufen verbreitet. Einfache Sudokus können schnell gelöst werden. Das nächste Ka- pitel präsentiert eine Scanning-Strategie. Diese genügt zum Lösen eines einfachen einführenden Beispiels. Es folgt eine stochastische Abschätzung der Komplexität. Sie zeigt die unglaublich große Zahl der Möglichkeiten, denen der Sudoku-Rätsler gegen- über steht. Einige fortgeschrittene Strategien werden zur Entwicklung einer automati- schen Lösung präsentiert. Eine für Sudoku-Varianten flexible Methodik integriert diese Strategien und weitere Aspekte. Maschinelle Intelligenz extrahiert Informationen zur Wahl geeigneter Regeln um das nächste Feld zu füllen und zur Wahl optimaler Felder und Zahlen zum Backtracking, wenn keine Regel mehr greift. Der Artikel präsentiert einen Ansatz für Sudoku mit maschineller Intelligenz. Das sehr beliebte und verbreitete Zahlenrätsel wird veranschaulicht. Stochastische Methoden schätzen die Möglichkeiten, spezifische fortgeschrittene Strategien integrieren sich in eine Software-Architektur und das System logischer Regeln. Methoden der künstlichen Intelligenz und des maschinellen Lernens optimieren die Suche mit der Auswahl der richtigen Felder und Zahlen – ein sehr vielversprechender Ansatz zur Entwicklung von intelligenter Software. Der Autor hat sich in diesem Gebiet umfangreiche Kenntnisse an- geeignet und veranschaulicht die Kraft maschineller Intelligenz sehr eindrucksvoll am Beispiel des Zahlenrätsels. 2 Sudoku und eine Scanning-Strategie Die große Herausforderung bei Sudoku-Rätseln stellt sich im Füllen von Feldern mit den passenden Zahlen unter der Berücksichtigung einiger Nebenbedingungen. Die Felder gliedern sich in Gruppen. Innerhalb einer Gruppe können nur Zahlen eines definierten Bereichs eingefügt werden. Zahlen dürfen nicht mehrfach in einer Gruppe erscheinen. 1
  5. 5. 2 Sudoku und eine Scanning-Strategie 2 Lösungen haben alle Felder ausgefüllt, so dass jede Zahl in jeder Gruppe genau einmal erscheint. Die Standardvariante von Sudoku betrachtet ein 9 × 9 Quadrat von Feldern und definiert den Zahlenbereich 1, 2, ..., 9 zum Ausfüllen. Das Zahlenrätsel betrachtet die Zeilen, die Spalten und die neun Blöcke geformt von den 3 × 3 Quadraten, die das Spielfeld kacheln, als Gruppen. Jede Gruppe muss die Nebenbedingung erfüllen. Eine Zeile kann zum Beispiel Zahlen in 1, 2, ..., 9 enthalten. Somit repräsentiert eine Zeile der Lösung eine Permutation des Bereichs. Der Abschnitt zeigt eine einfache Scanning-Strategie zum Lösen mancher Sudokus. Abbildung 1 Ein einfaches Sudoku Beispiel. 1 2 5 9 4 4 3 6 1 5 5 1 3 1 2 5 7 2 6 9 3 3 4 2 7 1 3 6 7 1 9 7 1 4 2 8 8 5 9 7 Abbildung 1 präsentiert das Beispiel zur Illustration der Strategie. Für die Zahlen der Domäne werden Zeilen und Spalten gescannt um das passende Feld in einem Block zu finden. Der Scan startet mit der 1. Das zweite Feld in der ersten Zeile, kurz S12 , hat eine 1. Im Block darunter speichert Feld S41 diese Zahl. Die ersten zwei Spalten dürfen die Zahl nicht mehr enthalten, der Block links unten hat die 1 in S73 oder S93 . Dann betrachtet der Scan die relevanten Zeilen für den untersten Block. Zeile 7 hat eine 1 in S77 , die 1 kann in S93 eingetragen werden. Mit diesen Scans und dem Füllen offensichtlicher Felder bekommt man die Lösung in Abbildung 2. Der nächste Abschnitt schätzt die Zahl der möglichen Spiele. Danach wendet sich der Artikel weiteren Lösungsstrategien zu und präsentiert fortgeschrittene Techniken. 2
  6. 6. 3 Schätzung der Möglichkeiten 3 Abbildung 2 Die Lösung für das vorige Beispiel. 6 1 3 2 7 5 9 8 4 9 2 8 4 3 6 7 1 5 4 7 5 9 1 8 6 3 2 1 3 9 7 8 2 5 4 6 7 4 2 6 5 1 8 9 3 8 5 6 3 4 9 2 7 1 3 6 4 8 2 7 1 5 9 5 9 7 1 6 4 3 2 8 2 8 1 5 9 3 4 6 7 3 Schätzung der Möglichkeiten Eine erste naive Schätzung der Möglichkeiten zur Wahl der Zahlen im 9 × 9 Quadrat betrachtet das Füllen von Feldern mit beliebigen Zahlen. Das ergibt den Gesamtwert von 1.966 · 1077 für die 981 Kombinationen. Eine erste Verbesserung berücksichtigt die Zahlen, die schon in der gleichen Zeile eingefügt worden sind. So erhält man für neun Zeilen 9!9 Kombinationen, ein Betrag von 1.091 · 1050 . Fließen mehr Informationen über relevante Blöcke in die Berechnung ein, verbessert sich der Betrag zu 1.528 · 1031 . Die riesige Zahl legt es nahe, einige Zeit in die Überlegungen zu investieren und sowohl spezielle effiziente Spiel-Strategien als auch neue intelligente Berechnungstechniken einzusetzen anstatt der Implementierung eines Trial-and-Error Programms. Die folgen- den Abschnitte präsentieren einen neuen, sehr effizienten Ansatz zur Entwicklung eines Rätsel-Programms. Die schließende Schätzung zum Schluss des Abschnitts verfolgt sequentielles Füllen von Zahlen, von links nach rechts und von oben nach unten. Die Schätzung verwendet die maximale Einschränkung verfügbar im Kontext vom betrachteten Feld. Die maxima- le Zahl vorhandener Zahlen in der gleichen Zeile, Spalte oder im gleichen Block verrin- gert die mögliche Wahl. Abbildung 3 zeigt das Ergebnis. Das Feld in Zeile 5, Spalte 4 betrachtet die Zahlen links und darüber. In der gleichen Zeile wurden bereits drei Zah- 3
  7. 7. 3 Schätzung der Möglichkeiten 4 Abbildung 3 Möglichkeiten für das Wählen einer Zahl für ein Feld beginnend mit der linken oberen Ecke, von links nach rechts und abwärts. 9 8 7 6 5 4 3 2 1 6 5 4 6 5 4 3 2 1 3 2 1 3 2 1 3 2 1 6 6 6 6 5 4 3 2 1 5 5 4 5 5 4 3 2 1 3 2 1 3 2 1 3 2 1 3 3 3 3 3 3 3 2 1 2 2 2 2 2 2 2 2 1 1 1 1 1 1 1 1 1 1 len eingefügt. Die Spalte hat vier Zahlen und der mittlere Block drei. Folglich bietet die Spalte die größtmögliche Einschränkung mit vier unterschiedlichen Zahlen. Höchstens fünf Zahlen bleiben zur Wahl, die Möglichkeiten werden in das Feld eingetragen. Die- ser Ansatz ergibt eine Schätzung von 9! · 6!6 · 3!10 · 5. Die Zahl der möglichen gültigen Sudoku-Spiele wird beschränkt mit dem Betrag von 1.528·1031 . Ein weiterer Aspekt vom Sudoku-Nussknacken wird in Abbildung 3 präsentiert. Die letzte Spalte und die unterste Zeile lassen nur eine Möglichkeit übrig für jedes Feld. Oft sind einige Felder noch nicht ausgefüllt, obwohl das Spiel im Prinzip schon gelöst worden ist. Ein wenig Aufräum- arbeit vervollständigt ein Sudoku-Spiel mit dem Füllen von Feldern, welche schon mit 8 weiteren Zahlen in der gleichen Gruppe eingeschränkt wurden. Der nächste Abschnitt zeigt einige Verbesserungen für den einfachen Scanning-Ansatz vom Anfang und präsentiert einige fortgeschrittene Sudoku-spezifische Strategien und Techniken. 4
  8. 8. 4 Techniken und Strategien speziell für Sudoku 5 4 Techniken und Strategien speziell für Sudoku Einfache Spiele können mit Strategien wie der Scanning-Strategie (präsentiert in Ab- schnitt 2) gelöst werden. Für jede Zahl wurden die möglichen Positionen in einem Block gescannt und relevante Zeilen und Spalten aus Blöcken in der gleichen Zeile oder Spal- te ausgeschlossen. Offensichtlich zum Füllen bleiben diejenigen Felder, die als einziges innerhalb einer Gruppe übrig sind. Für jedes Feld können die Zahlen aller Gruppen, zu denen es gehört, von den Kandidaten entfernt werden. Wenn nur eine Zahl übrig bleibt, kann die Lücke geschlossen werden. Dieser Abschnitt präsentiert fortgeschrittene Stra- tegien zum Lösen komplexer Sudokus. Seiteneffekte von Gruppen werden genutzt, um die Scanning-Strategie in Abschnitt 2 Abbildung 4 Die ersten Zeilen vom Beispiel für die Verbesserung. 1 1 1 1 1 8 9 2 3 4 zu verbessern. Manche Einschränkungen von Gruppen genügen zur Festlegung von Feldern in abhängigen Gruppen. Abbildung 4 zeigt ein Beispiel. Die möglichen Positio- nen für die 1 im mittleren Block haben blaue Einträge. Die Information, dass der mittlere Block die 1 in der mittleren Zeile hat, genügt, um eine 1 in S31 einzutragen. Auf die glei- che Weise wird (zu sehen in Abbildung 5) die 1 im ersten Block eingeschränkt auf die zwei unteren Felder. Hier teilen sich der mittlere und der letzte Block die 1 in den ersten zwei Zeilen. Der Abschnitt präsentiert eine Strategie, die für das einfache Beispiel in der Einführung Abbildung 5 Eine Variante der Verbesserung. 1 1 1 1 1 1 1 1 1 1 1 1 1 1 9 2 3 4 5 6 7 nicht unbedingt benötigt wird. Die unterste Zeile des Spiels in Abbildung 6 enthält 9, 5
  9. 9. 4 Techniken und Strategien speziell für Sudoku 6 6, 7 und 8. Andere Felder in dieser Zeile können mit 1, ..., 5 ausgefüllt werden. Der untere mittlere Block enthält 4, 2 und beschränkt seine unterste Zeile auf 1, 3, 5. Die Berücksichtigung der Spalten beweist S94 , S95 erlauben 1 und 5, für Feld S96 sind 1 und 3 erlaubt. Die Einschränkung für S94 und S95 verbraucht 1 und 5, die 3 wird in S96 eingetragen. Nebenbedingungen, die Zahlen verbrauchen, können manchmal ähnlich wie die Zah- Abbildung 6 Ein Zahlen-verbrauchendes Beispiel mit S94 , S95 und dem Paar (1, 5). 7 6 1 3 2 8 7 9 3 7 6 5 9 4 6 3 8 2 4 1 5 6 2 9 6 7 8 len ausgefüllter Felder verwendet werden. Die eben abgeleitete Information zusammen mit der 1 in S77 beschränkt die möglichen Positionen für die 1 im Block links unten auf S81 und S82 . Außerdem dürfen die übrigen Felder im unteren mittleren Block nur mit 6, ..., 9 ausgefüllt werden, was womöglich weitere Konsequenzen hat. Die hier vorgeführten Strategien werden komfortabel in eine Software-Architektur für ein automatisches Programm integriert. Der flexible Ansatz macht die Integration ein- fach und er ist offen für die Integration neuer Strategien. Abschnitt 3 hat die Wichtigkeit solcher Überlegungen hervorgehoben mit der riesigen Zahl von Möglichkeiten, die das Backtracking arbeitsaufwändig machen. 6
  10. 10. 5 Software-Architektur für das Spiel 7 5 Software-Architektur für das Spiel Der Abschnitt präsentiert eine objektorientierte Architektur für ein Sudoku-Programm. Eine Klassenhierarchie strukturiert die logischen Gruppen des Spiels. Annotationen bieten einen flexiblen Mechanismus für das Lösen des Spiels mit logischen Regeln so- wie mit der Integration spezieller Strategien für Sudoku. Die Architektur für das Programm definiert eine Hierarchie für Gruppen und bietet An- notationen für die Integration von Strategien. Felder können mit Zahlen gefüllt werden, Gruppen repräsentieren die Felder der gleichen logischen Einheit des Spiels. Zum Bei- spiel repräsentiert ein Block eines der 3 × 3 Quadrate, die das Spielfeld kacheln. Auch Zeilen und Spalten repräsentieren Gruppen. Jedes Feld ist verknüpft mit den Gruppen, zu denen es gehört – ein Block, eine Zeile und eine Spalte. Umgekehrt werden Grup- pen mit Ihren Feldern verknüpft. Gruppen sind zusätzlich verknüpft mit allen Gruppen, die sie schneiden. Leere Felder werden mit den erlaubten Zahlen annotiert. Zum Anfang bekommen die Annotationen die Zahlen, die sich nicht in einer der Gruppen des Feldes befinden. Zah- len, die nicht in einer Gruppe erscheinen, definieren Annotationen. Anfangs speichert die annotierte Gruppe die leeren Felder. Durch die Beschreibung von Bedingungen für diese Annotationen wird formalisiert, welche Felder unmittelbar ausgefüllt werden können. In Feldern mit einer möglichen Zahl kann die übrige Annotation eingetragen werden. Wenn die Annotationen einer Gruppe für eine bestimmte Zahl nur ein Feld üb- rig lassen, darf die Zahl eingetragen werden. Zum Füllen von Feldern werden die Annotationen aktualisiert. Die Eintragung einer Zahl generiert eine Benachrichtigung, die Änderung an einer Position informiert die abhän- gigen Felder und Gruppen. In diesen Blöcken, Zeilen und Spalten darf die Zahl nicht mehr erscheinen. Es bleiben weniger Möglichkeiten. Die Annotationen der Felder in den Gruppen werden aktualisiert. Die abhängigen Gruppen bekommen Benachrichti- gungen. Auf diese Weise wird eine Generalisierung der Scanning-Strategie (präsentiert in Abschnitt 2) implementiert. Abhängige Gruppen werden definiert durch Gruppen mit einem nichtleeren Schnitt mit einer der Gruppen vom betrachteten Feld. Zum Beispiel die Eintragung der 1 im Feld im linken oberen Eck benachrichtigt einige abhängige Gruppen. Die erste Zeile schneidet den mittleren und rechten oberen Block – sie kön- nen die einzige 1 nur in den Zeilen zwei und drei eintragen. Zusätzlich schneidet Zeile 1 das erste Feld aller Spalten. Die erste Spalte schneidet alle Zeilen und beschränkt den mittleren und unteren linken Block auf die Spalten zwei und drei. Zum Schluss ent- fernt der Block links oben die ersten drei Felder der Annotationen von jeder Gruppe der ersten drei Spalten und Zeilen. Die Annotationen bieten einen flexiblen Mechanismus zur Integration spezieller Stra- tegien für Sudoku (präsentiert in Abschnitt 4). Beschränkt beispielsweise der Block 7
  11. 11. 6 Suchmethoden Künstlicher Intelligenz 8 links oben die 1 auf die erste Spalte, dann werden die Blöcke darunter genauso be- nachrichtigt. Den gleichen Seiteneffekt kann die Strategie der Zahlen-verbrauchenden Nebenbedingungen haben. Abschnitt 4 hat das mit dem Beispiel vom ausschließenden Paar 1 und 5 veranschaulicht. Das Finden dieser Nebenbedingungen generiert immer Benachrichtigungen in den relevanten Gruppen. Die Annotationen für ein Feld zum Bei- spiel entfernen die Zahlen des ausschließenden Paars. Wenn keine Regeln greifen, wird Backtracking zum Finden der Lösung eingesetzt. Die objektorientierte Architektur und die Annotationen präsentiert in diesem Abschnitt for- men im folgenden Abschnitt das Fundament für die intelligente Suche. 6 Suchmethoden Künstlicher Intelligenz Wie Abschnitt 3 es veranschaulicht hat, kann die riesige Zahl der Möglichkeiten be- achtliche Kosten hervorrufen. So wurden in den Abschnitten 2 und 4 eine einfache Scanning-Strategie und fortgeschrittene spezifische Techniken eingeführt. Der vorige Abschnitt hat ein Fundament geformt für die Integration der Strategien und Techniken mit logischen Regeln und Annotationen für Felder und Gruppen. Wenn keine Regel greift, startet das Programm eine Suche mit Backtracking. Die Annotationen werden zur Optimierung der Suche genutzt. Das Rätsel-Programm speichert den Fortschritt für die Bearbeitung eines Spiels. Eine Historie merkt sich die ausgefüllten Felder und die Aktualisierung der Annotationen. Die Buchführung dieser Schritte unterstützt eine optimierte Backtracking-Suche. Wenn keine Regel oder Strategie greift, wird ein Auswahlpunkt eingeführt und eine Suche ge- startet. Das zufällige Wählen eines Feldes und einer Zahl kann falsch sein. Das Raten kann Fehler verursachen. Jeweils nach dem Füllen weiterer Felder prüft das Programm den Spielzustand. Leere Felder müssen Annotationen haben, die mögliche Vorschlags- werte zur Eintragung erlauben. Zahlen, die nicht in einer Gruppe vorkommen, dürfen in dieser Gruppe keine leeren Annotationen besitzen. Diese Zahlen würden sonst in der Gruppe fehlen. Eine Lösung kann somit nicht mehr gefunden werden. Das Prüfen von Widersprüchen beschränkt sich auf die Änderungen der Annotationen. Das Backtracking nutzt die Annotationen. Die Suche rät einen Schritt und setzt das Spiel mit logischen Regeln fort. Neue Auswahlpunkte können eingeführt werden. Feh- ler setzen einen Schritt zurück. Ein Auswahlpunkt rät eine Zahl für ein Feld oder den Platz für eine Zahl in einer Gruppe. Die Annotationen verringern die Möglichkeiten zur Berücksichtigung und werden zur Optimierung bei der Wahl des geeigneten Auswahl- punktes genutzt. Zusätzlich vereinfacht die Historie die effiziente Verwaltung der Än- derungen und der Rücksetzung von Schritten. Ein Auswahlpunkt speichert seinen di- rekten Vorgänger und die Historie zum Erreichen des Nachfolgers. Ist Breitensuche gewünscht, merkt sich das Programm die Wege zu weiteren Auswahlpunkten. Ein Aus- 8
  12. 12. 6 Suchmethoden Künstlicher Intelligenz 9 wahlpunkt speichert die Möglichkeiten zum Wählen mit der Grundlage seiner Auswahl und die Möglichkeiten, die nicht mehr weiter verfolgt werden. Ein Feld wird bestimmt, wenn nur eine Möglichkeit bleibt. Ein weiterer Fehler leitet die Änderung an den Vor- gänger weiter. Der Ansatz bietet Taktiken für eine parametrisierte Suche. Die Standardmethode der Tiefensuche kann mit Breitensuche ersetzt werden. Der Ansatz ist offen für weitere Strategien. Die Wahl der Grundlage für den Auswahlpunkt nutzt die Annotationen. So könnte ein Testlauf den Schwerpunkt auf Annotationen von Gruppen legen, die zwei oder drei Felder für eine bestimmte Zahl vorsehen. Ein weiterer Test könnte Annotatio- nen für Felder bevorzugen, sofern wenige Zahlen zum Füllen der Lücke bleiben. Das Programm ist offen für Anpassungen und Feineinstellung im Einklang mit der Software- Architektur präsentiert in Abschnitt 5. Zum Schluss können die Parameter auch mit statistischen Methoden optimiert werden und weitere Methoden der künstlichen Intel- ligenz sind vielversprechend für die Optimierung der Suche. Das Training mit Sudoku- Beispielen ist sehr vielversprechend für das Finden der optimalen Grundlage für den Auswahlpunkt und für das Finden der Lösung in kürzester Zeit. 9

×