Prolog:将传递关系的结果存储到列表中

时间:2018-05-11 17:18:27

标签: graph prolog graph-algorithm reasoning

我是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

0 个答案:

没有答案