1

私の意図は、Prolog で推移性の簡単な例を (自分用に) 実装することでした。

これらは私の事実です:

trust_direct(p1, p2).
trust_direct(p1, p3).
trust_direct(p2, p4).
trust_direct(p2, p5).
trust_direct(p5, p6).
trust_direct(p6, p7).
trust_direct(p7, p8).
trust_direct(p100, p200).

私はこの述語を書いて、 trusts かどうかを確認Aしました。CBCAB

trusts(A, B) :-
    trust_direct(A, B).

trusts(A, C) :-
    trusts(A, B),
    trusts(B, C).

述語はたとえばtruefortrusts(p1, p2)またはを返しますが、すでに を返しています。trusts(p1, p5)trusts(p5, p6)ERROR: Out of local stack

Prolog はスタックをこれほど速くフラッディングしますか?

または、私のアイデア/実装がtrusts悪い/無駄なシステムメモリですか?

4

1 に答える 1