Computer >> Computer tutorials >  >> Programming >> Programming

Dynamic Finger Search Trees in Data Structure


  • 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.