我最近听说了 nedtries 并决定尝试实现它们,但我对它们的搜索操作的复杂性感到困扰;我无法忍受他们为什么要这么快。
据我了解,他们的搜索操作的预期复杂度应该是 O(m/2),其中 m 是密钥的大小(以位为单位)。如果将其与传统二叉树中搜索操作的复杂性进行比较,您会得到:log2(n) >= m/2
让我们的密钥长度为 32 位:log2(n) >= 16 <=> n >= 65536
所以 nedtries 应该比从 65536 个项目开始的二叉树更快。然而,作者声称它们总是比二叉树快,所以要么我对它们复杂性的假设是错误的,要么在搜索的每一步执行的计算在 nedtrie 中要快得多。
那么,它呢?