大家好我有问题
我有一张非定向图enter image description here
我已经以节点(name,[path])的形式列出了每个节点。 其中具有多个路径的节点是node(name,[pathName,path])。 //但是路径可能与节点相交。
>node(giant,[sizePath]).
>node(large,[sizePath]).
>node(big,[sizePath]).
>node(a0,[numPath,alphabetPath]).
>node(1,[numPath]).
>node(2,[numPath]).
>node(3,[numPath]).
>node(b,[alphabetPath]).
>node(c,[alphabetPath]).
>node(d,[alphabetPath]).
然后我写了一条说明
的规则samePath(Node1,Node2,PathName):-node(Node1,PathName),node(Node,1PathName).
如果我使用值
samePath(2,3,PathName)
,我会得到输出true; numLine.
但是,如果我使用值
samePth(A0,1,PathName)
,我应该true; numLine.
但是我得到了
true; fail.
因为它不会仅列出两个列表中匹配的元素
答案 0 :(得分:0)
您正在比较列表而不是列表元素 - 要使其正常工作,您应该修改samePath以阅读
samePath(Node1,Node2,PathName) :-
node(Node1,Paths1),
node(Node2,Paths2),
member(PathName,Paths1),
member(PathName,Paths2).
这将统一PathName与两个列表中的任何路径。