亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

術語等式/不等式的具體化

術語等式/不等式的具體化

largeQ 2019-07-13 16:04:32
純粹的PROLOG程序以清晰的方式區分術語的平等和不平等,但執行效率低下;即使所有相關術語都是有根據的。最近的一個例子是這個答案..在這個定義中,所有的答案和失敗都是正確的。考慮:?- Es = [E1,E2], occurrences(E, Es, Fs). Es = Fs, Fs = [E, E], E1 = E2, E2 = E ; Es = [E, E2], E1 = E, Fs = [E], dif(E, E2) ; Es = [E1, E], E2 = E, Fs = [E], dif(E, E1) ; Es = [E1, E2], Fs = [], dif(E, E1), dif(E, E2).雖然程序從聲明性的角度來看是完美無缺的,但它在當前系統(如B、SICStus、SWI、YAP)上的直接執行是不必要的低效。對于下面的目標,選擇點將保持打開狀態每人元素。?- occurrences(a,[a,a,a,a,a],M). M = [a, a, a, a, a] ; false.這可以通過使用足夠大的aS如下。您可能需要調整I這樣,列表仍然可以表示;在SWI中,這意味著第一I必須足夠小,以防止全局堆棧出現資源錯誤,如下所示:?- 24=I,N is 2^I,length(L,N), maplist(=(a),L). ERROR: Out of global stack2做I必須足夠大以引發本地堆棧的資源錯誤:?- 22=I,N is 2^I,length(L,N), maplist(=(a),L), ( Length=ok ; occurrences(a,L,M) ). I = 22, N = 4194304, L = [a, a, a, a, a, a, a, a, a|...], Length = ok ; ERROR: Out of local stack為了克服這個問題,并保留好的聲明性屬性,需要一些比較謂詞。如何定義這個比較謂詞?
查看完整描述

3 回答

?
茅侃侃

TA貢獻1842條經驗 獲得超22個贊

首先,名稱應該更具有聲明性,比如equality_truth/2.


查看完整回答
反對 回復 2019-07-13
  • 3 回答
  • 0 關注
  • 547 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號