什么是自调整数据结构?

时间:2009-05-20 01:05:04

标签: data-structures

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

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

3 个答案:

答案 0 :(得分:8)

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

例如,AVL trees每次插入或删除节点时都会自行平衡,以确保整个树平衡,从而保证以插入和删除为代价快速检索。

非自调整结构的一个例子是一个天真的二叉树,无论树发生什么,节点都会保留在第一次插入的位置。

附录:其他结构根据阅读自行调整,而不是插入或删除。这些结构可以提前并收集大量有关访问的统计信息,或者它们本质上可以更具启发性。这些结构的目标是根据过去阅读的内容加快阅读速度。这种结构的一个常见例子是cache,其中最近访问的数据比尚未访问的数据访问速度更快。

答案 1 :(得分:1)

我发现了关于这些数据结构的好的讲义。这是来自麻省理工学院Eric Demaine的高级数据结构课程: http://courses.csail.mit.edu/6.851/spring07/scribe/lec01_2.pdf

答案 2 :(得分:1)

在这种情况下,还有另一种“自我调整”的含义。您可能有一个数据结构(比如说是一个最小堆),在给定一组输入数据的情况下,它提供一些输出值,例如最小元素。您通常希望对输入数据进行少量更改,并更新堆以提供新的最小元素。理想情况下,您希望按照与更改大小成比例的时间执行此操作,而不是堆的总大小。

自调整数据结构支持这种类型的“修改输入,逐步重新计算输出”行为。请参阅this recent paper from PLDI '10

在某些方面,这与功能性反应式编程有关,它与高效的依赖性跟踪和增量计算共享目标。