이 질문에 대해 유감스럽게 생각합니다. 그러나 Prolog에서 프로그래밍 한 이후로 많은 도움이되었습니다. 나는 필사적 패러다임에 익숙하다고 생각합니다. :-(나는 프롤로그 관계에서 itemsets 얻기 위해 노력하고트랜잭션에서 효율적으로 프롤로그를 사용하여 항목 세트를 얻는 방법이 있습니까?
: 나는 주 (X)를 참조하면 내가 얻을 싶은 그런
% transaction(Time, Client, Item)
transaction(1, 2, 10).
transaction(1, 2, 20).
transaction(2, 5, 90).
transaction(3, 2, 30).
transaction(4, 2, 40).
transaction(4, 2, 60).
transaction(4, 2, 70).
transaction(5, 4, 30).
transaction(5, 3, 30).
transaction(5, 3, 50).
transaction(5, 3, 70).
transaction(5, 1, 30).
transaction(6, 1, 90).
transaction(6, 4, 40).
transaction(6, 4, 70).
transaction(7, 4, 90).
% Transformation of transactions to Lists of items per Time per Client.
transaction2(Time, Client, List) :-
setof(Item, Time^Client^transaction(Time, Client, Item), List).
% Itemsets.
itemsets :-
transaction(Time, Client, _),
transaction2(Time, Client, List),
assert(init(List)).
% Main:
main(Itemsets) :-
itemsets,
setof(Basket, init(Basket), Itemsets),
retractall(init(Basket)).
을 :
X = [[10, 20], [30], [30, 50, 70], [40, 60, 70], [40, 70], [90]]
난 그냥 이 작업을 수행하는 올바른 방법을 알아낼 수 없습니다.
012 3,516,Bests,
B.
안녕하세요! 고마워요! 바로 작동했습니다. setof와 Nil에 대해 더 자세히 알 수있는 곳은 어디입니까? 나는 더 나은 setof를 이해하기 위해 SWI Prolog와 XSB 매뉴얼을 읽었지 만, 나는 예제들에 대해 더 깊은 설명이 필요하다고 생각한다. Google은 도움이되지 않았습니다. 어쩌면 나는 적당한 키워드를 사용하고 있지 않다 ... –
bagof/3를 찾으십시오. 많은 정보는 없지만 몇 가지 예를 배우는 법을 배울 것입니다. – gusbro
+1 to gusbro. @비. 솔라노 : [* LPN *] (http://cs.union.edu/~striegnk/learn-prolog-now/html/node97.html#subsec.l11.bagof)에서 'bagof/3' 섹션을 읽고, 'setof/3'의 다음 절. –