我希望在我的当前prolog程序中能够尽快查找术语的存在,而无需prolog引擎遍历所有术语直到它最终到达现有术语。
我没有找到任何证据...但我认为,假定给定
animal(lion).
animal(zebra).
...
% thousands of other animals
...
animal(tiger).
为了确认动物(老虎)在我的prolog数据库中,swi-prolog引擎将不得不浏览数千只动物来尝试与老虎统一。
在其他语言中,我相信HashSet可以解决这个问题,实现O(1)查找......然而,在swi-prolog文档中似乎找不到任何hashsets或hashtables。
是否有适用于hashsets的swi-prolog库,或者是否可以使用term_hash\2自己构建它?
额外信息:我很可能需要在一些动态添加的数据上进行查找,可以使用hashset数据结构或assertz。