Drei Herangehensweisen beinhalten alle eine Reduktion von SAT in seine 2D-geometrische Verkehrssprache: Nicht-Programm-Logik-Rätsel. Zellen im Logikrätsel entsprechen SAT-Variablen, Nebenbedingungen zu Klauseln.
Für eine vollständige Erklärung (und um meinen Code auf Fehler zu überprüfen!) Habe ich bereits einige Informationen zu Mustern im Nicht-Programm-Lösungsbereich veröffentlicht. Siehe https://codereview.stackexchange.com/questions/43770/nonogram-puzzle-solution-space. Die Aufzählung von> 4 Milliarden Rätsellösungen und deren Codierung in eine Wahrheitstabelle zeigt fraktale Muster - Selbstähnlichkeit und insbesondere Selbstaffinität. Diese affine Redundanz zeigt eine Struktur innerhalb des Problems, die ausgenutzt werden kann, um die zur Generierung von Lösungen erforderlichen Rechenressourcen zu reduzieren. Es zeigt auch die Notwendigkeit einer chaotischen Rückkopplung in jedem erfolgreichen Algorithmus. Das Phasenübergangsverhalten hat Erklärungskraft, wenn "einfache" Instanzen entlang der groben Struktur liegen, während "harte" Instanzen eine weitere Iteration bis ins kleinste Detail erfordern, die von normalen Heuristiken völlig verborgen ist. Wenn Sie in die Ecke dieses unendlichen Bildes zoomen möchten (alle <= 4x4 Puzzle-Instanzen sind codiert), lesen Sie http://re-curse.github.io/visualizing-intractability/nonograms_zoom/nonograms.html
Methode 1. Extrapolieren Sie den Nicht-Programmlösungsraumschatten mit chaotischen Karten und maschinellem Lernen (denken Sie an Anpassungsfunktionen, die denen ähneln, die das Mandelbrot-Set generieren).
Hier ist ein visueller Induktionsnachweis. Wenn Sie diese vier Bilder von links nach rechts scannen und denken , Sie haben eine gute Idee , die fehlende 5. ... 6. zu generieren ... etc. Bilder, dann habe ich gerade programmiert Sie als mein NP Orakel für das Entscheidungsproblem der nonogram Lösung Existenz. Bitte treten Sie vor, um Ihren Preis als den leistungsstärksten Supercomputer der Welt zu beanspruchen. Ich füttere Sie hin und wieder mit Strom, während die Welt Ihnen für Ihre Rechenbeiträge dankt.
Methode 2. Verwenden Sie Fourier-Transformationen für die Boolesche Bildversion von Eingaben. FFTs liefern globale Informationen zu Häufigkeit und Position innerhalb einer Instanz. Während der Betragsteil zwischen den Eingangspaaren ähnlich sein sollte, ist ihre Phaseninformation völlig unterschiedlich - sie enthält gerichtete Information über eine Lösungsprojektion entlang einer bestimmten Achse. Wenn Sie klug genug sind, können Sie das Phasenbild der Lösung durch eine spezielle Überlagerung der Eingangsphasenbilder rekonstruieren . Dann transformieren Sie die Phase und die gemeinsame Größe invers zurück in den Zeitbereich der Lösung.
Was könnte diese Methode erklären? Es gibt viele Permutationen der Booleschen Bilder mit flexiblem Auffüllen zwischen aufeinander folgenden Läufen. Dies ermöglicht eine Zuordnung zwischen Eingabe -> Lösung, die sich um die Multiplizität kümmert, während die Eigenschaft von FFTs von bidirektionalen, eindeutigen Zuordnungen zwischen Zeitbereich <-> (Frequenz, Phase) beibehalten wird. Es bedeutet auch, dass es keine "keine Lösung" gibt. Es würde heißen, dass es in einem fortlaufenden Fall Graustufenlösungen gibt, die Sie nicht in Betracht ziehen, wenn Sie sich das Bilevel-Bild des herkömmlichen Lösen von Nonogramm-Rätseln ansehen.
Warum würdest du es nicht tun? Es ist eine schreckliche Art zu rechnen, da FFTs in der heutigen Fließkomma-Welt bei großen Instanzen sehr ungenau wären. Präzision ist ein großes Problem, und die Rekonstruktion von Bildern aus quantisierten Größen- und Phasenbildern führt in der Regel zu sehr ungefähren Lösungen, auch wenn dies für die Schwellenwerte des menschlichen Auges möglicherweise nicht visuell ist . Es ist auch sehr schwierig, dieses Überlagerungsgeschäft zu entwickeln, da die Art der Funktion, die es tatsächlich ausführt, derzeit unbekannt ist. Wäre es ein einfaches Mittelungsschema? Wahrscheinlich nicht, und es gibt keine bestimmte Suchmethode, um es zu finden, außer Intuition.
Methode 3. Suchen Sie eine zellulare Automatenregel (aus einer möglichen Anzahl von 4 Milliarden Regeltabellen für von Neumann-Regeln mit zwei Zuständen), die eine symmetrische Version des Nonogramm-Puzzles löst. Sie verwenden eine direkte Einbettung des Problems in die hier gezeigten Zellen.
Dies ist wahrscheinlich die eleganteste Methode in Bezug auf Einfachheit und gute Effekte für die Zukunft des Rechnens. Die Existenz dieser Regel ist nicht bewiesen, aber ich habe eine Vermutung, dass es existiert. Hier ist der Grund:
Nonogramme erfordern viel chaotisches Feedback im Algorithmus, um genau gelöst zu werden. Dies wird durch den Brute-Force-Code festgelegt, der mit Code Review verknüpft ist. CA ist gerade die fähigste Sprache, um chaotisches Feedback zu programmieren.
Es sieht richtig, visuell. Die Regel würde sich durch eine Einbettung entwickeln, Informationen horizontal und vertikal verbreiten, interferieren und sich dann zu einer Lösung stabilisieren, die die Anzahl der gesetzten Zellen konserviert. Diese Weiterleitungsroute folgt dem Pfad (rückwärts), an den Sie normalerweise denken, wenn Sie den Schatten eines physischen Objekts in die ursprüngliche Konfiguration projizieren. Nonogramme stammen aus einem speziellen Fall der diskreten Tomographie. Stellen Sie sich also vor, Sie sitzen gleichzeitig in zwei Computertomographen mit Kitty-Ecke. Auf diese Weise würden die Röntgenstrahlen die medizinischen Bilder erzeugen. Natürlich gibt es Grenzprobleme - die Ränder des CA-Universums können Informationen nur dann weitergeben, wenn Sie ein toroidales Universum zulassen. Dies wirft das Rätsel auch als periodisches Randwertproblem auf.
Es werden mehrere Lösungen als Übergangszustände in einem kontinuierlich oszillierenden Effekt zwischen dem Austauschen von Ausgängen als Eingängen und umgekehrt erläutert. Es werden Instanzen erläutert, die keine Lösung als Originalkonfigurationen haben, bei denen die Anzahl der gesetzten Zellen nicht erhalten bleibt. Abhängig vom tatsächlichen Ergebnis des Auffindens einer solchen Regel kann sie sogar unlösbare Instanzen mit einer engen Lösung approximieren, bei der die Zellzustände erhalten bleiben .