我试图解决的问题在这个问题中得到了解释:
Finding the single nearest neighbor using a Prefix tree in O(1)?
我的问题是关于问题页面中的建议解决方案部分在那一节中,我们提到了通过遍历从节点开始的树来从每个前缀树中找到最近的邻居。如果一个关键字存在于前缀树中,很好地查找,但得到的最相似的,我一点都不理解。如何做到这一点?
我希望如果有人能向我解释这一点,如果不是图形(这是首选),那么至少有一些细节。
编辑:
这是报纸的代码它是用python编写的,不幸的是,我以前从未使用过python。如果有人熟悉python,并且可以查找代码,看看他们如何使用前缀树找到最近的邻居。https://github.com/kykamath/streaming_lsh/blob/master/streaming_lsh/nearest_neighbor_lsh.py
https://github.com/kykamath/streaming_lsh/blob/master/streaming_lsh/classes.py

最佳答案

首先知道它们会遍历整棵树通过遍历整棵树,他们可以保证找到最相似的邻居。
为了在一般情况下更有效,使用树的dfs图遍历。注意,因为它是一棵树,所以不需要为访问的节点设置着色方案。
从最接近的对象作为null开始,并在树的根处开始。
对于每个节点,您应该按照子节点添加到编辑距离的顺序遍历子节点,并且仅当添加的编辑距离不大于到最近对象的距离时。例如,对于hamming距离,首先遍历将向总距离添加“O”的子对象,然后遍历将向总距离添加“1”的子对象但如果这样会使编辑距离大于当前最近距离,则不要遍历到“1”子对象。
在前缀树中遇到“word”时,请检查它与查询对象的距离是否小于最近的对象,并将其指定给最近的对象。

08-18 12:58