認知描述程式(epistemic specification)是回答集程式的超集,它是為了解決asp程式不能「自省」的問題所發明的一種邏輯語言。asp的求解的複雜度已經很高,
廢話不多說,現在就展示一下轉化的方法。
初步考慮:
1. 重寫帶有主觀字的規則
對於包含k l的規則r
1)新增新規則,避免改寫規則被優化
2)使用新的邏輯程式完成例項化
2. 例項化完成後,去掉所有新增規則,並將ground_k_l重寫寫成k l.
看乙個例子吧:
%% p(x) :- k l(x).
%% l(a).
%%added rules
defined_l(x) :- l(x).
positive_l(x) :- not negative_l(x), defined_l(x).
negative_l(x) :- not positive_l(x), defined_l(x).
ground_k_l(x) :- positive_l(x).
ground_not_k_l(x) :- positive_l(x).
ground_k_l(x) :- negative_l(x).
ground_not_k_l(x) :- negative_l(x).
p(x) :- ground_k_l(x).
l(a).
這是乙個最簡單的例子,為了例項化l(x),我們做了上述轉化例項化後的程式為:
l(a).
defined_l(a).
positive_l(a):-not negative_l(a).
negative_l(a):-not positive_l(a).
ground_k_l(a):-positive_l(a).
ground_not_k_l(a):-positive_l(a).
ground_k_l(a):-negative_l(a).
ground_not_k_l(a):-negative_l(a).
p(a):-ground_k_l(a).
去掉的準則就是1.刪除所有頭部含有defined_l,positive_l,negative_l,ground_k_l和ground_not_k_l的規則,2 將體部的ground_k_l和ground_not_k_l還原成k l 和not k l
l(a).
p(a):-k l(a).
還剩下的事情就是如何證明這樣做方法可以保證最後的程式與原程式語義等價。 1 依賴及例項化
org.elasticsearch.client elasticsearch rest high level client 7.7.0 基本使用 高階客戶端將在內部基於提供的構建器建立用於執行請求的低階客戶端。該低階客戶端維護乙個連線池並啟動一些執行緒,因此您應該在完全正確地使用它之後關閉高階客戶端...
關於離散化的小認知
何為離散化?離散化,就是把無限空間中有限的個體對映到有限的空間中去,以此提高演算法的時空效率。有些資料本身很大,自身無法作為陣列的下標儲存對應的屬性。如果這時只是需要這堆資料的相對屬性,那麼可以對其進行離散化處理!離散化 當資料只與它們之間的相對大小有關,而與具體是多少無關時,可以進行離散化。1 0...
程式設計師的自我認知
文章本身也是乙個人接受輸入 對輸入進行加工處理 並通過文字進行輸出的過程 看到這句話讓我想到了編碼時使用的函式 方法不也是這麼乙個過程嗎?不禁感慨,大道至簡 萬物想通!乙個函式包括輸入 處理和輸出三個部分,可以用模型簡單表示為 但轉念一想,人其實比函式或方法本身要複雜的多,不能簡單的與函式做比對,具...