Meiner Meinung nach ist ein CSP am besten in zwei Teile gegliedert:
- die Einschränkungen Staat. Dies wird Modellierung Teil oder Modell genannt.
- Suche für Lösungen mit Aufzählung Prädikate wie
labeling/2
.
Diese Teile werden am besten getrennt gehalten durch ein Prädikat verwendet, die wir Kern Beziehung nennen und das die folgenden Eigenschaften aufweist:
- Es Beiträge die Zwänge, dh sie drückt Teil (1) oben.
- Das letzte Argument ist die Liste der Variablen, die noch beschriftet werden müssen.
- Per Konvention endet der Name mit einem Unterstrich
_
.
diese Unterscheidung in Ort ermöglicht es Ihnen zu:
- versuchen, verschiedene Suchstrategien, ohne dass Sie Ihren Code
- Grund zur Terminierung Eigenschaften des Kerns Beziehung losgelöst von einer konkreten neu kompilieren (und oft sehr teuer) Suche.
Ich kann sehen, wie einige Ausbilder Teil (1) in zersetzen:
1a. unter Angabe der Domänen der Variablen, zum Beispiel in/2
Einschränkungen
1b. Angabe der anderen Einschränkungen, die zwischen den Variablen enthalten sind.
Meiner Ansicht nach ist diese Unterscheidung künstliche, weil in/2
Einschränkungen Einschränkungen sind wie alle anderen Einschränkungen bei der Modellierung Teil, aber einige Lehrer diese separat auch aus historischen Gründen lehren können, auf die Zeit aus dem Jahr, als CSP-Systeme waren nicht so dynamisch wie sie jetzt sind.
Heutzutage können Sie in der Regel weitere Domäneneinschränkungen jederzeit veröffentlichen und frei in/2
Constraints mit anderen Einschränkungen in einer beliebigen Reihenfolge mischen.
also die Teile, die von Ihnen erwartet wird, sind wahrscheinlich: (a) Zustand in/2
Einschränkungen, (b) Staat weitere Einschränkungen und (c) Verwendung Aufzählung Prädikate für konkrete Lösungen zu suchen. Es scheint auch, dass Sie bereits die richtige Idee haben, wie Sie diese konkrete CSP mit dieser Methode lösen können.
Es gibt einen Unterschied zwischen der Dichotomie Modellierung/Markierung und der Struktur, die durch eine Kernbeziehung auferlegt wird: Für Kernbeziehungen sind solche konstruiert, dass Nicht-Terminierung immer durch den Kern verursacht wird. Dies ist bei der traditionelleren Sichtweise nicht unbedingt der Fall. – false
Ja: Eine Kernbeziehung ist ein Spezialfall eines Modells, das die obigen 3 Eigenschaften erfüllt. Was denken Sie? – mat
@false. So betont die begriffliche Trennung von "Kernbeziehung" und "Suche", dass die Beendigung nur die Kernbeziehung betrifft, richtig? – repeat