我想在集合或多集中存储(大约100到1000个)<Object A, Relation R, Object B>
类型的不同关系。我希望能够搜索A
和(A,R)
,但不能搜索(A,R,B)
(并且只有少数(&lt; 5)关系可以搜索A
R
}和A
,所以线性搜索,如果罚款,那么。)
最好将关系存储在一个集合中(按R
,B
和A
排序),还是将它们存储在由R
和{{1}}排序的多集合中{1}}?
编辑: 我查看了哈希表,但是它们的迭代不如(有序)设置迭代那么快,并且模式匹配也需要大量的迭代。 (它必须搜索一次以找到迭代的开始,然后迭代直到完成与同一对象A的所有关系。)
谢谢, 拉格纳
答案 0 :(得分:0)
从我收集的评论中,您必须为A或对(A,R)查找完全匹配。
如果这是正确的,你可以做的最好的事情是使用两个哈希表:一个用A作为键,另一个用(A,R)作为键。关系本身可以存储在未排序的向量中,索引将它们插入到两个哈希表中。这是您为查找任务获得O(1)复杂性的唯一方法。
对于性能至关重要的是,您有两个独立的索引结构:如果您只使用A作为键,您将获得在查找(A,R)对时必须搜索合适R的对象列表。在相反的情况下,如果您只有(A,R)键,则在O(1)时间内您将无法仅查找某个A。