タグ

関連タグで絞り込む (2)

タグの絞り込みを解除

データ構造に関するjuno_cのブックマーク (3)

  • Wavelet Tree - naoyaのはてなダイアリー

    圧縮全文索引の実装などでしばしば利用される Rank/Select 辞書と呼ばれるデータ構造があります。詳しくは参考文献を参照していただくとして、今回は一般の文字列に対して効率的に Rank/Select を可能とするデータ構造である Wavelet Tree (ウェーブレット木) のライブラリを作りました。 http://github.com/naoya/perl-algorithm-wavelettree/tree/master my $wt = Algorithm::WaveletTree->new("abccbbabca"); is $wt->rank(6, 'a'), 2; is $wt->rank(6, 'b'), 3; is $wt->rank(9, 'b'), 4; is $wt->select(0, 'a'), 0; is $wt->select(1, 'a'), 6;

    Wavelet Tree - naoyaのはてなダイアリー
  • ウェーブレット木を習得したのでメモしておくよ - EchizenBlog-Zwei

    ウェーブレット木を習得したので忘れないうちにメモ。 参考: 高速かつ省メモリで文字列を扱うデータ構造「wavelet tree」 まずウェーブレット木の目的は文字列に対してrank()、select()を可能にすること。select()はrank()の逆関数で二分探索によって実装できるので、以下rank()についてのみ考える。 rank(pos, 1)はビットベクトルに対して定義される関数で、先頭のpos個で1のビットの個数を数えるというもの。rank(pos, 0)なら0のビットを数える。例えば ビットベクトル:10110010 rank(1,1) = 1 rank(5,1) = 3 rank(2,1) = 1 rank(6,1) = 3 rank(3,1) = 2 rank(7,1) = 4 rank(4,1) = 3 rank(8,1) = 4となる。で、この操作を文字列に拡張したい

    ウェーブレット木を習得したのでメモしておくよ - EchizenBlog-Zwei
  • DSIRNLP#1で発表しました「TRIEにトライ!〜今日からはじめるTRIE入門〜」 - EchizenBlog-Zwei

    昨日開催された「第1回 データ構造と情報検索と言語処理勉強会(DSIRNLP)」に発表者として参加しました。主催者の@overlastさん、発表者の皆さん、ボランティアの皆さん、会場を提供してくださったミクシィさん、そして発表を聞いてくださった皆さん。どうもありがとうございました。 また発表スライドについては@overlastさん、@uchumikさん、@machyさん、@nokunoさんにチェックして頂きました。特に@uchumikさん、@machyさんより頂いた意見のおかげでスライドの質が向上しました。ありがとうございました。 発表スライド: (scribdのembedがうまくいかなかったので暫定的にリンクおいておきます) TRIEにトライ!〜今日からはじめるTRIE入門〜 記事では質疑応答でフォローしきれなかった部分を中心に、私の発表の補足的なものを書いて行きます。 会のまとめ的な

    DSIRNLP#1で発表しました「TRIEにトライ!〜今日からはじめるTRIE入門〜」 - EchizenBlog-Zwei
  • 1