知識庫走出一個無限循環的序言中我使用:如何使用蓄電池
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