Processing math: 29%

The MkTreapTable functor

« 210 Library Documentation

Overview

functor MkTreapTable (structure Key : HASHKEY) :> ORDTABLE where Key = Key and Seq = ArraySequence

Implements tables and sets as treaps. Also implicitly ascribes to TABLE.

MkTreapTable-Specific Behavior

The functions range, toString, and toSeq each produce elements in increasing key-sorted order.

ORDSET and ORDTABLE Cost Specifications

The following costs assume that the work and span of Key.compare (and in the case of insertWith, of $f$) are constant.

Work Span
size $T$ O(1) O(1)
toSeq $T$
domain $T$
range $T$
O(|T|) O(log|T|)
find $T\ k$
insertWith $f\ (T, (k, v))$
insert $(T, (k, v))$
delete $(T, k)$
O(log|T|) O(log|T|)
tabulate $f\ X$ kXW(f(k)) O(log|X|)+max
collect $S$
fromSeq $S$
O(|S|\log|S|) O(\log^2|S|)
map $f\ T$
filter $f\ T$
\sum_{(k \mapsto v) \in T} \mathcal{W}(f(v)) O(\log|T|) + \max_{(k \mapsto v) \in T} \mathcal{S}(f(v))
mapKey $f\ T$
filterKey $f\ T$
\sum_{(k \mapsto v) \in T} \mathcal{W}(f(k,v)) O(\log|T|) + \max_{(k \mapsto v) \in T} \mathcal{S}(f(k,v))
first $T$
last $T$
prev $T$
next $T$
rank $(T, k)$
select $(T, i)$
split $(T, k)$
splitRank $(T, i)$
getRange $T\ (k_1, k_2)$
O(\log|T|) O(\log|T|)
join $(T_1, T_2)$ O(\log(|T_1| + |T_2|)) O(\log(|T_1| + |T_2|))

For iterate and iteratePrefixes, $(k_i \mapsto v_i)$ is the $i^\text{th}$ smallest key-value mapping.

Work Span
reduce $f\ b\ T$ $\mathcal{W}\big($Seq.reduce $f\ b\ ($range $T)\big)$ $\mathcal{S}\big($Seq.reduce $f\ b\ ($range $T)\big)$
iterate $f\ b_0\ T$ \sum_{i=0}^{|T|-1} \mathcal{W}(f(b_i,(k_i,v_i))) \sum_{i=0}^{|T|-1} \mathcal{S}(f(b_i,(k_i,v_i)))
iteratePrefixes $f\ b_0\ T$ \sum_{i=0}^{|T|-1} \mathcal{W}(f(b_i,(k_i,v_i))) \sum_{i=0}^{|T|-1} \mathcal{S}(f(b_i,(k_i,v_i)))

For the following functions which take an argument pair $(A, B)$, assume that $n = \max(|A|, |B|)$ and $m = \min(|A|, |B|)$. We also assume the work and span of $f$ are constant.

Work Span
union $f\ (X, Y)$
intersection $f\ (X, Y)$
difference $(X, Y)$
restrict $(T, X)$
subtract $(T, X)$
O\left(m\log\left(1+\frac{n}{m}\right)\right) O(\log(n+m))