Rückzieher
Plötzlich schlug Youtube mir eine Erläu­terung des Back­track­ings in der Infor­matik vor. Und wie ein KI‑System spontan und asso­ziativ zumeist zufäl­liger­weise richtig liegt, so kam mir analog Back­propa­gating (edler mit -tion) in den Sinn, womit man Physik-​Nobel­preise gewin­nen kann, wenn man auch noch Boltz­mann ins Spiel bringen kann.

Erweist sich etwas als falsch, kann ich das meinem Gefühl oder meinen Über­legun­gen anla­sten und ihnen zukünf­tig skep­tischer gegen­über­stehen (back­propa­gation). Pro­biere ich einfach etwas aus und es schei­tert, dann wird wohl das Gegen­teil richtig sein (back­tracking). Zwei schlichte Überlegungen, die von vielen Menschen gerne igno­riert werden, ohne bessere zu ver­wenden.

Backtracking in der Informatik als „Methode der Problem­lösung“ besteht einfach darin, eine Aufgabe in mehrere Fälle zu teilen, um dies mit ihnen aber­mals und in der Folge immer und immer wieder zu tun, bis Erfolg oder Schei­tern offen­kundig wird, was man nach oben (back) meldet. Wieder an der Spitze ange­kommen ist dann das Problem gelöst oder auch nicht.

Ich frug mich, wie man diese simple Idee deutsch benennt. In der all­wis­senden Müll­halde fand ich hol­prige Wörter wie Rück­setz­ver­fahren und Rück­verfol­gung. Glück­licher­weise war Rück­kopp­lung schon ver­geben. Sinnvoll ist Tiefen­suche (depth first search), weil die Unter­fälle in die Tiefe führen, nicht nach oben oder in die Breite.

Man hätte auf einen eigenen Namen ver­zich­ten und Back­tracking als eine Aus­prä­gung von Versuch und Irrtum (trial and error) belas­sen können. Und gera­dezu edel ist die Beschrei­bung aus einer Zeit, da es weder Geschlechts­kunde noch Infor­matik an Univer­sitä­ten gab: Teile und herrsche. Dennoch habe ich für die Über­schrift die witzige Google-​Über­set­zung gewählt: Rück­zieher.

Doch Youtube wird mir das Film­chen eines Infor­matik-​Jung­spundes aus einem profa­neren Grunde hoch­gepoppt haben, nämlich wegen Sudokus und deren Lösung durch Back­tracking. Lang, breit und, wenn man es noch sagen darf, bis zur Verga­sung erklärte er die Methode: Im ersten freien Feld alle Ziffern 1 bis 9 auspro­bieren, um mit der glei­chen Methode das so ent­stan­dene Sudoku mit einen freien Feld weni­ger zu lösen. So geht es weiter bis alle Felder ausge­füllt sind. Der Erfolg wird nach oben gemel­det, das Sodoku ist gelöst.

Da ich vor Jahren ein Programm nicht in der vorge­stell­ten Bruta­lität (rekur­siver Selbst­aufruf), doch entlang dieser schlichten Idee schrieb, war ich der Meinung, dies sei die Brute-​Force-​Methode. Doch von dieser das Back­tracking abwer­tenden Begriff­lich­keit mußte sich der You­tuber absetzen und verstand darunter, bei n freien Feldern einfach alle 9 hoch n Bele­gungen durch­zupro­bieren.

Leider fand ich mein altes Programm nicht mehr und habe schnell ein neues erstellt, ohne rekur­siv aufruf­bare Platz und Zeit fres­sende ‚Methode‘, früher ein­fach Unter­pro­gramm genannt. Geschrie­ben in For­tran IV hätte es weit vor der Erfin­dung des Sudoku, da mir allein Algol als rekur­sive Program­mier­sprache bekannt war, jedes Rätsel in beschei­dener Lauf­zeit gelöst.

Langer Rede kurzer Sinn: Ich habe die vor Jahren hier betrach­teten Sudoku durch mein Programm laufen lassen. Für eine erschöp­fende Suche fielen normaler­weise ein paar tausend Konfi­gura­tionen an. Bis zur Lösung ist davon mal weniger, mal mehr als die Hälfte abzu­wickeln. Nur für dieses
+-------+-------+-------+
| 2 . . | . 7 8 | . . . |
| 6 . 1 | . 9 . | . 4 5 |
| . 9 . | . 4 . | 1 8 . |
+-------+-------+-------+
| . . 7 | . 2 6 | 3 5 . |
| . . 9 | 7 . . | . 1 6 |
| 8 . 5 | . . 9 | . . . |
+-------+-------+-------+
| . 7 . | 4 3 . | 2 . . |
| . 1 2 | 5 8 . | 6 . 4 |
| . 3 8 | 9 . . | . . 1 |
+-------+-------+-------+
Sudoku, an dessen mitt­leren Block ich erläu­terte, wie man mit ein­fachen Mitteln einer Lösung näher kommen kann, ging es über­ra­schend schnell:

 0 - 2...78...6.1.9..45.9..4.18...7.2635...97...168.5..9....7.43.2...1258.6.4.389....1
 1 - 24..78...6.1.9..45.9..4.18...7.2635...97...168.5..9....7.43.2...1258.6.4.389....1
 2 - 243.78...6.1.9..45.9..4.18...7.2635...97...168.5..9....7.43.2...1258.6.4.389....1
 3 - 243178...6.1.9..45.9..4.18...7.2635...97...168.5..9....7.43.2...1258.6.4.389....1
 4 - 2431789..6.1.9..45.9..4.18...7.2635...97...168.5..9....7.43.2...1258.6.4.389....1
 5 - 24317896.6.1.9..45.9..4.18...7.2635...97...168.5..9....7.43.2...1258.6.4.389....1
 6 - 243678...6.1.9..45.9..4.18...7.2635...97...168.5..9....7.43.2...1258.6.4.389....1
 7 - 2436789..6.1.9..45.9..4.18...7.2635...97...168.5..9....7.43.2...1258.6.4.389....1
 8 - 25..78...6.1.9..45.9..4.18...7.2635...97...168.5..9....7.43.2...1258.6.4.389....1
 9 - 253.78...6.1.9..45.9..4.18...7.2635...97...168.5..9....7.43.2...1258.6.4.389....1
