我正在使用的知识库:
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).
我试图解决的问题:
假设您在事实“connected(3,4)”的正下方添加“connected(4,3)”。运行查询 ?- path(3,2) 会导致一个循环并且不会终止。使用累加器修改 path/2 以存储已经访问过的点,以便在计算路径时永远不会重新访问同一点。然后再次运行查询 ?- path(3,2)。
我在这里遇到的麻烦是我对 Prolog 很陌生,我之前实际上没有使用过累加器(据我所知),因此我不确定如何继续。如果有人可以向我解释我必须采取的步骤,那就太好了。
另外,我看到很多后面带有“/ 2”的东西 - 关于这通常意味着什么的任何解释?
干杯。