Wavelet Matrix 概要

長さ $n$ の静的な配列 $v$ に対して色々な区間クエリを高速で捌くことが出来るデータ構造. 比較的最近(2012年)開発された. Wavelet Tree のデータの持ち方を木から行列にしたことで実装を簡単にしたもの.

実装次第で捌けるクエリのバリエーションは異なるが,この勉強会では最低限のみを扱う. 末尾に追加で出来ることをいくつか記載する.

今日の講義では一貫して $\sigma \coloneqq \lfloor\log_2 \max(v)\rfloor + 1$(つまり $\max(v)$ を表す bit 長)とします. 例えば $v=[5,4,5,5,2,1,6,5,1,3,5,0]$ の場合は $\sigma = 3$.(6 は二進法で 110 なので)

ただし $v$ はあらかじめ座圧されて非負整数列になっているとする.(従って $\sigma \lesssim \log_2 n$)

BitCumulativeSum

長さ $n$ の静的な bit 列 $b$ に対して以下(累積和)が出来るデータ構造