10 - 253178...6.1.9..45.9..4.18...7.2635...97...168.5..9....7.43.2...1258.6.4.389....1
11 - 2531789..6.1.9..45.9..4.18...7.2635...97...168.5..9....7.43.2...1258.6.4.389....1
12 - 25317896.6.1.9..45.9..4.18...7.2635...97...168.5..9....7.43.2...1258.6.4.389....1
13 - 253678...6.1.9..45.9..4.18...7.2635...97...168.5..9....7.43.2...1258.6.4.389....1
14 - 2536789..6.1.9..45.9..4.18...7.2635...97...168.5..9....7.43.2...1258.6.4.389....1
15 - 254.78...6.1.9..45.9..4.18...7.2635...97...168.5..9....7.43.2...1258.6.4.389....1
16 - 254178...6.1.9..45.9..4.18...7.2635...97...168.5..9....7.43.2...1258.6.4.389....1
17 - 2541789..6.1.9..45.9..4.18...7.2635...97...168.5..9....7.43.2...1258.6.4.389....1
18 - 25417893.6.1.9..45.9..4.18...7.2635...97...168.5..9....7.43.2...1258.6.4.389....1
19 - 25417896.6.1.9..45.9..4.18...7.2635...97...168.5..9....7.43.2...1258.6.4.389....1
20 - 2541789636.1.9..45.9..4.18...7.2635...97...168.5..9....7.43.2...1258.6.4.389....1
21 - 254178963681.9..45.9..4.18...7.2635...97...168.5..9....7.43.2...1258.6.4.389....1
22 - 25417896368129..45.9..4.18...7.2635...97...168.5..9....7.43.2...1258.6.4.389....1
23 - 254178963681293.45.9..4.18...7.2635...97...168.5..9....7.43.2...1258.6.4.389....1
24 - 254178963681293745.9..4.18...7.2635...97...168.5..9....7.43.2...1258.6.4.389....1
25 - 25417896368129374539..4.18...7.2635...97...168.5..9....7.43.2...1258.6.4.389....1
26 - 25417896368129374579..4.18...7.2635...97...168.5..9....7.43.2...1258.6.4.389....1
27 - 254178963681293745793.4.18...7.2635...97...168.5..9....7.43.2...1258.6.4.389....1
28 - 25417896368129374579364.18...7.2635...97...168.5..9....7.43.2...1258.6.4.389....1
29 - 25417896368129374579364518...7.2635...97...168.5..9....7.43.2...1258.6.4.389....1
30 - 254178963681293745793645182..7.2635...97...168.5..9....7.43.2...1258.6.4.389....1
31 - 2541789636812937457936451821.7.2635...97...168.5..9....7.43.2...1258.6.4.389....1
32 - 254178963681293745793645182147.2635...97...168.5..9....7.43.2...1258.6.4.389....1
33 - 25417896368129374579364518214782635...97...168.5..9....7.43.2...1258.6.4.389....1
34 - 254178963681293745793645182147826359..97...168.5..9....7.43.2...1258.6.4.389....1
35 - 2541789636812937457936451821478263593.97...168.5..9....7.43.2...1258.6.4.389....1
36 - 2541789636812937457936451821478263593297...168.5..9....7.43.2...1258.6.4.389....1
37 - 25417896368129374579364518214782635932975..168.5..9....7.43.2...1258.6.4.389....1
38 - 254178963681293745793645182147826359329754.168.5..9....7.43.2...1258.6.4.389....1
39 - 2541789636812937457936451821478263593297548168.5..9....7.43.2...1258.6.4.389....1
40 - 254178963681293745793645182147826359329754816865..9....7.43.2...1258.6.4.389....1
41 - 2541789636812937457936451821478263593297548168653.9....7.43.2...1258.6.4.389....1
42 - 254178963681293745793645182147826359329754816865319....7.43.2...1258.6.4.389....1
43 - 2541789636812937457936451821478263593297548168653194...7.43.2...1258.6.4.389....1
44 - 25417896368129374579364518214782635932975481686531942..7.43.2...1258.6.4.389....1
45 - 254178963681293745793645182147826359329754816865319427.7.43.2...1258.6.4.389....1
46 - 25417896368129374579364518214782635932975481686531942757.43.2...1258.6.4.389....1
47 - 25417896368129374579364518214782635932975481686531942757643.2...1258.6.4.389....1
48 - 2541789636812937457936451821478263593297548168653194275764312...1258.6.4.389....1
49 - 25417896368129374579364518214782635932975481686531942757643129..1258.6.4.389....1
50 - 254178963681293745793645182147826359329754816865319427576431298.1258.6.4.389....1
51 - 25417896368129374579364518214782635932975481686531942757643129891258.6.4.389....1
52 - 2541789636812937457936451821478263593297548168653194275764312989125876.4.389....1
53 - 254178963681293745793645182147826359329754816865319427576431298912587634.389....1
54 - 2541789636812937457936451821478263593297548168653194275764312989125876344389....1
55 - 25417896368129374579364518214782635932975481686531942757643129891258763443896...1
56 - 254178963681293745793645182147826359329754816865319427576431298912587634438962..1
57 - 2541789636812937457936451821478263593297548168653194275764312989125876344389625.1
58 - 254178963681293745793645182147826359329754816865319427576431298912587634438962571
59 - 25417896368129374579364518214782635932975481686531942797.43.2...1258.6.4.389....1
60 - 25417896368129374579364518214782635932975481686531942797643.2...1258.6.4.389....1
61 - 2541789636812937457936451821478263593297548168653194279764312...1258.6.4.389....1
62 - 25417896368129374579364518214782635932975481686531947..7.43.2...1258.6.4.389....1
63 - 2541789636812937457936451824.7.2635...97...168.5..9....7.43.2...1258.6.4.389....1
64 - 25417896368139..45.9..4.18...7.2635...97...168.5..9....7.43.2...1258.6.4.389....1
65 - 254178963681392.45.9..4.18...7.2635...97...168.5..9....7.43.2...1258.6.4.389....1
66 - 254178963681392745.9..4.18...7.2635...97...168.5..9....7.43.2...1258.6.4.389....1
67 - 25417896368139274539..4.18...7.2635...97...168.5..9....7.43.2...1258.6.4.389....1
68 - 25417896368139274579..4.18...7.2635...97...168.5..9....7.43.2...1258.6.4.389....1
69 - 254178963681392745793.4.18...7.2635...97...168.5..9....7.43.2...1258.6.4.389....1
70 - 25417896368139274579364.18...7.2635...97...168.5..9....7.43.2...1258.6.4.389....1
71 - 25417896368139274579364518...7.2635...97...168.5..9....7.43.2...1258.6.4.389....1
72 - 254178963681392745793645182..7.2635...97...168.5..9....7.43.2...1258.6.4.389....1
73 - 2541789636813927457936451821.7.2635...97...168.5..9....7.43.2...1258.6.4.389....1
74 - 254178963681392745793645182147.2635...97...168.5..9....7.43.2...1258.6.4.389....1
75 - 25417896368139274579364518214782635...97...168.5..9....7.43.2...1258.6.4.389....1
76 - 254178963681392745793645182147826359..97...168.5..9....7.43.2...1258.6.4.389....1
77 - 2541789636813927457936451821478263593.97...168.5..9....7.43.2...1258.6.4.389....1
78 - 2541789636813927457936451821478263593297...168.5..9....7.43.2...1258.6.4.389....1
79 - 25417896368139274579364518214782635932975..168.5..9....7.43.2...1258.6.4.389....1
80 - 254178963681392745793645182147826359329754.168.5..9....7.43.2...1258.6.4.389....1
81 - 2541789636813927457936451821478263593297548168.5..9....7.43.2...1258.6.4.389....1
82 - 254178963681392745793645182147826359329754816865..9....7.43.2...1258.6.4.389....1
83 - 2541789636813927457936451824.7.2635...97...168.5..9....7.43.2...1258.6.4.389....1
84 - 254378...6.1.9..45.9..4.18...7.2635...97...168.5..9....7.43.2...1258.6.4.389....1
85 - 2543789..6.1.9..45.9..4.18...7.2635...97...168.5..9....7.43.2...1258.6.4.389....1
86 - 25437896.6.1.9..45.9..4.18...7.2635...97...168.5..9....7.43.2...1258.6.4.389....1
87 - 254678...6.1.9..45.9..4.18...7.2635...97...168.5..9....7.43.2...1258.6.4.389....1
88 - 2546789..6.1.9..45.9..4.18...7.2635...97...168.5..9....7.43.2...1258.6.4.389....1
89 - 25467893.6.1.9..45.9..4.18...7.2635...97...168.5..9....7.43.2...1258.6.4.389....1

