知识库走出一个无限循环的序言中我使用:如何使用蓄电池
connected(1,2).
connected(3,4).
connected(5,6).
connected(7,8).
connected(9,10).
connected(12,13).
connected(13,14).
connected(15,16).
connected(17,18).
connected(19,20).
connected(4,1).
connected(6,3).
connected(4,7).
connected(6,11).
connected(14,9).
connected(11,15).
connected(16,12).
connected(14,17).
connected(16,19).
的问题,我试图解决:
假设你添加“连接(4,3)“紧接事实 ”连接(3,4)“。运行查询? - 路径(3,2)产生一个循环 并且不终止。使用累加器修改路径/ 2以存储 已经访问的点,以便在计算路径时不会再次访问相同点 。然后再次运行查询? - 路径(3,2)。
我在这里遇到的麻烦是我对Prolog很新,我没有实际使用过累加器(据我所知),因此我不确定如何进行。如果任何人都可以向我解释我必须采取的步骤,那就太好了。
此外,我看到很多“/ 2”之后的东西 - 任何解释,这一般意味着什么?
干杯。
你应该显示你的'path/2':它看起来是被定义的,但它不在你的问题中。 “'/ 2”代表仿函数的_arity_(参见这里:http:// www。swi-prolog.org/pldoc/man?section=glossary)。而且,如果你使用“prolog accumulator”,你会得到相当多的关于这个话题的信息。 – 2015-02-09 13:07:48
请参阅[这些答案](http://stackoverflow.com/search?q=%5Btransitive-closure%5D+%5Bprolog%5D+closure0) – false 2015-02-09 17:36:55