Data structures treap什么时候有用?

Data structures treap什么时候有用?,data-structures,treap,Data Structures,Treap,在什么样的情况下,treap是最佳的数据结构?我一直在寻找这个问题的答案,但没有找到任何具体的答案 还有另一个stackoverflow问题,询问何时使用treap,但没有给出实际示例 最常见的优势似乎是,它们比例如红黑树更容易实现,但几乎所有人都使用预先编写的实现,因此它似乎没有那么重要。在随机算法类中用作示例是一种最佳的数据结构 好吧,撇开浮躁不谈,阿拉贡和赛德尔提出的狭隘优势包括以下几点 它们很简单。是的,您的标准库可能有一个红黑树可用,但它可能没有提供足够的钩子来完成一些可以用二进制搜

在什么样的情况下,treap是最佳的数据结构?我一直在寻找这个问题的答案,但没有找到任何具体的答案

还有另一个
stackoverflow
问题,询问何时使用treap,但没有给出实际示例


最常见的优势似乎是,它们比例如红黑树更容易实现,但几乎所有人都使用预先编写的实现,因此它似乎没有那么重要。

在随机算法类中用作示例是一种最佳的数据结构

好吧,撇开浮躁不谈,阿拉贡和赛德尔提出的狭隘优势包括以下几点

  • 它们很简单。是的,您的标准库可能有一个红黑树可用,但它可能没有提供足够的钩子来完成一些可以用二进制搜索树完成的有趣的事情(例如,顺序统计)。拆分和合并也要简单得多

  • 它们使用的空间比红黑树略少,假设优先级是通过散列键来计算的。在实践中,如果红黑树可以窃取颜色的指针位,这并不重要

  • 它们可能比红黑树快。我也没有寻找任何证据

最大的缺点是性能保证仅在预期范围内。人们从哈希表中学到了一条艰难的道路,即随机算法分析中假设的健忘对手在现实世界中通常不会那么健忘


我认为公平地说,treaps是一个有趣的想法,但最终没有产生太多实际影响。这是研究。发生这种情况。

Treaps的一个非常不寻常的特性是,它们对插入/删除的顺序不敏感

由于插入/删除是基于随机优先级进行的,因此,如果将$n$元素添加到空的treap,则无论插入的顺序如何,treap看起来都完全相同


因此,对手无法查看treap并找出元素插入的顺序。

当我没有具体问题,但想知道何时应首选数据结构时,通常与时间和空间复杂性有关,我只看到wiki页面。他们告诉你最糟糕的、一般的情况。只需与其他人的wiki页面进行比较