Offensichtlich ist bei satten 38 vorge­gebe­nen Fel­dern nicht nur der mitt­lere Block, sondern auch die erste Zeile schwach. Nur sieben Kom­bina­tionen reichten, im ersten freien Feld (Zeile 1, Spalte 2) alles außer der 5 aus­zu­schlie­ßen. Für die 3 danach waren auch nur acht erfor­der­lich, weshalb mit 254 begonnen werden muß. Glücklicherweise führte 2541 direkt (heute würde man sagen: linear) zur Lösung.

Natürlich wußte ich bereits, daß dieses Sudoku leicht durch reine Suche nach ver­steckten Einern zu lösen ist: Zunächst fallen alle fehlen­den Einsen, dann die Zweien bis zu den Neunen. Ein wei­terer Durch­gang ist nicht erfor­der­lich. Trotz­dem hätte ich nie gerade mit der ersten Zeile begon­nen, in der ja nur drei Ziffern gegeben sind.

Sudoku | Einer | Raster

... comment

 
Geht denn das immer so flott mit dem Computer? Ja und nein. Ja, weil moderne Rechner sehr schnell sind und selbst eine 80‑fach geschach­telte Rekur­sion bewäl­tigen. Nein, weil nicht nur schwere, sondern auch recht leichte Sudoku deut­lich mehr Schritte benö­tigen, weit über zehn­tausend. Hier ein von mir im Jahre 2006 betrach­tetes Sudoku:
+-------+-------+-------+
| 1 . . | . 6 . | . . 5 |
| . 8 . | 9 . 3 | . 1 . |
| . . 7 | . . . | 8 . . |
+-------+-------+-------+
| . 7 . | . 4 . | . 9 . |
| 5 . . | 7 . 1 | . . 6 |
| . 6 . | . 3 . | . 7 . |
+-------+-------+-------+
| . . 3 | . . . | 9 . . |
| . 1 . | 3 . 9 | . 4 . |
| 9 . . | . 2 . | . . 1 |
+-------+-------+-------+
Erst nach 25.551 Schrit­ten in die Tiefe und Breite wurde die Lösung gefunden. Die Gesamt­suche nach allen Lösungen [1] benö­tigte mit 28.745 kaum mehr, weil das erste zu ermit­telnde Feld eine 9 erfor­dert.

    0 - 1...6...5.8.9.3.1...7...8...7..4..9.5..7.1..6.6..3..7...3...9...1.3.9.4.9...2...1
    1 - 12..6...5.8.9.3.1...7...8...7..4..9.5..7.1..6.6..3..7...3...9...1.3.9.4.9...2...1
        ..
 5723 - 13..6...5.8.9.3.1...7...8...7..4..9.5..7.1..6.6..3..7...3...9...1.3.9.4.9...2...1
        ..
 8132 - 14..6...5.8.9.3.1...7...8...7..4..9.5..7.1..6.6..3..7...3...9...1.3.9.4.9...2...1
        ..
