In der Arbeit "Effiziente CNF-Codierung zur Auswahl von 1 aus N Objekten" stellen die Autoren ihre "Commander Variable" -Technik zur Codierung der Einschränkung vor und sprechen dann über das Pigeonhole-Problem.
Da mein Fehler möglicherweise im Verständnis auf niedrigerer Ebene besteht, möchte ich erklären, was ich zu wissen glaube, bevor ich die Frage stelle:
Sei und die Anzahl der Tauben und Löcher. Die naive Codierung verwendet eine Satzvariable , die wahr ist, wenn die Taube in das Loch gelegt werden soll. Die Klausel erzwingt, dass Taube 1 genau ein Loch besetzen muss; Für die anderen Tauben werden identische Klauseln hinzugefügt. Die Klausel erzwingt, dass nicht mehr als eine Taube Loch 1 besetzt; Für die verbleibenden Löcher werden identische Klauseln hinzugefügt.
Wenn es mehr Tauben als Löcher gibt (m> n), ist das Problem unlösbar (für Menschen offensichtlich), aber der SAT-Löser "sieht" diese Tatsache nicht. Wenn es keinen Weg findet, Tauben zu platzieren , sucht es einen Versuch mit Tauben . Es versteht nicht, dass die Reihenfolge der Tauben irrelevant ist. Das Papier nennt diese Symmetrie unter anderem.
Fälle, in denen ist, werden als anstrengender Test für die Fähigkeit eines SAT-Lösers verwendet, Unzufriedenheit festzustellen.
Das Papier schlägt vor, die Symmetrie zu durchbrechen, indem die Ordnung der Tauben durchgesetzt wird. Die Taube muss in ein Loch vor dem Loch der Taube (dh die Taube in Loch muss eine kleinere Anzahl haben als die Taube in Loch ). Dann heißt es enttäuschenderweise: "Aus Platzgründen beschreiben wir die Codierung in kanonischer Reihenfolge nicht explizit im Detail, aber die Anzahl der generierten Klauseln liegt in der Größenordnung "
Meine Frage ist also: Was haben sie getan, um diese Ergebnisse zu erzielen?
Ich möchte die Variablen als Bitfolge behandeln, die numerisch die Auswahl der Taube angibt Loch 1 und so weiter. Folgen Sie diesem mit Komparatoren, um den Vorschlag des Papiers durchzusetzen. Meine naive Komparatorkonstruktion erfordert jedoch m Klauseln, eine für jedes Bit (von zunehmend hässlicher Größe). Hilfe! :) :)
quelle