我的目的是在 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
不良/浪费系统内存?