14860 - 19..6...5.8.9.3.1...7...8...7..4..9.5..7.1..6.6..3..7...3...9...1.3.9.4.9...2...1
14861 - 192.6...5.8.9.3.1...7...8...7..4..9.5..7.1..6.6..3..7...3...9...1.3.9.4.9...2...1
        ...
20953 - 194.6...5.8.9.3.1...7...8...7..4..9.5..7.1..6.6..3..7...3...9...1.3.9.4.9...2...1
20954 - 19426...5.8.9.3.1...7...8...7..4..9.5..7.1..6.6..3..7...3...9...1.3.9.4.9...2...1
        ....
23740 - 19486...5.8.9.3.1...7...8...7..4..9.5..7.1..6.6..3..7...3...9...1.3.9.4.9...2...1
23741 - 194862..5.8.9.3.1...7...8...7..4..9.5..7.1..6.6..3..7...3...9...1.3.9.4.9...2...1
23742 - 1948623.5.8.9.3.1...7...8...7..4..9.5..7.1..6.6..3..7...3...9...1.3.9.4.9...2...1
23743 - 1948627.5.8.9.3.1...7...8...7..4..9.5..7.1..6.6..3..7...3...9...1.3.9.4.9...2...1
23744 - 194862735.8.9.3.1...7...8...7..4..9.5..7.1..6.6..3..7...3...9...1.3.9.4.9...2...1
23745 - 19486273528.9.3.1...7...8...7..4..9.5..7.1..6.6..3..7...3...9...1.3.9.4.9...2...1
        ..........
24421 - 19486273568.9.3.1...7...8...7..4..9.5..7.1..6.6..3..7...3...9...1.3.9.4.9...2...1
24422 - 1948627356829.3.1...7...8...7..4..9.5..7.1..6.6..3..7...3...9...1.3.9.4.9...2...1
        ............
24427 - 1948627356859.3.1...7...8...7..4..9.5..7.1..6.6..3..7...3...9...1.3.9.4.9...2...1
24428 - 194862735685973.1...7...8...7..4..9.5..7.1..6.6..3..7...3...9...1.3.9.4.9...2...1
24429 - 19486273568597321...7...8...7..4..9.5..7.1..6.6..3..7...3...9...1.3.9.4.9...2...1
24430 - 194862735685973214..7...8...7..4..9.5..7.1..6.6..3..7...3...9...1.3.9.4.9...2...1
24431 - 1948627356859732142.7...8...7..4..9.5..7.1..6.6..3..7...3...9...1.3.9.4.9...2...1
        ...................
