3
我在Prolog看過家族樹的各種實現,但是我還沒有找到一個做我想做的事情,那就是通過引用彼此來定義孩子和父母。 我想這樣做,因爲有時我有一個事實,即某人是某個人的孩子,而在其他時候,我有這樣的事實,即某人是某人的父母。從這兩種事實中,我希望能夠問誰是父母,誰是孩子。家族樹中的相互參照Prolog規則
我在編碼這樣的嘗試是: -
parent(mary, fred).
child(john, peter).
child(paul, peter).
parent(P, C).
parent(P, C) :- child(C, P).
child (C, P).
child(C, P) :- parent(P, C).
這似乎是工作,只是它會不斷地給我重複一遍又一遍相同的結果確定。例如: -
[3] ?- parent(peter, X).
true ;
X = john ;
X = paul ;
true ;
X = john ;
X = paul ;
true
有沒有一種方法可以讓我得到它停止它給了我之後的全套結果的一次?
更一般地說,這種定義是一種想要做的奇怪事情(因爲相互遞歸)?據報道,我希望能夠得到父母或小孩的事實,但也可以從中推斷出「相反」的關係。
謝謝!
完美!謝謝 :) – guraaku