Exponential tree | |
Type: | tree |
Invented By: | Arne Andersson |
Invented Year: | 1995 |
Space Avg: | O(n) |
Space Worst: | O(n) |
Search Avg: | O(min(log n/log w+ log log n, log w log log n)) |
Search Worst: | O(min(log n/log w+ log log n, log w log log n)) |
Insert Avg: | O(min(log n/log w+ log log n, log w log log n)) |
Insert Worst: | O(min(log n/log w+ log log n, log w log log n)) |
Delete Avg: | O(min(log n/log w+ log log n, log w log log n)) |
Delete Worst: | O(min(log n/log w+ log log n, log w log log n)) |
An exponential tree is a type of search tree where the number of children of its nodes decreases doubly-exponentially with increasing depth. Values are stored only in the leaf nodes. Each node contains a splitter, a value less than or equal to all values in the subtree which is used during search. Exponential trees use another data structure in inner nodes containing the splitters from children, allowing fast lookup.
Exponential trees achieve optimal asymptotic complexity on some operations. They have mainly theoretical importance.
An exponential tree is a rooted tree where every node contains a splitter and every leaf node contains a value. The value may be different from the splitter. An exponential tree with
n
\Theta(n1/k)
\Theta(n1-1/k)
An additional condition is that searching for a value using the splitters must yield the correct node (i.e. the one containing the value). Therefore, if a root of a subtree contains the splitter
s
s'
[s,s')
The tree uses a static data structure in every inner node to allow fast lookup of values. It must be possible to build this structure with
d
O(dk-1)
S(d)
A Fusion tree can be used as this data structure.
The exponential tree can be searched in the same way as a normal search tree. In each node, the local data structure can be used to find the next child quickly.
Let
T(n)
T(n)\leT(n1-1/k)+O(S(n))