私の意図は、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
しました。C
B
C
A
B
trusts(A, B) :-
trust_direct(A, B).
trusts(A, C) :-
trusts(A, B),
trusts(B, C).
述語はたとえばtrue
fortrusts(p1, p2)
またはを返しますが、すでに を返しています。trusts(p1, p5)
trusts(p5, p6)
ERROR: Out of local stack
Prolog はスタックをこれほど速くフラッディングしますか?
または、私のアイデア/実装がtrusts
悪い/無駄なシステムメモリですか?