我是Prolog的新手,现在我必须在Prolog中为RCC8演算/ Allen时间间隔代数实现路径一致性算法。
我正在努力解决基本问题。我的背景知识的一个小例子。这完全是关于给定的传递表并计算区域之间产生的约束:
tpp(a,b).
dc(b,c).
dc(A,C) :- dc(A,C).
dc(A,C) :- tpp(A,B), dc(B,C).
因此应该生成约束dc(a,c).
。整个算法:
Input: A network T
Output: A path consisten network
repeat
S <- T
for k:=1 to n do
for i,j := 1 to n do begin
Cij <- Cij UNION Cik COMPOSITION Ckj
until S = T
其中Cij是节点i和j之间的约束。例如,在BK tpp(a,b)的情况下。所以我的qeustion是,我正在编写一条规则来计算从传递表中得到的约束。我想从这样的事情开始:
comp([tpp(a,b), dc(b,c)], X).
哪些商店dc(a,c)
存储在X中,我得到X = [dc(a,c)]
。
我不知道这是不是正确的做法。我希望有一个规则,我给出一个约束列表,它计算所有结果约束。我习惯用Python和Java编程,现在我开始解决这个问题了。
非常感谢! :d