Also ist Sudoku normalerweise , aber diese Frage erstreckt sich auch auf n 2 × n 2 Rätsel mit n > 3 . Es gibt viele polynomielle Zeitableitungsregeln, die Fortschritte bei der Suche nach einer Lösung für ein Sudoku-Puzzle erzielen können. Manchmal kann es jedoch erforderlich sein, Werte zu erraten und Schlussfolgerungen zu folgen, um den Wert einer Zelle oder eine Kombination von Zellwerten zu eliminieren. Sobald jedoch eine gültige Lösung gefunden wurde, kann nicht garantiert werden, dass die Lösung EINZIGARTIG ist. Ein gültiges Sudoku-Rätsel sollte nur eine gültige Lösung haben. Wenn Sie jedoch zufällige Rätsel generieren, ist möglicherweise eine zusätzliche Berechnung erforderlich, um dies zu überprüfen.
Meine Frage ist also, wie viel schwieriger es sein kann, zu bestimmen, ob wir einen bestimmten Satz von Regeln für die Polynomzeitableitung zulassen (z. B. den in der Sudoku-Strategie am häufigsten beschriebenen Satz), Werte zu erraten und die Schlussfolgerungen zu befolgen eine eindeutige Lösung für ein bestimmtes Rätsel im Vergleich zur Suche nach nur einer Lösung in Bezug auf die Anzahl der nicht eindeutigen Lösungen? Gibt es einen asymptotischen Unterschied für bestimmte Rätselklassen?
quelle
Wenn ich Sie richtig verstehe, versuchen Sie, Sudoku-Rätsel zu überprüfen, die Ihre Software generiert hat, um festzustellen, ob sie gültig sind.
Wenn nur "gültig" von Interesse ist, hat Yuval Filmus Sie bereits auf einen Beweis hingewiesen, dass es NP vollständig ist.
Wenn es jedoch darum geht, neue Sudoku-Rätsel zu finden, die eine Person gerne löst, ist das Problem nicht so schwer. (Viele Werte erraten zu müssen, da das Rätsel mit „Logik“ nicht lösbar ist, macht keinen Spaß!) Daher würde ich persönlich die Anzahl der Rätsel auf höchstens 4 begrenzen und jedes Rätsel ablehnen, für das nicht bewiesen werden kann, dass es eine hat einzigartige Lösung im Rahmen dessen, was Sie für sinnvoll halten.
Das oben Genannte zu tun, die Standard-Rückverfolgung zu verwenden, um alle möglichen Vermutungen (innerhalb Ihres Limits) aufzurufen und zu zeigen, dass es nur eine Lösung gibt, ist viel einfacher als NP complete.
Außerdem können Sie anhand der Komplexität der benötigten Abzugsregeln und der Anzahl der erforderlichen Vermutungen bewerten, wie schwer ein Puzzle ist.
quelle
Um zu beweisen, dass ein Puzzle einzigartig ist, muss jede Zelle, in der eine Vermutung angestellt werden musste, verzweigt werden. Bei der Suche nach einer einfachen Antwort wird in der Regel ein Backtracking durchgeführt, bei dem die Lösung der erste Pfad im Entscheidungsbaum ist, der zu einem vollständigen Board führt. Um die Eindeutigkeit zu beweisen, müssen Sie zeigen, dass nur ein Pfad zu einer gültigen Lösung führt. Hier wird es sehr schwierig, die Dinge in Bezug auf die Laufzeit zu definieren. Die Komplexität hängt stark vom eigentlichen Problem ab. Wenn Sie ein reines Worst-Case-Szenario betrachten, das äußerst unwahrscheinlich ist, können Sie davon ausgehen, dass es dieselbe Komplexität aufweist.
Im schlimmsten Fall befindet sich die Lösung beim Lösen innerhalb des letztmöglichen Zweigs des Baums, der durchsucht werden kann. Der gesamte Baum musste durchsucht werden, um ihn zu finden, während eine Suche nach Eindeutigkeit auch die gleiche Suche erfordern würde und genau dieselben Pfade durchläuft.
Realistisch ist dies jedoch nicht der Fall, und in fast allen Fällen, in denen nach kombinatorischen Entwürfen gesucht wird, ist die Suche nach einer Lösung immer schneller als die Suche nach allen Lösungen.
Im Allgemeinen sind beide Probleme in exponentiellen Laufzeiten fest verankert, wenn nicht noch schlimmer.
quelle