タグ

suffix arrayに関するKesinのブックマーク (5)

  • Spaghetti Source - Suffix Array

    Suffix Array (Larsson-Sadakane) 説明 Suffix Arrayとは,与えられた文字列の接尾辞の集合を辞書順ソートしたものである.近年,これを用いることによって多くの文字列の問題が解かれることがわかってきた. Larsson-Sadakane は Suffix Array を O(n (log n)^2) 時間で構成するアルゴリズムである.Mamber-Myers と同様のアイデアによって文字列長を倍加させ,O(log n) 回の multikey quicksort を行うことにより,全体で O(n (log n)^2) の計算量を達成する.詳しくは適当な文献を参照. Suffix Array を用いて解けるもっとも典型的な問題は,文字列の検索である.Suffix Array 上で二分探索を行えば,O(m log n) でパターンの検索ができる.また,Suf

  • Suffix Array を作る - SA-IS の実装

    Suffix Array は今若者の間で人気のデータ構造です. マイ suffix array を実装することで,オシャレ度がアップしてモテ系になり,女子力も上がると言われています. その中でも今特に,手軽でクールな SA-IS (アルファベットサイズ固定の下で線形時間で省メモリで suffix array が作れる今最強のアルゴリズム) の実装がブームです. 僕もブームに便乗して,実装してみました. ところで,SA-IS は流行っているので,日語でもすでに様々なところで記事が書かれています (日付順). SAIS(Suffix Array - Induced Sorting) - EchizenBlog-Zwei SA-IS: SuffixArray線形構築 - sileの日記 SA-IS - (iwi) { 反省します - TopCoder部 接尾辞配列(Suffix Array)の

  • Suffix Arrayメモ - Negative/Positive Thinking

    はじめに Suffix Arrayあたりをちょっと調べてみたのでとりあえずメモ。 調べてみたら結構研究されていて全部まとめるのが面倒あとできちんと理解しておきたい。 Suffix Array(接尾辞配列)とは 文字列に対して、その文字列の接尾辞集合を辞書順ソートしたもの ここでの接尾辞集合は「abcd」という文字列の場合、以下の4つの接尾辞になる abcd bcd cd d これは各インデクスから最後までの部分文字列なので、元の文字列があればインデクスから部分文字列を得ることができる 与えられた文字列からある文字列が含まれるかどうかを検索したい場合、Suffix Arrayは辞書順に並んでいるので、2分探索することで高速に検索することができる 構築方法 普通のQuicksort 普通に文字列をソートする方法 QuicksortにO(n log n)、文字列比較にO(n)かかる Mamber

    Suffix Arrayメモ - Negative/Positive Thinking
  • 論文の息抜きにSuffixArray - kisa12012の日記

    2月上旬投稿予定の論文を書くのに疲れたので, 息抜きに非常に単純なSuffixArrayをPythonで実装してみました. ソースコード #!/usr/bin/python # -*- coding: utf-8 -*- import sys def createSA(text): """Create Suffix Array""" print "create SuffixArray" tlen = len(text) if (tlen == 0): return sa = [(text[i:], i) for i in range(tlen)] sa.sort() for i in range(len(sa)): print i, "\t", sa[i][1], "\t", sa[i][0] return sa def searchSA(sa, query): """Search que

    論文の息抜きにSuffixArray - kisa12012の日記
  • suffix array

    更新履歴 2004/01/07  O(N) 構築アルゴリズム三種追加(Ko &Alulu, Kim & al., Karkkainen & Sanders) Suffix Arrayは、最近注目を集めているデータ構造です。その理由として、 (1)大規模なデータに対して、高速に検索、情報抽出を行うことができる (2)BWTとしてデータ圧縮に用いることができる。 ことが挙げられます。(1)に関しては自然言語処理において、膨大な量のコーパスから情報(例えば、単語の出現回数など)を調べるときににSuffix Arrayを用いると非常に高速に求めることができます。 膨大な量のコーパスに基づいた自然言語処理が盛んになってきている今、Suffix Arrayが注目を集めています。 また、ゲノム情報を調べるバイオインフォマティクスにおいても、ここの配列と似ている部分(例えばCCAG)を調べるといった場合

  • 1