在我看來,一個CSP最好分爲部分:
- 國家的約束。這被稱爲建模部分或模型。
- 搜索解決方案使用枚舉謂詞像
labeling/2
。
這些部件通過使用我們稱之爲核心 關係的謂詞最好單獨存放並具有以下特性:
- 它帖子的約束,即,它表達的一部分( 1)以上。
- 它的最後一個參數是仍然需要標記的變量列表。
- 按照慣例,其名稱以下劃線結尾
_
。
已具備了這種區別,您可以:
- 嘗試不同的搜索策略,而無需重新編譯代碼
- 原因有關的任何具體的隔離核心 關係的終止性質(並且往往非常昂貴)搜索。
我可以看到一些教師可能分解部分(1)到:
1a上。說明變量的域,例如使用in/2
約束條件
1b。說明變量之間的其他約束條件。
在我看來,這種區別是人工,因爲in/2
約束喜歡在造型部分的所有其他約束限制,但一些導師可能單獨授課,這也出於歷史原因,可以追溯到時候CSP系統是不像現在那樣動態。
現在,您通常可以在任何時間發佈其他域限制,並將in/2
約束與任何 訂單中的其他約束自由混合。
所以,從你期望的部分有可能:(1) 狀態in/2
約束,(B) 狀態進一步約束和(c) 使用枚舉 謂詞來搜索具體 解決方案。它似乎也已經有了關於如何用這種方法解決這個具體的CSP的正確想法。
來源
2016-05-09 14:25:12
mat
建模/標籤二分法與核心關係強加的結構之間存在差異:核心關係的構建使得非終結總是由核心引起的。更傳統的觀點並不一定如此。 – false
是:核心關係是模型的特例,滿足上述3個屬性。你怎麼看? – mat
@false。因此,「核心關係」和「搜索」的概念分離強調終止只涉及核心關係,對嗎? – repeat