我正在尝试设计一种数据结构,允许从其内容的一部分中有效地提取条目。
假设我正在寻找符合此条目的条目:[
x 2 3 x x ]
如果[
0 2 3 4 5 ]
或[
3 2 3 7 8 ]
在我的数据结构中,它们应该由我的find函数返回。
我编写了这样一个数据结构,我将“模式”与数据结构的所有条目进行比较,但当然需要花费太多时间。关于如何以更快的方式做到这一点,我几乎没有什么想法,但实施起来相当繁重。这样的事情已经存在吗?如果没有,你会怎么做?
答案 0 :(得分:5)
首先想到的是为元组中的每个位置设置一个哈希表。对于搜索,您将使用指定值与所有位置的结果相交。
答案 1 :(得分:4)
嗯,Suffix tree可以在O(1)中完成,但这需要很多记忆。
答案 2 :(得分:2)
您尝试实施的内容与tuple space非常相似。
答案 3 :(得分:0)
您可以查看RETE算法。这个一般性问题出现在70年代的AI系统中; Paradigms of AI Programming中的第14章介绍了它。 (IIRC主要阐述了蓝星的答案和决策树。)