24959 - 1948627356859732143.7...8...7..4..9.5..7.1..6.6..3..7...3...9...1.3.9.4.9...2...1
24960 - 194862735685973214327...8...7..4..9.5..7.1..6.6..3..7...3...9...1.3.9.4.9...2...1
24961 - 1948627356859732143271..8...7..4..9.5..7.1..6.6..3..7...3...9...1.3.9.4.9...2...1
        ......................
25283 - 1948627356859732143274..8...7..4..9.5..7.1..6.6..3..7...3...9...1.3.9.4.9...2...1
        ......................
25477 - 1948627356859732143275..8...7..4..9.5..7.1..6.6..3..7...3...9...1.3.9.4.9...2...1
25478 - 19486273568597321432751.8...7..4..9.5..7.1..6.6..3..7...3...9...1.3.9.4.9...2...1
25479 - 1948627356859732143275158...7..4..9.5..7.1..6.6..3..7...3...9...1.3.9.4.9...2...1
25480 - 19486273568597321432751486..7..4..9.5..7.1..6.6..3..7...3...9...1.3.9.4.9...2...1
25481 - 194862735685973214327514869.7..4..9.5..7.1..6.6..3..7...3...9...1.3.9.4.9...2...1
25482 - 19486273568597321432751486927..4..9.5..7.1..6.6..3..7...3...9...1.3.9.4.9...2...1
25483 - 194862735685973214327514869271.4..9.5..7.1..6.6..3..7...3...9...1.3.9.4.9...2...1
25484 - 19486273568597321432751486927164..9.5..7.1..6.6..3..7...3...9...1.3.9.4.9...2...1
25485 - 194862735685973214327514869271645.9.5..7.1..6.6..3..7...3...9...1.3.9.4.9...2...1
        .................................
25512 - 194862735685973214327514869271648.9.5..7.1..6.6..3..7...3...9...1.3.9.4.9...2...1
25513 - 19486273568597321432751486927164839.5..7.1..6.6..3..7...3...9...1.3.9.4.9...2...1
25514 - 19486273568597321432751486927164859.5..7.1..6.6..3..7...3...9...1.3.9.4.9...2...1
25515 - 1948627356859732143275148692716485935..7.1..6.6..3..7...3...9...1.3.9.4.9...2...1
25516 - 19486273568597321432751486927164859353.7.1..6.6..3..7...3...9...1.3.9.4.9...2...1
25517 - 1948627356859732143275148692716485935387.1..6.6..3..7...3...9...1.3.9.4.9...2...1
25518 - 194862735685973214327514869271648593538791..6.6..3..7...3...9...1.3.9.4.9...2...1
25519 - 1948627356859732143275148692716485935387914.6.6..3..7...3...9...1.3.9.4.9...2...1
25520 - 194862735685973214327514869271648593538791426.6..3..7...3...9...1.3.9.4.9...2...1
25521 - 19486273568597321432751486927164859353879142646..3..7...3...9...1.3.9.4.9...2...1
25522 - 194862735685973214327514869271648593538791426469.3..7...3...9...1.3.9.4.9...2...1
25523 - 19486273568597321432751486927164859353879142646923..7...3...9...1.3.9.4.9...2...1
25524 - 194862735685973214327514869271648593538791426469235.7...3...9...1.3.9.4.9...2...1
25525 - 19486273568597321432751486927164859353879142646923517...3...9...1.3.9.4.9...2...1
25526 - 194862735685973214327514869271648593538791426469235178..3...9...1.3.9.4.9...2...1
25527 - 1948627356859732143275148692716485935387914264692351787.3...9...1.3.9.4.9...2...1
25528 - 194862735685973214327514869271648593538791426469235178743...9...1.3.9.4.9...2...1
25529 - 1948627356859732143275148692716485935387914264692351787431..9...1.3.9.4.9...2...1
25530 - 19486273568597321432751486927164859353879142646923517874315.9...1.3.9.4.9...2...1
        ...........................................................
25537 - 19486273568597321432751486927164859353879142646923517874318.9...1.3.9.4.9...2...1
25538 - 1948627356859732143275148692716485935387914264692351787431869...1.3.9.4.9...2...1
25539 - 19486273568597321432751486927164859353879142646923517874318695..1.3.9.4.9...2...1
25540 - 194862735685973214327514869271648593538791426469235178743186952.1.3.9.4.9...2...1
25541 - 19486273568597321432751486927164859353879142646923517874318695281.3.9.4.9...2...1
25542 - 1948627356859732143275148692716485935387914264692351787431869528123.9.4.9...2...1
25543 - 194862735685973214327514869271648593538791426469235178743186952812359.4.9...2...1
25544 - 19486273568597321432751486927164859353879142646923517874318695281235964.9...2...1
25545 - 1948627356859732143275148692716485935387914264692351787431869528123596479...2...1
25546 - 19486273568597321432751486927164859353879142646923517874318695281235964795..2...1
25547 - 194862735685973214327514869271648593538791426469235178743186952812359647956.2...1
25548 - 19486273568597321432751486927164859353879142646923517874318695281235964795642...1
25549 - 194862735685973214327514869271648593538791426469235178743186952812359647956427..1
25550 - 1948627356859732143275148692716485935387914264692351787431869528123596479564273.1
25551 - 194862735685973214327514869271648593538791426469235178743186952812359647956427381

