Dynamic Finger Search Trees in Data Structure

Data Structure AlgorithmsAnalysis of AlgorithmsAlgorithms

  • A dynamic finger search data structure should in addition to finger searches also perform the insertion and deletion of elements at a position given by a finger.
  • Finger search trees is defined as a variant of B-trees supporting finger searches in O(log d) time and updates in O(1) time, assuming that only O(1) moveable fingers are maintained.
  • Traversing a finger d positions requires O(log d) time.
  • The finger search trees (that means AVL-trees, red-black trees) constructions either consider a fixed constant number of fingers or only support updates in amortized constant time.
  • Constructions supporting an arbitrary number of fingers and with worst case update have been created.
  • A search tree that supported updates at an arbitrary position in worst case O(1) time, but only supports searches in O(log n) time.
  • Constructions supporting O(log d) time searches and O(log d n) time insertions and deletions.
  • Finger search trees consume worst-case constant time insertions and O(log d n) time deletions.
  • According to a space efficient alternative solution to the level linked (2,4)- trees, a single finger is allowed, that can be proceeded by the same performance cost as (2,4)-trees. In the solution no level links and parent pointers are needed, instead a special O(log n) space data structure, hand, is created for the finger that allows the finger to be traversed efficiently.
  • Splay trees are defined as a class of self-adjusting binary search trees supporting searches, insertions and deletions in amortized O(log n) time. That splay trees can be implemented as efficient finger search trees.
  • Given an O(n) initialization cost, the amortized cost of an access at distance d from the previous access in a splay tree is O(log d) where accesses consist of searches, insertions, and deletions.
  • Notice that the statement only implements in the presence of one finger, which always points to the last accessed element.
  • All the above mentioned constructions can be applied on a pointer machine where the only operation allowed on elements is the comparison of two elements.
  • For the Random Access Machine model of computation (RAM), a finger search tree is developed with constant update time and O(log d) search time. This result is achieved by tabulating small tree structures, but only performs the comparison of elements.
Published on 07-Jan-2020 15:59:21