Balanced binary search tree提供O(log(n))
保证搜索时间。
Tango trees实现了对O(log(log(n))
的搜索,同时损害了每个节点的少量内存。虽然我理解从理论的角度来看log(n)
和log(log(n))
会产生巨大的差异,但对于大多数实际应用来说,它几乎没有任何优势。
例如,即使对于像n = 10^20
这样的巨大数字(几千千兆字节),log(n) = 64
和log(log(n)) = 6
之间的差异也可以忽略不计。那么Tango树有什么实际用途吗?
答案 0 :(得分:3)
tl; dr:不,请改用展开树。
Tango树不会给你O(log log n)最坏情况查找 - 平均情况是我认为O(log n log log n)。他们所做的最多是运行O(log log n)次,这比带有oracle的二叉树运行得更快,以便优化访问模式。
Splay树的运行速度可能比前面提到的理论魔术树慢O(1)倍 - 这就是动态最优性猜想。 Splay树比探戈树简单得多,并且具有较低的恒定因子来启动。我无法想象探戈树保证会有用的实际应用。