Daß dies auch auf einem beschei­denen Note­book ruckzuck geht, sollte nicht dazu ver­leiten, auf diese Weise ein leeres Sudoku lösen zu lassen, um so ihre Gesamt­zahl zu bestimmen, denn es sind n=6.670.903.752.021.072.936.960. Selbst wenn man nur die mit 123456789 begin­nenden Lösun­gen ermit­telt, sind es immer noch n/9!=18.393.222.420.692.992, was selbst bei einer Milli­arde Lösun­gen pro Sekunde noch sieben Monate dauert. Es ist deshalb erfor­derlich, weitere Reduk­tionen zu finden und in Arbeit ausar­tende Unter­fälle zu betrach­ten [2].

Eine schwerer zu beant­wor­tende Frage ist die nach der Anzahl der redu­zierten Sudokus, also der Äqui­valenz­klassen unter fol­genden Umord­nungen: Permu­tation der Ziffern, Vertau­schung der hori­zon­talen und verti­kalen 3×9‑Bänder, Vertau­schung der drei Zeilen bzw. Spalten in diesen Bändern, Dre­hung um 90 Grad, Spiege­lung an einer Diago­nalen. Davon gibt es 5.472.730.538. Teile ich die 6 Tril­liar­den Sudokus durch diese Zahl, komme ich auf 1.218.935.261,112. Warum keine ganze Zahl? Weil einige wenige Äqui­valenz­klassen dank Symme­trie ihrer Sudokus kleiner sind als 9!⋅2⋅3=1.218.998.108.160, der Maximal­zahl äquiva­lenter Sudokus. Das macht die Berech­nungen so kompli­ziert. [3]

[1] Von einem Sudoku ist natür­lich gefor­dert, daß es genau eine Lösung hat. Es gilt aber als unschön, dieses Wissen auszu­nutzen, insbe­sondere eine Ziffer zu setzen, weil es andern­falls zwei Lösun­gen geben muß.

[2] Felgenhauer, Jarvis: There are 6670903752021072936960 Sudoku grids. 2005.

[3] Russel, Jarvis: There are 5472730538 essen­tially differ­ent Sudoku grids … and the Sudoku sym­metry group. 2005.

... link  


... comment
 
Alle 6 Triliarden vollstän­digen Sudokus zu ermit­teln oder nur ihre Anzahl zu bestim­men, über­steigt nicht nur die Fähig­keiten meines Pro­grammes und meines Rechners. Deshalb habe ich es modi­fiziert, um solche auch Rudoku genann­ten mit nur 6×6 Feldern und 2×3‑Blöcken zu lösen. Für
+-------+-------+
| 1 2 3 | 4 5 6 |
| 4 5 6 | . . . |
+-------+-------+
| . 1 . | . . . |
| . . . | . . . |
+-------+-------+
| . . 1 | . . . |
| . . . | . . . |
+-------+-------+
kam ich nach Durch­zählen von 14.845 Kombi­nati­onen auf 816 Lösun­gen. Die Gesamtzahl der Lösungen liegt mit 28.300.960 um den Faktor 6!⋅6⋅8=34560 höher, weil ohne Ände­rung der Anzahl fol­gen­des mög­lich ist: Die Zif­fern des linken oberen Blockes können frei permu­tiert wer­den (6!), durch Ver­tau­schung der rechten drei Spalten können die letzten drei Ziffern der ersten Zeile den ersten drei der zweiten Zeile gleich gewählt wer­den (3!), und die Ziffer der linken oberen Ecke (hier 1) hat im linken Streifen genau 8 Mög­lich­keiten, die wegen Zeilen­vertau­schun­gen alle auf gleich viele Lösun­gen führen müssen.

Sieht man Sudokus, die durch Vertau­schung der Ziffern, der senk­rechten und waage­rechten Strei­fen sowie der Zeilen und Spalten inner­halb dieser Strei­fen als gleich an, so blei­ben genau diese 816 redu­zier­ten Lösun­gen. Die insgesamt 816 Äqui­valenz­klassen sind alle gleich groß und umfas­sen jeweils 34560 Lö­sun­gen.

Die Überein­stimmung der Theorie [1] mit meinen Zahlen ist mir deshalb wichtig, weil dadurch die Korrekt­heit meines Pro­grammes zwar nicht bewie­sen, aber plau­sibler wird, obwohl mich ein Fehler ent­setzte, näm­lich die Löschung eines besetz­ten Feldes der Anfangs­konfi­guration. Glück­licher­weise trat er nicht im Ori­ginal auf, sondern war durch einen falschen Sprung im einge­fügten Rank­werk verur­sacht, das mir die Ausgabe verschö­nern sollte. [2]

[1] Jones, Perkins, Roach: On the Numbers of 6 × 6 Sudoku Grids. Journal of Combina­torial Mathe­matics and Combina­torial Compu­ting 89:33–44, August 2014.

