存在量化の使用法を理解しようとしています。私が今知っていることは、このテクニックがsetof
、findall
、 で使用されていることbagof
です。さらに、チュートリアルを見つけました。Vars^Goal
ただし、 Prolog で (存在量の定量化) をいつ、どのように行うかはわかりません。
L
ここに例を示します。私の目標は、お互いを知っているが別の会社で働いている 2 人の従業員を見つけ、その結果を次のようにバインドすることName1-Name2
です。
company('Babbling Books', 500, 10000000).
company('Crafty Crafts', 5, 250000).
company('Hatties Hats', 25, 10000).
employee(mary, 'Babbling Books').
employee(julie, 'Babbling Books').
employee(michelle, 'Hatties Hats').
employee(mary, 'Hatties Hats').
employee(javier, 'Crafty Crafts').
knows(javier, michelle).
私の最初の本能は、クエリを使用することです
?-employee(N1,C1),employee(N2,C2),C1\=C2,knows(N1,N2).
クエリは答えを見つけましたが、正しい形式にレンダリングしません。正しいものは次のとおりです。
?-setof(N1-N2, (C1,C2)^(employee(N1,C1),employee(N2,C2),C1\=C2,knows(N1,N2)), L).
どうすれば理解でき(C1,C2)^(employee(N1,C1),employee(N2,C2),C1\=C2,knows(N1,N2))
ますか?また、そのコンセプトは何ですか?ありがとう。