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

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

最一般的高階約束,描述相對于關系有序的整數序列。

最一般的高階約束,描述相對于關系有序的整數序列。

ABOUTYOU 2019-06-21 16:26:11
最一般的高階約束,描述相對于關系有序的整數序列。在CLP(FD)中,我們經常需要聲明:“這是整數和有限域變量的列表(有時:嚴格)上升/降序。“是否有任何CLP(FD)系統為此任務提供一個通用(可參數化)內置約束?Swi-prolog提供了一個名為chain/2,這和我要找的東西很相似。但是,名稱過于具體,不能包含約束可以描述的所有關系(例如:#<不是偏序,但在chain/2,導致序列-作為一組整數-不再像數學秩序理論中定義的鏈那樣計算)。因此,名稱并不完全描述約束實際實現的內容。請給最一般定義通常的二進制CLP(FD)約束-或至少包含以下內容的適當子集#<, #>, #=<和#>= — 包括根據約束定義的代數結構指定的專有名稱。施加的條件是,約束描述實際數學結構,在文獻中有正確名稱的數學結構。首先,考慮使用SICStus Prolog或SWI::- use_module(library(clpfd)). connex(Relation_2, List) :-     connex_relation(Relation_2),     connex_(List, Relation_2). connex_relation(#=). connex_relation(#<). connex_relation(#=<). connex_relation(#>). connex_relation(#>=). connex_([], _). connex_([L|Ls], Relation_2) :-     foldl(adjacent(Relation_2), Ls, L, _). adjacent(Relation_2, X, Prev, X) :- call(Relation_2, Prev, X).抽樣案例:?- connex(#<, [A,B,C]). A#=<B+-1, B#=<C+-1. ?- connex(#=, [A,B,C]). A = B, B = C, C in inf..sup. ?- maplist(connex(#<), [[A,B],[C,D]]). A#=<B+-1, C#=<D+-1.請注意,允許#\=,因為這種關系仍然描述在數學秩序理論中所知的康奈。因此,對于通常的二進制CLP(FD)約束,上面的代碼并不是最通用的。
查看完整描述

3 回答

?
慕工程0101907

TA貢獻1887條經驗 獲得超5個贊

胡格爾不是很有用,但是是的!

foldcmpl

這是一種特殊的折疊形式,但不適用。length list一次少一次。

isSortedBy

它的名字并不是完全通用的,而是在它的簽名上。也許堅持使用最普通的名字也沒什么用。否則我們就到處都是實體?

定義如下:

isSortedBy函數返回True當且僅當謂詞返回列表中所有相鄰元素對的true。

也許:all_adjacent_pairs(R_2, Xs)..,這聽起來有點像循環構造adjacent_pair作為某種改性劑。


查看完整回答
反對 回復 2019-06-21
?
翻翻過去那場雪

TA貢獻2065條經驗 獲得超14個贊

mapadj/4在先前的回答中.。也許這個名字更好。

forallAdj(P_2,Xs) :-
   list_forallAdj(Xs,P_2).

list_forallAdj([],_).
list_forallAdj([X|Xs],P_2) :-
   list_forallAdj_prev(Xs,P_2,X).

list_forallAdj_prev([],_,_).
list_forallAdj_prev([X1|Xs],P_2,X0) :-
   call(P_2,X0,X1),
   list_forallAdj_prev(Xs,P_2,X1).

樣本使用:

:- use_module(library(clpfd)).
:- use_module(library(lambda)).

?- Ls = [0,_,_,_,_,_], forallAdj(\X0^X1^(X0 + 1 #= X1), Ls).
Ls = [0, 1, 2, 3, 4, 5].

那能帶我們去哪?

  • forallAdj => existAdj

  • 可能有索引的變體(

    forallAdjIexistAdjI

    )像.

    List模塊(F#)

  • findfirstAdj/pickfirstAdj

    也像F#

    find/pick


查看完整回答
反對 回復 2019-06-21
  • 3 回答
  • 0 關注
  • 743 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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