Perlで完備辞書(Fully Indexable Dictionary)のモジュールを書いた

ウェーブレット木/行列など「高速文字列解析の世界」で扱っているデータ構造やアルゴリズムは完備辞書(Fully Indexable Dictionary)を基本的な道具として用いるものが多い。
とはいえ実用的な完備辞書を一から作るのは大変なので、高速文字列本を読んで「ちょっとウェーブレット行列を作ってみようかな」と思ったとしても完備辞書は適当なモックで済まさないといけなかったりして面白くない。
というわけでPerlモジュールを書いた。

https://github.com/echizentm/FullyIndexableDictionary


例えば以下のような感じ。これでLOUDSもウェーブレット行列もさくさく作れますね!

use FullyIndexableDictionary;
my $fid = FullyIndexableDictionary->new();
$fid->set(1, 1);
$fid->set(4, 1);
$fid->set(7, 1);
$fid->build();

print $fid->rank(5, 1)."\n";  # 2
print $fid->select(1, 1)."\n";  # 4