阅读 this post about BK Trees ,我发现以下片段有点令人困惑:



我可以直观地看到,如果 d 远离我正在搜索的单词,并且我可以容忍 n 错误,那么我至少需要与我所在单词的 d-n 距离才能“逆转”差异。同样,我最多可以拥有 d+n,因为在“逆转”差异之后,我可以引入更多差异。

我很困惑如何使用三角不等式来得到这个。如果我们让 d(test, query) = d 和 d(query, found)

d(test, query) + d(test, nextWordToSearch) >= d(query, found)
d + d(test, nextWordToSearch) >= n

我们怎样才能找到
d - n <= d(test, nextWordToSearch) <= d + n

最佳答案

使用@templatetypedef 的答案,我能够使用三角不等式来找到上限和下限。

d(query, desiredNode) = n
d(query, test) = d1

d(query, test) + d(test, desiredNode) >= d(query, desiredNode)
d1 + d(test, desiredNode) >= n
d(test, desiredNode) >= |n - d1|

d(test, query) + d(query, desiredNode) >= d(test, desiredNode)
|d1 + n| >= d(test, desiredNode)

因此:
|d1 + n| >= d(test, desiredNode) >= |d1 - n|

由于非负度量的属性而使用绝对值。

关于string - 从三角不等式了解 BK 树 : How do we derive the (d-n, d+n) 范围?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/34842803/

10-10 06:44