我的目的是在 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).
我写了这个谓词来检查是否A信任C,只要有一个B信任C并A信任这个的,这就是真的B:
trusts(A, B) :-
trust_direct(A, B).
trusts(A, C) :-
trusts(A, B),
trusts(B, C).
谓词例如返回true或trusts(p1, p2),trusts(p1, p5)但trusts(p5, p6)已经返回ERROR: Out of local stack。
Prolog 会这么快地淹没堆栈吗?
还是我的想法/实施trusts不良/浪费系统内存?