Is there any practical application of Tango Trees?
平衡二进制搜索树提供了一个O(log(n))保证的搜索时间。
探戈树实现了对O(log(log(n))的搜索,同时牺牲了每个节点的少量内存。虽然我从理论上理解,log(n)和log(log(n))有很大的不同,但对于大多数实际应用来说,它几乎没有优势。
例如,即使对于像n = 10^20这样的巨大数字(比如几千千兆字节),log(n) = 64和log(log(n)) = 6之间的差异也可以忽略不计。探戈树有什么实际用途吗?
- 我不认为一个数量级(64/6)是"相当微不足道的"。
- @Paulr这个数量级是在搜索10^20个元素时获得的。为了得到一个人能注意到的差异(1秒),我需要一个比10^1000高的数字。
- 如果你正在处理一个常规的问题,这绝对是微不足道的。如果你在做一些需要大量(非常巨大)数据的计算,那么也许。
- @克里斯请仔细看这个问题。如果你甚至取宇宙中的原子数(n=10 ^ 81),则EDCOX1〔0〕和EDCX1〔1〕的差别可忽略不计。
不,用八字树代替。
探戈树不给你O(log log n)最坏情况查找——平均情况是我想O(log n log log n)。他们所做的最多是运行O(log log n)倍,比使用Oracle执行旋转以优化访问模式的二进制树慢。
八字树的运行速度可能比上述理论神奇树慢0(1)倍——这是动态最优性猜想。八字树比探戈树简单得多,而且启动时的常数系数也更低。我无法想象一个实际的应用程序,探戈树保证将是有用的。