[2] Das hielt mich Stunden hin, obgleich ich schnell vermu­tete, daß der Fehler durch eine Feld­über­schrei­tung verur­sacht ist. Tatsäch­lich wurde durch einen falschen Sprung eine Variable über 81 hinaus gezählt, wodurch nach­fol­gende Speicher­bereiche zerstört wurden. Aber ich bin nicht nur ob meiner erfolg­reichen Suche zufrie­den, sondern auch wegen der damit verbun­denen Erinne­rungen an mein Arbeits­leben, dem Auf­finden von Fehlern, am lieb­sten in Compi­lern und anderer teurer Soft­ware, aber auch mathema­tischen Bewei­sen.

... link  


... comment
 
Nach den 6×6‑Sudokus nun die mit nur 4×4 Feldern, die natür­lich ein­facher sind, wenn man von einer Klei­nig­keit absieht: Im Gegen­satz zu denen mit 6×6 kann man sie wie die 9×9‑Sudokus auch dia­gonal spiegeln und um 90° drehen.

Mein Programm für solche 4×4‑Sudokus modi­fiziert liefert 288 Lö­sun­gen. Jeweils 4!=24 gehen durch Ziffern­vertau­schung ausein­ander hervor. Es gibt also maximal 288/24=12 Äqui­valenz­klassen unter Ver­tau­schung von 2×4‑Strei­fen, den beiden Zeilen bzw. Spalten darin, Spie­gelung um die beiden Diago­nalen und Mitten­linien, Dre­hungen um 90, 180 und 270 Grad sowie Ziffern­vertau­schun­gen. Die 12  Lösun­gen des linken Sodukos
+-----+-----+   +-----+-----+
| 1 2 | . . |   | 1 2 | 3 4 |
| 3 4 | . . |   | 3 4 | . . |
+-----+-----+   +-----+-----+ 
| . . | . . |   | 2 . | 4 . |
| . . | . . |   | 4 . | . . |
+-----+-----+   +-----+-----+
stehen für 12 Stell­ver­treter dieser Gruppen, die in Wahrheit höch­sten drei sein können, denn durch Ver­tau­schung der Zeilen bzw. Spal­ten 3 und 4 ent­stehen je vier äqui­valente Lösun­gen, wes­halb das rechte nur noch diese drei aufweist
+-----+-----+   +-----+-----+   +-----+-----+
| 1 2 | 3 4 |   | 1 2 | 3 4 |   | 1 2 | 3 4 |
| 3 4 | 1 2 |   | 3 4 | 2 1 |   | 3 4 | 1 2 |
+-----+-----+   +-----+-----+   +-----+-----+ 
| 2 1 | 4 3 |   | 2 1 | 4 3 |   | 2 3 | 4 1 |
| 4 3 | 2 1 |   | 4 3 | 1 2 |   | 4 1 | 2 3 |
+-----+-----+   +-----+-----+   +-----+-----+
die für jeweils 96 äqui­va­lente Sodo­kus stehen. Wer die nötige Moti­vation aufbringt, kann das mittlere Sudoku um die Dia­gonale von links oben nach rechts unten spiegeln, die 2 mit der 3 ver­tau­schen und erhält das rechte. Es ist also der augen­schein­liche Verdacht bestä­tigt, die 288 Sudoku gliederten sich in zwei Klassen, eine mit 96 Lö­sun­gen, zu denen das linke gehört, und eine mit den 192 rest­lichen.

Dazu bleibt zu zeigen, daß keine der betrach­teten Trans­formati­onen aus der ersten Gruppe heraus­führt. Damit es nicht in Arbeit aus­artet, eine Über­legung, die in solchen Lagen des öfteren hilft: Hat man ein voll­stän­diges Sudoku, so kann man die vier Matri­zen betrach­ten, in denen eine der vier Ziffern durch 1, die übrigen durch 0 ersetzt sind. Die ent­stehen­den Per­muta­tions­matri­zen haben alle eine Deter­minate +1 oder −1, wodurch jedem Sudoku eine Signa­tur aus diesen vier Vor­zei­chen zugeordnet werden kann. Für die drei wieder­gege­benen lauten sie (−,−,−,−), (+,+,−,−) und (+,−+,−). Eine Permu­tation der Ziffern ver­tauscht nur die Reihen­folge dieser Vor­zei­chen. Alle ande­ren Trans­forma­tionen wech­seln alle Vorzei­chen oder keines. Damit haben alle 96 Su­doku der ersten Klasse eine Signa­tur aus vier glei­chen Vorzei­chen, wäh­rend die übri­gen 192 eine ge­misch­te haben. Ein Über­gang zwischen ihnen ist also nicht möglich.

Erst nach diesen Über­legun­gen habe ich im Internet nach einer Bestä­tigung meines Ergeb­nisses gesucht und nach etwas Mühe im Internet auch gefunden. [1] Es ist insofern bemer­kens­wert, als schon bei einem 4×4‑Su­doku die Klassen äqui­valen­ter Lösun­gen nicht gleich groß sind.

[1] Kyle Oddson: Math and Sudoku. 2016.

... link  


... comment
 
