JP5736589B2 - 数列データ検索装置、数列データ検索方法及びプログラム - Google Patents
数列データ検索装置、数列データ検索方法及びプログラム Download PDFInfo
- Publication number
- JP5736589B2 JP5736589B2 JP2012016524A JP2012016524A JP5736589B2 JP 5736589 B2 JP5736589 B2 JP 5736589B2 JP 2012016524 A JP2012016524 A JP 2012016524A JP 2012016524 A JP2012016524 A JP 2012016524A JP 5736589 B2 JP5736589 B2 JP 5736589B2
- Authority
- JP
- Japan
- Prior art keywords
- sequence
- sequence data
- bit
- bit string
- search
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
Images
Description
2*K*n*lg(lg(n))/log(K,n)ビット
となる。ここで、lg(n)は2を底とする対数より大きい最小の整数を示し、log(K,n)はKを底とする対数より大きい最小の整数を返す関数を表す。
多分岐ウェーブレットの分岐数をKとし、0からMの数字から構成される数列データ101を入力データとする。0からMの各数字には、K進数列からなる符号語が、前記背景技術で述べた接頭語条件を満たす形で割り振られる。
数列データ登録部409は、数列データ101からK分木105の葉ノード以外のノードについて、K進数列記録構造(K進数列データ)104の登録を行う。図5は、本発明の実施形態のK分木105の葉ノード以外のノードへデータを登録する数列データ登録部409の処理の一例を示すフローチャートである。このフローチャートは、図4のK分木構築部408の処理の後に実行される。図5に示す数列データ登録部409の処理により、多分岐ウェーブレット木データ部107が構築される。以下、K分木105の葉ノード以外のノードへのデータ登録の処理について説明する。
K進数列登録部411は、Kの2を底とする対数より大きい整数の中で、最小の値を変数zに設定する。K進数列記録構造104は、1からzまでの番号が振られたz本の整数配列(以下、多段ビット列)を用いて、K進数列を記録する。
辞書作成部412は、K進数列のRank、Selectの計算に用いられる辞書1042を構築する。辞書作成部412は、0からK−1の値を含む変数kについて、z本の各配列から、変数kの値に該当する部分のビットのみが立っている整数列を作成する。
図6は、本発明の実施形態の多分岐ウェーブレット木データ部107の構築部407の処理におけるデータの流れを説明するタイムチャートである。
Rank(c,p)計算部414は、多分岐ウェーブレット木データ部107に登録された数列データ101について検索対象の数字cが位置pまでに出現する回数を結果として返す。
Select(c,n)計算部415は、K分木105に登録された数列データ101について検索対象の数字cがn回目に出現する位置を結果として返す。図10は、本実施形態のSelect(c,n)計算部414の処理の一例を示すフローチャートである。以下、Select(c,n)計算部415の各処理について説明する。
Lookup(p)計算部415は、K分木105に登録された数列データ101の位置pに出現する数字を結果として返す。図11は、本実施形態のLookup(p)計算部416の処理の一例を示すフローチャートである。以下、Lookup(p)計算部416の各処理について説明する。
K進数列検索部417において、CPU401は、K進数列記録構造104に設定された検索用の辞書1042と多段ビット列1041への後述のビット列検索部421によりK進数列のRank、Select、Lookupの計算を行う。これらの計算は、上記図9のステップS306、上記図10のステップS407、上記図11のステップS504、S505で行われる。
K進数列Rank(k,q)計算部418は、K進数列記録構造104に保持されたデータから、0からK−1の範囲に存在する数字kが位置qまでに出現する回数を結果として返す。
次に、K進数列Select(k,m)計算部419は、K進数列記録構造に保持されたデータから、0からK−1の数字kがm回目に出現する位置を結果として返す。K進数列Select計算部419は、まずK進数列記録構造104に保持されているSelect計算のための検索用の辞書1042を参照し、数字kがmより小さく最もmに近い回数であるn回目に出現する位置の情報を探す。
K進数列Lookup(q)計算部420は、K進数列記録構造104に保持されたK進数列データのqの位置にある数字を結果として返す。位置qを所定のビット幅で割ったときの商をx、余りをyとする。K進数列記録構造104に保持された各z本の整数配列に対し、x+1番目の配列にある整数を表現したビット列のy番目のビットが0か1になっているかを調べることで、K進数列データの位置qにある数字の2進数表現を取得できる。そして、この2進数表現を10進数表現などへ変換することで、目的の数字を得る。
K進数表現については、前記背景技術の図19と同様であり、本実施形態では前記背景技術の2進数表現に代わって4進数表現を用いた例を示している。本実施形態では、数列データ101=「3141042103」にある数字0、1、2、3、4への4進数表現の一例と、その4進数表現によって生成されたウェーブレット木を構成する4分木と4分木内に登録されたデータを示している。
図15〜図17は、図14において構築された4分木におけるRank計算の一例を示している。
4*2*n*lg(lg(n))/lg(n)ビット
となる。
104 K進数列記録構造
105 K分木
107 多分岐ウェーブレット木データ部
401 CPU(中央演算装置)
402 主記憶装置
403 補助記憶装置
404 リムーバブルメディア
405 ネットワーク
406 インターフェース部
407 多分岐ウェーブレット木データ構築部
408 K分木構築部
409 数列登録部
410 K進数列記録構造構築部
411 K進数列登録部
412 辞書作成部
413 検索部
414 Rank計算部
415 Select計算部
416 Lookup計算部
417 K進数列検索部
418 K進数列Rank計算部
419 K進数列Select計算部
420 K進数列Lookup計算部
421 ビット列検索部
Claims (12)
- プログラムを実行するプロセッサと、前記プロセッサによって実行されるプログラムを格納する記憶装置と、を備え、入力された数列データを保持し、検索クエリを受け付けて、前記受け付けた前記検索クエリから前記数列データを検索する数列データ検索装置であって、
前記数列データの分岐数Kを受け付けて、前記数列データからK分木を構築するK分木構築部と、
前記分岐数Kから前記数列データをK進数列に変換し、前記構築したK分木のうち葉ノード以外のノードにおいて、分岐数Kの2を底とする対数と等しいかより大きい整数の中で最小の値zを算出し、前記K進数列の0からK−1の各数字を前記最小の値z桁で2進数列化し、前記最小の値z本のビット列に各桁を格納する多段ビット列を含む多分岐ウェーブレット木データ構築部と、
前記検索クエリに含まれる検索対象の数字の位置のビットが所定値であるビット列を前記多段ビット列から求める検索部を備えたことを特徴とする数列データ検索装置。 - 請求項1に記載の数列データ検索装置であって、
前記数列データの0からK−1の各数字に対して、前記数列データ上の位置pまでに出現する回数を返すRankを計算した結果を辞書として保持する辞書作成部をさらに備え、
前記検索部は、
前記辞書の範囲外における前記数列データ上の位置について、前記多段ビット列から検索クエリに含まれる数字のビットが所定の値であるビット列を求めるビット列検索部と、
前記辞書と前記ビット列検索部を用いて、検索クエリに含まれる数字について前記多段ビット列における前記Rankを計算するRank計算部と、を備えたことを特徴とする数列データ検索装置。 - 請求項1に記載の数列データ検索装置であって、
前記数列データの0からK−1の各数字に対して、前記数列データ上の出現回数がn回となる位置を返すSelectを計算した結果を辞書として保持する辞書作成部をさらに備え、
前記検索部は、
前記辞書の範囲外における前記数列データ上の出現回数について、前記多段ビット列から検索クエリに含まれる数字のビットが所定の値であるビット列を求めるビット列検索部と、
前記辞書と前記ビット列検索部を用いて、検索クエリに含まれる数字について前記多段ビット列における前記Selectを計算するSelect計算部と、を備えたことを特徴とする数列データ検索装置。 - 請求項1に記載の数列データ検索装置であって、
前記検索部は、
前記数列データの0からK−1の各数字に対して、前記多段ビット列から所定のビットが所定値のビット列を求めることにより前記多段ビット列からLookupの計算を実行するLookup計算部と、をさらに備えたことを特徴とする数列データ検索装置。 - プログラムを実行するプロセッサと、前記プロセッサによって実行されるプログラムを格納するメモリと、を備えた計算機で、入力された数列データを保持し、検索クエリを受け付けて、前記受け付けた前記検索クエリから前記数列データを検索する数列データ検索方法であって、
前記プロセッサが、前記数列データの分岐数Kを受け付けて、前記数列データからK分木を構築する第1のステップと、
前記プロセッサが、前記分岐数Kから前記数列データをK進数列に変換し、前記構築したK分木のうち葉ノード以外のノードにおいて、分岐数Kの2を底とする対数と等しいかより大きい整数の中で最小の値zを算出し、前記K進数列の0からK−1の各数字を前記最小の値z桁で2進数列化し、前記最小の値z本のビット列に各桁を格納する多段ビット列を含む多分岐ウェーブレット木データを構築する第2のステップと、
前記プロセッサが、前記検索クエリに含まれる検索対象の数字の位置のビットが1であるビット列を前記多段ビット列から求める第3のステップと、
を含むことを特徴とする数列データ検索方法。 - 請求項5に記載の数列データ検索方法であって、
前記プロセッサが、前記数列データの0からK−1の各数字に対して、前記数列データ上の位置pまでに出現する回数を返すRankを計算した結果を辞書として保持する第4のステップと、
前記プロセッサが、前記辞書の範囲外における前記数列データ上の位置について、前記多段ビット列から検索クエリに含まれる数字のビットが所定の値であるビット列を求める第5のステップと、
前記プロセッサが、前記辞書と前記ビット列を用いて、検索クエリに含まれる数字について前記多段ビット列における前記Rankを計算する第6のステップと、をさらに含むことを特徴とする数列データ検索方法。 - 請求項5に記載の数列データ検索方法であって、
前記プロセッサが、前記数列データの0からK−1の各数字に対して、前記数列データ上の出現回数がn回となる位置を返すSelectを計算した結果を辞書として保持する第7のステップと、
前記プロセッサが、前記辞書の範囲外における前記数列データ上の出現回数について、前記多段ビット列から検索クエリに含まれる数字のビットが所定の値であるビット列を求める第8のステップと、
前記プロセッサが、前記辞書と前記ビット列を用いて、検索クエリに含まれる数字について前記多段ビット列における前記Selectを計算する第9のステップと、をさらに含むことを特徴とする数列データ検索方法。 - 請求項5に記載の数列データ検索方法であって、
前記数列データの0からK−1の各数字に対して、前記多段ビット列から所定のビットが所定値のビット列を求めることにより前記多段ビット列からLookupの計算を実行する第10のステップ、をさらに含むことを特徴とする数列データ検索方法。 - プログラムを実行するプロセッサと、前記プロセッサによって実行されるプログラムを格納するメモリと、を備えた計算機で、入力された数列データを保持し、検索クエリを受け付けて、前記受け付けた前記検索クエリから前記数列データを検索するプログラムであって、
前記数列データの分岐数Kを受け付けて、前記数列データからK分木を構築する第1のステップと、
前記分岐数Kから前記数列データをK進数列に変換し、前記構築したK分木のうち葉ノード以外のノードにおいて、分岐数Kの2を底とする対数と等しいかより大きい整数の中で最小の値zを算出し、前記K進数列の0からK−1の各数字を前記最小の値z桁で2進数列化し、前記最小の値z本のビット列に各桁を格納する多段ビット列を含む多分岐ウェーブレット木データを構築する第2のステップと、
前記検索クエリに含まれる検索対象の数字の位置のビットが1であるビット列を前記多段ビット列から求める第3のステップと、
を前記計算機に実行させることを特徴とするプログラム。 - 請求項9に記載のプログラムであって、
前記数列データの0からK−1の各数字に対して、前記数列データ上の位置pまでに出現する回数を返すRankを計算した結果を辞書として保持する第4のステップと、
前記辞書の範囲外における前記数列データ上の位置について、前記多段ビット列から検索クエリに含まれる数字のビットが所定の値であるビット列を求める第5のステップと、
前記辞書と前記ビット列を用いて、検索クエリに含まれる数字について前記多段ビット列における前記Rankを計算する第6のステップと、をさらに含むことを特徴とするプログラム。 - 請求項9に記載のプログラムであって、
前記数列データの0からK−1の各数字に対して、前記数列データ上の出現回数がn回となる位置を返すSelectを計算した結果を辞書として保持する第7のステップと、
前記辞書の範囲外における前記数列データ上の出現回数について、前記多段ビット列から検索クエリに含まれる数字のビットが所定の値であるビット列を求める第8のステップと、
前記辞書と前記ビット列を用いて、検索クエリに含まれる数字について前記多段ビット列における前記Selectを計算する第9のステップと、をさらに含むことを特徴とするプログラム。 - 請求項9に記載のプログラムであって、
前記数列データの0からK−1の各数字に対して、前記多段ビット列から所定のビットが所定値のビット列を求めることにより前記多段ビット列からLookupの計算を実行する第10のステップ、をさらに含むことを特徴とするプログラム。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2012016524A JP5736589B2 (ja) | 2012-01-30 | 2012-01-30 | 数列データ検索装置、数列データ検索方法及びプログラム |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2012016524A JP5736589B2 (ja) | 2012-01-30 | 2012-01-30 | 数列データ検索装置、数列データ検索方法及びプログラム |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2013156822A JP2013156822A (ja) | 2013-08-15 |
JP5736589B2 true JP5736589B2 (ja) | 2015-06-17 |
Family
ID=49051939
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2012016524A Expired - Fee Related JP5736589B2 (ja) | 2012-01-30 | 2012-01-30 | 数列データ検索装置、数列データ検索方法及びプログラム |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP5736589B2 (ja) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP6251437B1 (ja) * | 2017-05-26 | 2017-12-20 | 義尚 神山 | 分類用符号生成ソフトウェアを記録した記録媒体 |
CN109376281B (zh) * | 2018-09-21 | 2021-10-22 | 长沙学院 | 比特位序列、数据搜索方法、搜索系统、社会网络分析系统、舆情监控系统 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH02294875A (ja) * | 1989-05-10 | 1990-12-05 | Hokkaido Nippon Denki Software Kk | データ検索方式 |
US6594655B2 (en) * | 2001-01-04 | 2003-07-15 | Ezchip Technologies Ltd. | Wildcards in radix- search tree structures |
JP2003296157A (ja) * | 2002-03-29 | 2003-10-17 | Fujitsu Ltd | データ記憶装置、データ処理装置、データ処理方法、データ処理プログラム |
US20030236793A1 (en) * | 2002-06-19 | 2003-12-25 | Ericsson Inc. | Compressed prefix tree structure and method for traversing a compressed prefix tree |
-
2012
- 2012-01-30 JP JP2012016524A patent/JP5736589B2/ja not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
JP2013156822A (ja) | 2013-08-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Policriti et al. | LZ77 computation based on the run-length encoded BWT | |
JP6028567B2 (ja) | データ格納プログラム、データ検索プログラム、データ格納装置、データ検索装置、データ格納方法及びデータ検索方法 | |
JP3672242B2 (ja) | パターン検索方法、パターン検索装置、コンピュータプログラム及び記憶媒体 | |
CN109326325B (zh) | 一种基因序列比对的方法、系统及相关组件 | |
JP6476647B2 (ja) | 圧縮プログラム、圧縮装置、圧縮方法、伸長プログラム、伸長装置および伸長方法 | |
JP6447161B2 (ja) | 意味構造検索プログラム、意味構造検索装置、及び意味構造検索方法 | |
JP4114600B2 (ja) | 可変長文字列検索装置及び可変長文字列検索方法並びにプログラム | |
US9397696B2 (en) | Compression method, compression device, and computer-readable recording medium | |
US20220277139A1 (en) | Computer-readable recording medium, encoding device, index generating device, search device, encoding method, index generating method, and search method | |
US10049164B2 (en) | Multidimensional-range search apparatus and multidimensional-range search method | |
JPH09245043A (ja) | 情報検索装置 | |
JP5736589B2 (ja) | 数列データ検索装置、数列データ検索方法及びプログラム | |
Policriti et al. | From LZ77 to the run-length encoded Burrows-Wheeler transform, and back | |
US20120284279A1 (en) | Code string search apparatus, search method, and program | |
Mishra et al. | Fast pattern matching in compressed text using wavelet tree | |
JP2007048318A (ja) | リレーショナルデータベースの処理方法およびリレーショナルデータベース処理装置 | |
KR101679011B1 (ko) | 데이터베이스에서 데이터 이동을 처리하는 방법 및 장치 | |
JP6666312B2 (ja) | 多次元データ管理システム及び多次元データ管理方法 | |
JP5582358B2 (ja) | 文書検索システム、文書検索方法、及びプログラム | |
JP2011257877A (ja) | 情報検索装置、情報検索方法、及びプログラム | |
KR20190139227A (ko) | K-부정합 검색을 위한 필터를 생성하는 시스템 및 방법 | |
JP6589317B2 (ja) | 書換装置、処理方法とそのプログラム、および、情報処理装置 | |
JP6512294B2 (ja) | 圧縮プログラム、圧縮方法および圧縮装置 | |
JP5472929B2 (ja) | 文書検索装置、文書検索方法及び文書検索プログラム | |
Tischler | Low space external memory construction of the succinct permuted longest common prefix array |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20140516 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20141021 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20141111 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20141212 |
|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20150324 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20150326 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 5736589 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
LAPS | Cancellation because of no payment of annual fees |