Data structures 什么是自调整数据结构?

Data structures 什么是自调整数据结构?,data-structures,Data Structures,“自我调整”数据结构是什么意思?它们与其他数据结构有何不同?它们在哪里使用 编辑:如果执行插入和删除以外的操作,为什么要调整数据结构?自调整数据结构是一种在提交操作时可以重新安排自身的结构。有时他们会广泛地或最少地重新安排自己 例如,每次插入或删除节点时都要进行平衡,以确保树作为一个整体是平衡的,从而保证以插入和删除为代价进行快速检索 非自调整结构的一个例子是一个朴素的二叉树,在该二叉树中,无论树发生什么情况,节点都会停留在它们第一次插入的位置 附录:其他结构根据阅读进行调整,而不是插入或删除。

“自我调整”数据结构是什么意思?它们与其他数据结构有何不同?它们在哪里使用


编辑:如果执行插入和删除以外的操作,为什么要调整数据结构?

自调整数据结构是一种在提交操作时可以重新安排自身的结构。有时他们会广泛地或最少地重新安排自己

例如,每次插入或删除节点时都要进行平衡,以确保树作为一个整体是平衡的,从而保证以插入和删除为代价进行快速检索

非自调整结构的一个例子是一个朴素的二叉树,在该二叉树中,无论树发生什么情况,节点都会停留在它们第一次插入的位置


附录:其他结构根据阅读进行调整,而不是插入或删除。这些结构可以是高级的,可以收集大量关于访问的统计数据,也可以是更具启发性的。这些结构的目标是在过去阅读的基础上提高阅读速度。这种结构的一个常见示例是,最近访问的数据访问速度比尚未访问的数据快。

我找到了关于这类数据结构的好讲稿。这是Eric Demaine在麻省理工学院的高级数据结构课程:
在这种情况下,“自我调整”还有另一种含义。您可能有一个数据结构(比如说一个最小堆),给定一组输入数据,它提供一些输出值,比如最小元素。通常,您希望在输入数据中做一些小的更改,然后更新堆以交付新的最小元素。理想情况下,您希望这样做的时间与更改的大小成比例,而不是与堆的总大小成比例

自调整数据结构支持这种类型的“修改输入,增量地重新计算输出”行为。看


在某些方面,这与函数式反应式编程有关,后者的共同目标是高效的依赖项跟踪和增量计算。

对于您的数据来说,它们就像吊杆!它是重写自身以预测您需求的代码。还有,天网。谢谢。但在执行插入或删除以外的操作时,为什么数据结构需要调整?@kunjaan:这取决于结构。一个结构可能会记录它是如何被访问的,根据这些记录计算统计数据,并以最常见的访问方式重新安排自己以更快的速度被访问。一个简单的例子是缓存,缓存中根据访问而不是插入或删除来存储不同的数据例如,可以是一个链表,其中跟踪每个节点在搜索中的定位次数,并对列表进行重新排序,以将搜索频率最高的节点移到列表的前面。@Lance:谢谢。Eric的笔记中也讨论了这一点(链接如下)