Mit der Adventszeit ist mir das Lösen von Sudokus mit brutaler Rekur­sion etwas einge­schlafen. Nun aber wurde der Verdacht aufge­bracht, meine Hard- und Soft­ware sei in die Jahre gekommen und ranzig. Deshalb hier mein Programm, das vor 50 Jahren zwar lang­samer, aber ohne Murren gelaufen wäre.
      IMPlICIT INTEGER (A-Z)
      INTEGER A(81),B(81)
      READ(*,100) A
      DO 10 Q=1,81
   10 B(Q)=A(Q)
      P=0
   20 P=P+1
      IF(P.GT.81) GOTO 55
      IF(A(P).GT.0) GOTO 20
      N=0
   30 N=N+1
      IF(N.GT.9) GOTO 50
      K=P-1
      I=K/9
      J=K-9*I
      K=3*(I/3)+J/3
      Q=0
   40 Q=Q+1
      IF(B(Q).NE.N) GOTO 45
      KK=Q-1
      II=KK/9
      IF(II.EQ.I) GOTO 30
      JJ=KK-9*II
      IF(JJ.EQ.J) GOTO 30
      KK=3*(II/3)+JJ/3
      IF(KK.EQ.K) GOTO 30
   45 IF(Q.lT.81) GOTO 40
      B(P)=N
      WRITE(*,100) B
      GOTO 20
   50 B(P)=0
   55 P=P-1
      IF(P.lE.0) STOP
      IF(A(P).NE.0) GOTO 55
      N=B(P)
      IF(N.lT.9) GOTO 30
      GOTO 50
  100 FORMAT(81I1)
      END
Natürlich habe ich noch ein weiteres Programm mit etwas Rankwerk, um die Schritte zu zählen, Punkte statt Nullen zu verar­beiten und Sudoku-​Felder darzu­stellen, mit dem ich meine bishe­rigen Listen erstellt habe.

... link  

 
Es sieht so ähnlich aus, wenn man einer Maschine sagt, wo sie hobeln soll. Mit Abfragen und Loops und Verzweigungen und Stopbedingungen usw.

Für manche Software, je nach Alter und Dongle, braucht man den alten Rechner unbedingt, bis er stirbt. Alter Rechner kann nicht mit neuerer Version der Software, ein neuer Rechner nicht mit der Lizenz der älteren Software. Es macht Laune, wenn man 50 Varianten von Software-Rechner-Kombis in der Firma hat, jede mit einer anderen Spezialmacke, das in der Theorie aber die gleiche Software ist.

... link  

 
Was nützt es einem, wenn man in der Theorie „die gleiche Software“ nutzt, sie aber einfach nicht funk­tio­niert oder der Lizenz­server eine nega­tive Schufa-​Auskunft erteilt. Was mein Programm betrifft: Es wäre vor 50 Jah­ren gelaufen, und es wird auch in 50 Jah­ren zwar nicht auf jedem Rechner, aber auf vernünf­tigen kompi­lierbar sein und seine Arbeit zuver­lässig ver­richten.

... link  

 
In dem Fall spielen Lizenzserver keine Rolle, sondern die Lizenz steckt im Dongle. Der schaltet den Softwarestand frei, der beim Kauf der Lizenz existiert.

Die Programme puzzelt man nicht unbedingt an der konkreten Maschine, sondern da, wo es ruhiger ist, wo die Kaffeetasse steht und ein Rechner mit großem Bildschirm.

Irgendwann bei Bedarf wird es auf eine bestimmte Maschine gespielt, und es entsteht große Heiterkeit, wenn die Softwareversion vor Ort, weil sie von 1780 ist, irgendeine tausendfach verwendete Syntax nicht kennt, zwei linke Hände hat und daran alles Daumen.

... link  

 
Schön, wenn in Ihrem Falle kein externer Lizenz­server mitredet. Leider aber mußte ich sehen, wie Anwen­dungen über Tage nicht liefen, weil die Lizenz abge­laufen war, neue beschafft, berafft und einge­spielt werden mußte.

Mein Programm habe ich auch auf einem modernen Rechner [1] neben einer Tasse Kaffee zusam­menge­puzzelt, doch einen Sprach­standard ver­wendet, der seit 1970 gilt. Wenn nach der Compi­lierung das Programm nicht läuft, sollte der Compiler sich nicht Fortran nennen.

Natürlich kann es immer wieder einmal passieren, daß Fehler auf dem Ziel­system auffallen, die man bei der Ent­wicklung nicht bemerkte. Sie gesellen sich einfach zu denen, die auch auf dem großen Bild­schirm über­sehen wurden. Tausend­fach verwen­dete Syntax ist keine Ent­schul­digung, nicht ins Pflich­tenheft geschaut zu haben.

Fehler einfach zugeben und korri­gieren! Wer das nicht kann oder unter man­gelnder Frustra­tions­tole­ranz leidet, sollte nicht Program­mierer werden und sein Geld mit Ober­flächen­design, Content­manage­ment oder Kaffee­kochen ver­dienen.

[1] Man mag ihn ranzig nennen, weil er nicht alles firefoxt, Lüfter und Akku nicht funktio­nieren, doch ist er insofern modern, als es ihn 1970 noch nicht gab.

... link  


... comment