Nicht der Lösungsraum, sondern der Raum aller Instanzen. Erfüllbarkeit ist darauf eine monotone Funktion — der Raum hat also einen Rand, eine Höhe und eine lokale Geometrie. Alle drei sind exakt vermessen. Und trotzdem lässt sich die Zugehörigkeit nicht ausrechnen; auch dafür gibt es einen gemessenen Grund.
Exakt über den vollständigen Würfel, n = 10 … 22 · instanzraum.py · randnaehe.py
Bei n Variablen gibt es 8·C(n,3) mögliche Klauseln — Tripel mal Vorzeichenmuster. Eine Instanz ist eine Teilmenge davon, der Instanzraum also der Würfel {0,1}8·C(n,3). Bei n = 18 sind das 6 528 Dimensionen.
Ein einziger Satz ordnet das Ganze: eine Klausel hinzufügen kann nur SAT → UNSAT kippen, nie zurück.
6 528 Dimensionen lassen sich nicht zeichnen — ein zweidimensionaler Schnitt schon. Zwei unabhängige Klauselströme A und B; das Feld an der Stelle (i, j) ist die Instanz aus den ersten i Klauseln von A und den ersten j von B. Nach rechts und nach oben werden also Klauseln hinzugefügt.
Weil Erfüllbarkeit monoton ist, muss das lösbare Gebiet unten links zusammenhängen und der Rand eine Treppe sein, die nie zurückläuft. Genau das ist zu sehen — und die Treppe ist ausgefranst, nicht glatt.
Kontrolle: d wächst entlang beider Achsen nirgends rückwärts — auf allen 6 561 Feldern geprüft. Die Monotonie ist damit nicht behauptet, sondern nachgerechnet.
Wenn der Raum so sauber geordnet ist — warum kann man dann nicht die Koordinaten einer Eingabeinstanz ausrechnen und nachsehen, ob sie im Gebiet liegt? Weil es genau zwei Sorten Koordinaten gibt und dazwischen nichts.
α, Gradverteilung, Unwucht, Frontbreite, Baumweite. In Polynomzeit ausrechenbar — aber der Rand ist keine Niveaumenge davon. Zwei Instanzen können in jeder dieser Zahlen übereinstimmen und verschieden antworten.
d, Rückgrat, Lösungszahl. Sie bestimmen die Zugehörigkeit — aber sie auszurechnen ist mindestens so schwer wie das Problem selbst. d = 0 zu prüfen ist SAT.
Dazwischen ist nichts, und das ist kein Mangel an Fleiss: eine billige Koordinate, deren Niveaumenge der Rand wäre, wäre ein Polynomzeitverfahren für SAT. Die Frage „warum rechnet man die Koordinate nicht einfach aus" ist die P-gegen-NP-Frage in Koordinatenform.
Der geometrische Grund dahinter ist messbar. An der Schwelle hat keine der beiden Mengen ein Inneres:
| α | Art | Anteil | Abstand 1 | Abstand 2+ | mittlerer Abstand |
|---|---|---|---|---|---|
| 3,50 | SAT | 98 % | 52 % | 48 % | 1,48 |
| 4,00 | SAT | 85 % | 91 % | 9 % | 1,09 |
| 4,26 | SAT | 67 % | 95 % | 5 % | 1,05 |
| 4,26 | UNSAT | 33 % | 96 % | 4 % | 1,04 |
| 5,00 | UNSAT | 67 % | 85 % | 15 % | 1,15 |
| 6,00 | UNSAT | 95 % | 33 % | 67 % | 1,80 |
Bei α = 4,26 liegen 95 % der lösbaren Instanzen eine einzige Klausel von der unlösbaren Menge entfernt — und 96 % der unlösbaren eine einzige Klausel von der lösbaren. Es gibt an der Schwelle kein Inneres, in dem man liegen könnte. Der Rand ist überall.
| n | 3,00 | 3,50 | 4,00 | 4,26 | 4,50 | 5,00 | 5,50 | 6,00 | αc(n) | Breite |
|---|---|---|---|---|---|---|---|---|---|---|
| 10 | 1,00 | 0,96 | 0,85 | 0,75 | 0,67 | 0,49 | 0,32 | 0,22 | 4,986 | — |
| 14 | 1,00 | 0,97 | 0,85 | 0,73 | 0,66 | 0,39 | 0,23 | 0,11 | 4,791 | — |
| 18 | 1,00 | 0,97 | 0,84 | 0,73 | 0,61 | 0,35 | 0,13 | 0,04 | 4,714 | 1,879 |
| 22 | 1,00 | 0,98 | 0,83 | 0,64 | 0,53 | 0,22 | 0,05 | 0,02 | 4,543 | 1,599 |
d = 0 heisst lösbar. Und d ist zugleich die kleinste Zahl von Klauseln, die man streichen muss, damit F lösbar wird — der Abstand zum Rand in der Streichmetrik. Eine echte Höhenfunktion: monoton beim Hinzufügen, null genau auf dem Ideal.
Eine hinzugefügte Klausel macht F genau dann unerfüllbar, wenn alle Lösungen sie verletzen — also wenn alle Lösungen auf ihren drei Variablen dasselbe Muster tragen. Das sind exakt die Tripel aus dem Rückgrat, je Tripel ein Vorzeichenmuster.
Die kritischen Klauseln: Streichen macht lösbar. Genau die Klauseln, die als einzige einen Punkt des Würfels verletzen — der Ausgang aus dem Filter, eine Kante tief.
| α | Lösungen | Rückgrat b | C(b,3) | roh gezählt | gleich |
|---|---|---|---|---|---|
| 3,00 | 27 | 0 | 0 | 0 | ja |
| 4,00 | 8 | 3 | 1 | 1 | ja |
| 4,26 | 7 | 3 | 1 | 1 | ja |
| 4,60 | 3 | 4 | 4 | 4 | ja |