很抱歉问这个问题,但自从我在 Prolog 中编程以来已经很多了。我想我习惯了命令式范式。:-(
我正在尝试从 Prolog 关系中获取项集:
% 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)).
然后,如果我咨询 main(X) 我想获得:
X = [[10, 20], [30], [30, 50, 70], [40, 60, 70], [40, 70], [90]]
我只是想不出一个正确的方法来做到这一点。
如果我能得到一个指针或一点帮助,我将非常感激。
最好的,
B.