例如,如果我向地图添加两个条目:(2-> 1)和(1-> 3),则地图将包含:(2-> 3)和(1-> ; 3)
我不需要删除任何内容,在我添加了我关注的所有映射后,我只对迭代所有条目感兴趣。
答案 0 :(得分:1)
我认为您正在寻找可达性索引,就像在图数据库中使用的那样。您的号码变为“节点”,地图中的条目就是“边缘”。'然后,传递性在图中变为可达性。
一个这样的索引是GRAIL,该文件还比较了一系列相关方法。
我不知道在实践中使用了什么。如果您的数据集很小,您可以采用强力方法:
我们假设您添加(1> 2),然后使用(2> x)查找所有条目并为每个条目添加条目(1> x)。不需要递归,因为(2-> x)应该已经是一个传递集。
答案 1 :(得分:1)
听起来很像union-find。
动态连接。输入是一对整数,其中每个整数表示某种类型的对象,我们将解释对p q,意思是p连接到q。我们假设“与...相关”是一种等价关系:
对称:如果p连接到q,则q连接到p。
传递:如果p连接到q并且q连接到r,则p连接到r。
reflexive :p连接到p。