我希望能夠在當前的prolog程序中儘可能快地查找一個術語的存在,沒有prolog引擎遍歷所有術語,直到它最終達到現有術語。O(1)term look up
我還沒有發現它的任何證據。但我認爲,鑑於
animal(lion).
animal(zebra).
...
% thousands of other animals
...
animal(tiger).
的SWI-Prolog的發動機將要經過數以千計的動物試圖與老虎統一的,以確認動物(老虎)在我的序言數據庫中。
在其他語言中,我相信HashSet可以解決這個問題,使O(1)查找...但是我似乎無法在swi-prolog文檔中找到任何哈希集或哈希表。
是否有一個用於哈希集的swi-prolog庫,或者我可以用term_hash \ 2自己構建它嗎?
獎金的信息,我將最有可能不得不做一些動態添加數據的查找,或者加入到HashSet的數據結構或使用assertz
不過你可能會介意一些注意事項。 「動物(老虎)」在O(1)中,但「動物(X),X =老虎」在O(n)中。 – repeat 2015-03-25 17:52:46