接尾辞配列 接尾辞配列の概要

接尾辞配列

出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2021/08/19 15:57 UTC 版)

ナビゲーションに移動 検索に移動
接尾辞配列
種類 配列
考案者 Udi Manber, Gene Myers
発表年 1990年
計算量ビッグ・オー記法
平均 最悪
空間計算量
構築の時間計算量

概要

長さ11の文字列

1 2 3 4 5 6 7 8 9 10 11
a b r a c a d a b r a

を例に取って説明する。先頭から一文字ずつ削ってみればわかるように、この文字列は "abracadabra", "bracadabra", "racadabra", ……, "ra", "a" という11の接尾辞を持つと考えられる。この11の接尾辞を、それぞれの開始位置(1~11)とともに配列に順次格納し、接尾辞について辞書順に並べ替えると以下のようになる。表中の最長共通接頭辞(LCP)は、直前の接尾辞と、接尾辞の先頭から何文字か共通する文字がある場合の最大文字数。

開始位置 接尾辞 最長共通接頭辞(LCP)
11 a 0
8 abra 1
1 abracadabra 4
4 acadabra 1
6 adabra 1
9 bra 0
2 bracadabra 3
5 cadabra 0
7 dabra 0
10 ra 0
3 racadabra 2

元の文字列があれば、接尾辞の開始位置を指定することですべての接尾辞を余すことなく得ることができる。この接尾辞を辞書順に並べたときの開始位置の配列が接尾辞配列となる。

"abracadabra"に対する接尾辞配列は、表のように、(11, 8, 1, 4, 6, 9, 2, 5, 7, 10, 3) となる。接尾辞 "a" の開始位置は11で、接尾辞 "abra" の開始位置は8だからである。

"abracadabra"に対して、12番目の接尾辞として空文字を考えることができる。しかし、これは常に先頭に配置されることになるので特に情報を持たないので、省略しても問題ない。

構築法

接尾辞配列を構築する最も容易な方法は、効率的な比較ソートを利用することである。この場合、回の接尾辞の比較が必要になるが、接尾辞の比較は の時間が必要となる。従って全体的な計算時間は となる。より精巧なアルゴリズムでは、部分ソートの結果の重複した比較を避けることで に改善できる。接尾辞木から変換する事で で変換する事も出来る。

2009年に Ge Nong らが SA-IS 法を発表した[2]。これにより計算量は 、メモリ使用量は (kは文字の種類数)となり、100行程度のC言語のプログラムで実装できる。Yuta Mori が論文発表と同時に SA-IS 法の実装を公開しており[3]、論文でも言及されている。


  1. ^ Manber, Udi; Myers, Gene (1990). “Suffix arrays: a new method for on-line string searches”. First Annual ACM-SIAM Symposium on Discrete Algorithms. pp. 319–327. http://dl.acm.org/citation.cfm?id=320176.320218 
  2. ^ Nong, Ge; Zhang, Sen; Chan, Wai Hong (2009). “Linear Suffix Array Construction by Almost Pure Induced-Sorting”. 2009 Data Compression Conference. pp. 193. doi:10.1109/DCC.2009.42. ISBN 978-0-7695-3592-0 
  3. ^ sais
  4. ^ SUFARY 臨時復旧ページ
  5. ^ sary: Suffix Arrayのライブラリとツール


「接尾辞配列」の続きの解説一覧



英和和英テキスト翻訳>> Weblio翻訳
英語⇒日本語日本語⇒英語
  

辞書ショートカット

すべての辞書の索引

「接尾辞配列」の関連用語

接尾辞配列のお隣キーワード
検索ランキング

   

英語⇒日本語
日本語⇒英語
   



接尾辞配列のページの著作権
Weblio 辞書 情報提供元は 参加元一覧 にて確認できます。

   
ウィキペディアウィキペディア
All text is available under the terms of the GNU Free Documentation License.
この記事は、ウィキペディアの接尾辞配列 (改訂履歴)の記事を複製、再配布したものにあたり、GNU Free Documentation Licenseというライセンスの下で提供されています。 Weblio辞書に掲載されているウィキペディアの記事も、全てGNU Free Documentation Licenseの元に提供されております。

©2024 GRAS Group, Inc.RSS