JP4347087B2 - パターンマッチング装置および方法ならびにプログラム - Google Patents

パターンマッチング装置および方法ならびにプログラム Download PDF

Info

Publication number
JP4347087B2
JP4347087B2 JP2004051680A JP2004051680A JP4347087B2 JP 4347087 B2 JP4347087 B2 JP 4347087B2 JP 2004051680 A JP2004051680 A JP 2004051680A JP 2004051680 A JP2004051680 A JP 2004051680A JP 4347087 B2 JP4347087 B2 JP 4347087B2
Authority
JP
Japan
Prior art keywords
automaton
pattern
text
divided
parts
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 - Lifetime
Application number
JP2004051680A
Other languages
English (en)
Other versions
JP2005242672A (ja
Inventor
亮介 榑林
勝 片山
直明 山中
公平 塩本
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Nippon Telegraph and Telephone Corp
Original Assignee
Nippon Telegraph and Telephone Corp
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Nippon Telegraph and Telephone Corp filed Critical Nippon Telegraph and Telephone Corp
Priority to JP2004051680A priority Critical patent/JP4347087B2/ja
Publication of JP2005242672A publication Critical patent/JP2005242672A/ja
Application granted granted Critical
Publication of JP4347087B2 publication Critical patent/JP4347087B2/ja
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Images

Landscapes

  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Description

本発明は、与えられた入力文字列であるテキストから任意の複数種類の文字列であるパターンを検索するパターンマッチングを行うための手法および装置に関する。
与えられたテキストから任意の複数種類のパターンを検索するパターンマッチングは、ワープロソフト、データベースの検索等、多様な分野で応用されている。しかし、情報化社会の進展、そしてハードディスクといった記憶装置の大容量化、低コスト化によって、検索対象となる情報が膨大化している。したがって、パターンマッチングを高効率化するため、そのハードウェア化などの試みがなされている。
ここで、パターンマッチングについて定義する。長さnのテキストTと、長さmのテキストPを仮定する。ここで、パターンとテキストとはそれぞれ、共通した文字集合に属する文字を、テキストの場合はn文字、パターンの場合はm文字を、左から右に順番に並べることで構成される。すなわち、テキストT中の文字をtiと表すと、テキストTはt1…tnと表記できる。同様にパターンPはp1…pmと表記できる。パターンマッチングの目的はテキスト中にパターンが存在するか否かを特定することにある。すなわち、ts+1…ts+m=p1…pmとなる部分テキストを検出することにある。
パターンマッチングの方法として既に多くの手法が提案されている。パターンマッチングの方法は大きく以下の二つに分類できる。
1)テキストとパターンとの文字比較位置が関数的に変化する方法。
この種の方法では、テキストおよびパターンの双方の文字を比較し、それぞれの文字が一致しない場合は、比較中のテキストとパターンとの重なり位置(以下、ウィンドウと呼ぶ)をテキストに対して右方向に移動させ、ウィンドウ中のテキストとパターンとの比較を再開する。このとき、テキストとパターンとの文字比較回数を減少させるには、文字が一致しなかった際にウィンドウを移動させる幅を可能な限り大きくすることが重要となる。この種の代表的な方法として、BM(Boyer Moore),Reverse Factor,KMP(Knuth-Morris-Pratt)などがある(例えば、非特許文献1参照)。
2)テキストとパターンとの文字比較位置が一定に変化する方法。
この種の方法では、どのようなテキストおよびパターンを用いても、テキストとパターンとの文字比較回数が常にテキスト長にのみ依存する特徴がある。この種の方法として、オートマトンを用いた方法およびShift ORアルゴリズムがある。
前者の方法では、一般的に文字比較回数の期待値が後者の方法より優れる。このため、特にソフトウェア上での実現では、前者の方法が広く用いられる。しかし、前者の方法では、複数パターンを同時に検索することができないという問題がある。さらに、そのハードウェア化に際して以下の問題が生じる。
先の入力文字の比較結果に応じてどれだけウィンドウを右方向に移動できるかが決まる。このため、テキスト中の入力文字をパイプライン処理することができない。
テキストとパターンとの文字比較位置が関数的に変化するため、文字比較回数がテキストとパターンとに依存して変化する。このとき文字比較回数の最悪値は後者の方法より多くなる。文字比較回数の変化にともなうパターンマッチングのスループットの変化を吸収するため、入力テキストのバッファ機構が必要となる。バッファの容量を大きくとることによって、バッファが溢れる確率を小さくすることが可能であるが、完全にバッファが溢れないことを保障することは困難点である。また、バッファ中のテキストが枯渇した場合には、パイプラインがストールするなどの問題が生じる。
ChristianCharrs and ThierryLecroq"Handbook of Exact String Matching Algorithms"、[online]、[平成16年2月10日検索]、インターネット<URL:http://homepage.stts.edu/~aikawa/string.pdf> A.V.Aho and M.J.Corasick.Efficientstringmatching:an aid to bibliographic search.Comm.oftheACM.18(6):333-340,June 1975.
従来技術によるパターンマッチングのハードウェア化では、主にオートマトンを用いた手法が用いられる。オートマトンの特徴としてまず、1)複数パターンを同時に検索することが可能であることが挙げられる。さらに、ハードウェア向きである特徴として、2−1)テキストとパターンとの文字比較位置が一定でありテキストをバッファする機構が必要でない。2−2)テキスト中の文字が入力されてから次の文字が入力されるまでの遅延が他の方法と比較して小さい、ことが挙げられる。その一方で、オートマトンによる方法では、メモリおよび論理回路の規模、スループットの点において幾つかの課題が存在する。
オートマトンを用いた手法では、まず、これまでに入力されたテキストのサフィックスに対するパターンの最長プリフィックスを状態として持つオートマトンを構成する。ここで、任意の文字列tii+1…ti+jのプリフィックスは、tii+1…ti+l(0≦l≦j)と定義される。一方、任意の文字列tii+1…ti+jのサフィックスはtll+1…ti+j(i≦l≦i+j)と定義される。複数のパターンが存在する場合には、個々のパターンに対するオートマトンを単一のオートマトンとして合成することが可能である。このような方法をAho−Corasickと呼ぶ(例えば、非特許文献2参照)。
図9はAho−Corasickオートマトンを説明するための図であるが、図9は例としてパターンをcabcとcbacaの2つとした場合に生成されるオートマトンを示している。なお、いずれの状態においても、アーク上に明示されていない文字が入力された場合は状態0に戻る。次に、そのオートマトンに対して入力テキストの文字列を入力させ、入力された文字と現在のオートマトンの状態とから、オートマトンを次の状態に遷移させるという動作を繰り返す。このとき、オートマトンがパターン全体を表す状態(以下、最終状態)に遷移すると、テキスト中の文字列がパターンと一致したことを表す。図9の例では、状態4と状態8が最終状態である。
図10は従来のメモリを用いたオートマトンの実現例を示す図であり、図11は従来のオートマトンの回路展開例を示す図であるが、オートマトンのハードウェア実現に際しては、図10のように、オートマトンをメモリ上で表現する方法と、図11のようにオートマトンを直接的に回路化する方法とに分けられる。オートマトンをメモリ上で表現する方法として、新しく入力されたテキストの文字と現在のオートマトンの状態とを入力とし、次に遷移すべき状態を出力とする表が用いられる。しかし、オートマトンを表として実現する場合には、表のエントリ数がテキストの一文字あたりのビット幅に対して指数関数的に増加するという問題がある。
一方、オートマトンをバイナリツリー等を用いて表現することによって、エントリ数を削減する方法もある。しかし、この方法では、テキストの文字が入力されてから次の状態が決定されるまでの遅延が表と比較して大きくなる。この遅延の間、次のテキストの文字に対する照合処理ができないため、スループットが大きく制限される。一方、図11のオートマトンを直接布線論理化する方法では、オートマトンの状態毎に比較器が必要となる。また、状態間の配線遅延によってスループットが制限される。
本発明は、このような背景に行われたものであって、パターンマッチングをハードウェア処理した際の各種遅延の隠蔽およびスループットの向上を可能とすることができるパターンマッチング装置および方法を提供することを目的とする。
本発明では、従来のオートマトンによるパターンマッチングに対し、以下の点を付加することに特徴がある。
個々のパターンの各文字を関数を用いて振り分けることによって、パターンを複数のパターンに分割し、これまでに入力されたテキストのサフィックスに対するパターンの最長プリフィックスを状態として持つオートマトンを分割パターンについて構成し、1つのパターンから生成された全ての分割パターンに対応するオートマトンの全てが最終状態になったか否かを判定することによって、パターンマッチングを行う。
個々のパターンから分割されたパターンに対応するオートマトン全てを単一のオートマトンとして合成し、パターンマッチングすることができる。
生成されたオートマトンをパイプライン化して実現し、テキストと個々の分割パターンとに対する比較を時分割して行うことによって、単一テキスト中の文字単位でパイプライン処理することができる。
生成されたオートマトンを並列に配置し、テキスト中の文字を個々のオートマトンに振り分けて並列に入力することによって、単一テキスト中の文字単位で並列処理することができる。
すなわち、個々の分割パターンとテキストとの比較を互いに独立に行えるため、それらをパイプラインまたは並列処理することが可能である。すなわち、パターンをk個に分割する場合に、テキストもk個に分割する。本発明では、これらの分割テキストをそれぞれ独立に個々の分割パターンと比較させ、その結果を統合させている。
この結果、分割パターンと分割テキストとの比較を並列処理することが可能となる。また、オートマトンによる比較処理を複数ステージに細分化し、独立な分割テキストを時分割に処理することによって、オートマトンのパイプライン処理を実現することができる。
以上により、本発明の目的である、テキストを文字単位でパイプラインまたは並列処理することによる、パターンマッチングをハードウェア処理した際の配線遅延またはメモリアクセス遅延といった遅延隠蔽とスループット向上効果が得られる。
すなわち、本発明の第一の観点は、入力文字列であるテキストから任意文字列であるパターンを検索するパターンマッチング装置であって、前記パターンの各文字を先頭から順番にk−1(kは2以上の整数)文字置きに振り分けることによって一つのパターンをk個に分割した分割パターンについて、それぞれが互いに異なる前記分割パターンを保持し、これまでに入力されたテキストのサフィックスに対する前記保持している分割パターンの最長プリフィックスを状態として持つk個のオートマトン部を並列させて構成したオートマトン部の組をk組と、前記テキストの各文字を先頭から順番にk−1文字置きに振り分けることによって一つのテキストをk個の分割テキストに分割し、k組の前記オートマトン部の組のそれぞれに互いに異なる前記分割テキストを入力する手段と、k組の前記オートマトン部の組全てについて、該オートマトン部の組を構成するオートマトン部のいずれかが最終状態になり、かつ互いに異なる前記分割パターンを保持したk個のオートマトン部が該最終状態になったか否かを判定することによってパターンマッチングを行う手段とを備えたところにある。
さらに、前記オートマトン部の組をパイプライン化して実現し、このパイプライン化された前記オートマトン部の組に対し、前記分割テキストと前記分割パターンとの比較を時分割して行うパイプライン処理手段を備えることができる。
あるいは、前記オートマトン部の組のそれぞれを、互いに異なる前記分割パターンを保持したk個のオートマトンを合成した、互いに異なる前記分割パターンにそれぞれ対応したk個の最終状態を持つ単一のオートマトン部に置き換えることができる。
本発明の第二の観点は、パターンマッチング装置が、入力文字列であるテキストから任意文字列であるパターンを検索するパターンマッチング方法であって、前記パターンの各文字を先頭から順番にk−1(kは2以上の整数)文字置きに振り分けることによって一つのパターンをk個に分割した分割パターンについて、それぞれが互いに異なる前記分割パターンを保持し、これまでに入力されたテキストのサフィックスに対する前記保持している分割パターンの最長プリフィックスを状態として持つk個のオートマトン部を並列させて構成したオートマトン部の組をk組用い文字列入力手段が、入力文字列の前記テキストの各文字を先頭から順番にk−1文字置きに振り分けることによって一つのテキストをk個の分割テキストに分割し、k組の前記オートマトン部の組のそれぞれに互いに異なる前記分割テキストを入力するステップと、判定手段が、k組の前記オートマトン部の組全てについて、該オートマトン部の組を構成するオートマトン部のいずれかが最終状態になり、かつ互いに異なる前記分割パターンを保持したk個のオートマトン部が該最終状態になったか否かを判定することによってパターンマッチングを行うステップとを実行するところにある。
さらに、前記オートマトン部の組をパイプライン化して実現し、このパイプライン化された前記オートマトン部の組に対し、前記分割テキストと前記分割パターンとの比較を時分割して行うパイプライン処理ステップを実行することができる。
あるいは、前記オートマトン部の組のそれぞれを、互いに異なる前記分割パターンを保持したk個のオートマトンを合成した、互いに異なる前記分割パターンにそれぞれ対応したk個の最終状態を持つ単一のオートマトン部に置き換えることができる。
本発明の第三の観点は、情報処理装置にインストールすることにより、その情報処理装置に、入力文字列であるテキストから任意文字列であるパターンを検索するパターンマッチング装置に相応する機能を実現させるプログラムであって、前記パターンの各文字を先頭から順番にk−1(kは2以上の整数)文字置きに振り分けることによって一つのパターンをk個に分割した分割パターンについて、それぞれが互いに異なる前記分割パターンを保持し、これまでに入力されたテキストのサフィックスに対する前記保持している分割パターンの最長プリフィックスを状態として持つk個のオートマトン部を並列させて構成したオートマトン部の組k組に相応する機能と、前記テキストの各文字を先頭から順番にk−1文字置きに振り分けることによって一つのテキストをk個の分割テキストに分割し、k組の前記オートマトン部の組のそれぞれに互いに異なる前記分割テキストを入力する機能と、k組の前記オートマトン部の組全てについて、該オートマトン部の組を構成するオートマトン部のいずれかが最終状態になり、かつ互いに異なる前記分割パターンを保持したk個のオートマトン部が該最終状態になったか否かを判定することによってパターンマッチングを行う機能とを実現させるところにある。
さらに、前記オートマトン部の組をパイプライン化して実現し、このパイプライン化された前記オートマトン部の組に対し、前記分割テキストと前記分割パターンとの比較を時分割して行うパイプライン処理機能を実現させることができる。
あるいは、前記オートマトン部の組のそれぞれを、互いに異なる前記分割パターンを保持したk個のオートマトン合成した、互いに異なる前記分割パターンにそれぞれ対応したk個の最終状態を持つ単一のオートマトン部に置き換えることができる。
本発明の第四の観点は、本発明のプログラムが記録された前記情報処理装置読取可能な記録媒体である。本発明のプログラムは本発明の記録媒体に記録されることにより、前記情報処理装置は、この記録媒体を用いて本発明のプログラムをインストールすることができる。あるいは、本発明のプログラムを保持するサーバからネットワークを介して直接前記情報処理装置に本発明のプログラムをインストールすることもできる。
これにより、汎用の情報処理装置を用いて、各種遅延の隠蔽およびスループットの向上を可能とすることができるパターンマッチング装置を実現することができる。
本発明によれば、パターンマッチングをハードウェア処理した際の各種遅延の隠蔽およびスループットの向上を可能とすることができる。また、パターンマッチングを汎用の情報処理装置とプログラムとを用いて実現する際にも各種遅延の隠蔽およびスループットの向上を可能とすることができる。
本発明実施例のパターンマッチング装置および方法ならびにプログラムについて図1ないし図8を参照して説明する。図1は分割パターンを用いたパターンマッチング装置の構成図である。図2は分割パターンを用いたオートマトンによって文字単位の並列処理を行う実施例を示す図である。図3はメモリを用いたオートマトンによってパイプライン処理する構成を示す図である。図4は回路展開したオートマトンによってパイプライン処理する構成を示す図である。図5は分割パターンを合成したパターンマッチング装置の構成図である。図6は分割パターンを合成したパターンマッチングの実施例を示す図である。図7はメモリ表現した場合の最終状態判定部を示す図である。図8はオートマトンをメモリ表現した場合の実施例を示す図である。
本発明実施例は、図1に示すように、入力文字列であるテキストから複数種類の任意文字列であるパターンを検索するパターンマッチング装置であって、本発明の特徴とするところは、個々のパターンの各文字を関数に従って振り分けることによって個々の一つのパターンを複数のパターンに分割した分割パターンを保持し、これまでに入力されたテキストのサフィックスに対するパターンの最長プリフィックスを状態として持つオートマトンを前記分割パターンについてそれぞれ構成するオートマトン部1と、一つのパターンから分割された全ての前記分割パターンのそれぞれについて構成されたオートマトンの全てが最終状態になったか否かを判定することによってパターンマッチングを行う最終状態判定部2とを備えたところにある。
さらに、図3に示すように、前記オートマトンをパイプライン化して実現し、このパイプライン化された前記オートマトンに対し、テキストと個々の前記分割パターンとの比較を時分割して行うパイプライン処理手段を備えることができる。
あるいは、図2に示すように、前記オートマトンを複数並列に配置し、この並列に配置された複数の前記オートマトンに対し、テキスト中の文字を個々のオートマトンに振り分けて並列に入力し、単一テキスト中の文字単位で並列処理する手段を備えることができる。
あるいは、図8に示すように、前記オートマトンをパイプライン化して実現すると共に、このパイプライン化して実現したオートマトンを複数並列に配置し、この並列に配置された複数の前記オートマトンに対し、テキスト中の文字を個々のオートマトンに振り分けて並列に入力し、単一テキスト中の文字単位で並列処理すると共に、このパイプライン化された前記オートマトンに対し、前記テキスト中の文字と個々の前記分割パターンとの比較を時分割して行う並列パイプライン処理手段を備えることができる。
さらに、図5に示すように、全ての前記分割パターンのそれぞれについて構成されたオートマトンの全てを単一のオートマトンとして合成する合成済みオートマトン部3を備えることができる。
本実施例の入力文字列であるテキストから複数種類の任意文字列であるパターンを検索するパターンマッチング方法は、個々のパターンの各文字を関数に従って振り分けることによって個々の一つのパターンを複数のパターンに分割するステップと、これまでに入力されたテキストのサフィックスに対するパターンの最長プリフィックスを状態として持つオートマトンを前記分割するステップにより分割された分割パターンについてそれぞれ構成するステップと、一つのパターンから分割された全ての前記分割パターンのそれぞれについて構成されたオートマトンの全てが最終状態になったか否かを判定することによってパターンマッチングを行うステップとを実行することを特徴とする。
さらに、前記オートマトンをパイプライン化して実現し、このパイプライン化された前記オートマトンに対し、テキストと個々の前記分割パターンとの比較を時分割して行うパイプライン処理ステップを実行することができる。
あるいは、前記オートマトンを複数並列に配置し、この並列に配置された複数の前記オートマトンに対し、テキスト中の文字を個々のオートマトンに振り分けて並列に入力し、単一テキスト中の文字単位で並列処理するステップを実行することができる。
あるいは、前記オートマトンをパイプライン化して実現すると共に、このパイプライン化して実現したオートマトンを複数並列に配置し、この並列に配置された複数の前記オートマトンに対し、テキスト中の文字を個々のオートマトンに振り分けて並列に入力し、単一テキスト中の文字単位で並列処理すると共に、このパイプライン化された前記オートマトンに対し、前記テキスト中の文字と個々の前記分割パターンとの比較を時分割して行う並列パイプライン処理ステップを実行することができる。
さらに、全ての前記分割パターンのそれぞれについて構成されたオートマトンの全てを単一のオートマトンとして合成するステップを実行することができる。
本実施例は、汎用の情報処理装置にインストールすることにより、その情報処理装置に本実施例のパターンマッチング装置に相応する機能を実現させるプログラムとして実現することができる。このプログラムは、記録媒体に記録されて情報処理装置にインストールされ、あるいは通信回線を介して情報処理装置にインストールされることにより当該情報処理装置に、オートマトン部1、最終状態判定部2、合成済みオートマトン部3にそれぞれ相応する機能を実現させることができる。
以下では、本発明実施例をさらに詳細に説明する。本発明では、まず、個々のパターンの各文字を一定の関数に基づいて振り分けることによってパターンを複数のパターンに分割する。関数の具体例として、パターンを先頭から順番に振り分ける場合に、分割前のパターンPをp12…pmとしてk分割すると、その分割パターンDPi(i=1,…,k)はpii+k…pi+(m/k-1)kと表記できる。例えば、パターンababcdから2つの分割パターンを生成する場合に、分割パターンDP1はaac、分割パターンDP2はbbdとなる。任意の部分テキストts+1s+2…ts+mがパターンと一致するか否かを判定する場合には、パターンと同様に部分テキストを分割し、個々の分割部分テキストが個々の分割パターンと一致するか否かを判定する。すなわち、i=1,…,kについて以下の式が成り立つか否かを判定する。
s+is+i+k…ts+i+(m/k-1)k=pii+k…pi+(m/k-1)k
次に、これまでに入力されたテキストのサフィックスに対するパターンの最長プリフィックスを状態として持つオートマトンを分割パターンについて構成する。図1に分割パターンを用いたオートマトンによってパターンマッチングを実施するための構成を示す。オートマトンによる検索では、関数に基づいてテキストt1…tnをk個のテキスト列として振り分ける。
関数の具体例として、テキストの先頭から順番に振り分ける場合には、分割後のテキストDTi(i=1,…,k)はtii+k…ti+(n/k-1)kと表記できる。そして、それぞれの分割テキストDTiを、各分割パターンに対応するオートマトンに入力する。
適切なタイミングで全ての分割パターンに対応するオートマトンが最終状態に遷移したか否かを判定することによって、パターン全体と一致したか否かを判定する。また、各オートマトンを並列に動作させることによって、テキストとパターンとのマッチングを文字単位で並列処理することが可能である。
図2はababcdを分割パターンを用いたオートマトンによって文字単位の並列処理を行う場合を例示している。
さらに並列化に加えて、オートマトンを図3、図4のように、オートマトンの各処理を複数ステージに細分化し、同じオートマトンに対して入力される異なる分割テキストを時分割して入力することによって、テキストとパターンとのマッチングを文字単位でパイプライン処理することができる。
個々の分割パターンと分割テキストとの比較を個別のオートマトンを用いて行う場合に、そのオートマトン数は分割パターン数の二乗に比例する。例えば、図2では2つの分割パターンの比較に対し4つのオートマトンを必要としている。これを、Aho−Corasickに基づいて、オートマトンを合成することによって、オートマトン数を削減した構成を図5に示す。分割パターンを合成した場合には、パターンマッチングに必要なオートマトンの個数は分割パターンの数に比例する。図6はababcdを分割パターンし、そのオートマトンを合成することによって、パターンマッチングを行う場合を例示している。図2と比較すると必要なオートマトンの個数は半分になっている。
最終状態判定部2は、オートマトンの現在の状態が最終状態であるか否かを判定する。図7はオートマトンをメモリ表現した場合の最終状態判定部2の実装例を示す。オートマトンの状態を入力として、最終状態に遷移しているか否かを示す信号を出力する。一方、オートマトンを回路で表現する場合は、各最終状態を表す状態のレジスタの値を出力するのみでよい。
図8は、オートマトンをメモリ表現し、パターンを4つに分割した場合を示している。図8では、テキストから生成される4つの分割テキストのうち、2つをパイプライン処理している。さらに、オートマトンを2つ並列に配置することによって、2つの文字を並列処理している。回路展開した場合も同様に、各状態を表現する回路を2つのステージに細分化したオートマトンを2つ並列に配置する。そして、図8と同様の方法で、テキストを分割してオートマトンに入力し、各分割パターンが最終状態に遷移したか否かを判定することでパターンマッチングが実施可能である。
本発明によれば、パターンマッチングをハードウェア処理した際の各種遅延の隠蔽およびスループットの向上を可能とすることができるため、効率の高いパターンマッチング処理を行うことができるパターンマッチング装置を実現することができる。また、パターンマッチングを汎用の情報処理装置とプログラムとを用いて実現する際にも各種遅延の隠蔽およびスループットの向上を可能とすることができるため、効率の高いパターンマッチング処理を行うことができるパターンマッチング装置を実現することができる。
分割パターンを用いたパターンマッチング装置の構成図。 分割パターンを用いたオートマトンによって文字単位の並列処理を行う実施例を示す図。 メモリを用いたオートマトンによってパイプライン処理する構成を示す図。 回路展開したオートマトンによってパイプライン処理する構成を示す図。 分割パターンを合成したパターンマッチング装置の構成図。 分割パターンを合成したパターンマッチングの実施例を示す図。 メモリ表現した場合の最終状態判定部を示す図。 オートマトンをメモリ表現した場合の実施例を示す図。 Aho−Corasickに基づいて生成されるオートマトンを示す図。 メモリを用いたオートマトンの実現例を示す図。 オートマトンの回路展開例を示す図。
1 オートマトン部
2 最終状態判定部
3 合成済みオートマトン部

Claims (10)

  1. 入力文字列であるテキストから任意文字列であるパターンを検索するパターンマッチング装置において、
    前記パターンの各文字を先頭から順番にk−1(kは2以上の整数)文字置きに振り分けることによって一つのパターンをk個に分割した分割パターンについて、それぞれが互いに異なる前記分割パターンを保持し、これまでに入力されたテキストのサフィックスに対する前記保持している分割パターンの最長プリフィックスを状態として持つk個のオートマトン部を並列させて構成したオートマトン部の組をk組と、
    前記テキストの各文字を先頭から順番にk−1文字置きに振り分けることによって一つのテキストをk個の分割テキストに分割し、k組の前記オートマトン部の組のそれぞれに互いに異なる前記分割テキストを入力する手段と、
    k組の前記オートマトン部の組全てについて、該オートマトン部の組を構成するオートマトン部のいずれかが最終状態になり、かつ互いに異なる前記分割パターンを保持したk個のオートマトン部が該最終状態になったか否かを判定することによってパターンマッチングを行う手段と
    を備えたことを特徴とするパターンマッチング装置。
  2. 前記オートマトン部の組をパイプライン化して実現し、このパイプライン化された前記オートマトン部の組に対し、前記分割テキストと前記分割パターンとの比較を時分割して行うパイプライン処理手段を備えた
    ことを特徴とする請求項1記載のパターンマッチング装置。
  3. 前記オートマトン部の組のそれぞれを、互いに異なる前記分割パターンを保持したk個のオートマトンを合成した、互いに異なる前記分割パターンにそれぞれ対応したk個の最終状態を持つ単一のオートマトン部に置き換えた
    ことを特徴とする請求項1または2に記載のパターンマッチング装置。
  4. パターンマッチング装置が、入力文字列であるテキストから任意文字列であるパターンを検索するパターンマッチング方法において、
    前記パターンの各文字を先頭から順番にk−1(kは2以上の整数)文字置きに振り分けることによって一つのパターンをk個に分割した分割パターンについて、それぞれが互いに異なる前記分割パターンを保持し、これまでに入力されたテキストのサフィックスに対する前記保持している分割パターンの最長プリフィックスを状態として持つk個のオートマトン部を並列させて構成したオートマトン部の組をk組用い
    文字列入力手段が、入力文字列の前記テキストの各文字を先頭から順番にk−1文字置きに振り分けることによって一つのテキストをk個の分割テキストに分割し、k組の前記オートマトン部の組のそれぞれに互いに異なる前記分割テキストを入力するステップと、
    判定手段が、k組の前記オートマトン部の組全てについて、該オートマトン部の組を構成するオートマトン部のいずれかが最終状態になり、かつ互いに異なる前記分割パターンを保持したk個のオートマトン部が該最終状態になったか否かを判定することによってパターンマッチングを行うステップと
    を実行することを特徴とするパターンマッチング方法。
  5. 前記オートマトン部の組をパイプライン化して実現し、このパイプライン化された前記オートマトン部の組に対し、前記分割テキストと前記分割パターンとの比較を時分割して行うパイプライン処理ステップを実行する
    ことを特徴とする請求項4記載のパターンマッチング方法。
  6. 前記オートマトン部の組のそれぞれを、互いに異なる前記分割パターンを保持したk個のオートマトンを合成した、互いに異なる前記分割パターンにそれぞれ対応したk個の最終状態を持つ単一のオートマトン部に置き換えた
    ことを特徴とする請求項4または5記載のパターンマッチング方法。
  7. 情報処理装置にインストールすることにより、その情報処理装置に、
    入力文字列であるテキストから任意文字列であるパターンを検索するパターンマッチング装置に相応する機能を実現させるプログラムにおいて、
    前記パターンの各文字を先頭から順番にk−1(kは2以上の整数)文字置きに振り分けることによって一つのパターンをk個に分割した分割パターンについて、それぞれが互いに異なる前記分割パターンを保持し、これまでに入力されたテキストのサフィックスに対する前記保持している分割パターンの最長プリフィックスを状態として持つk個のオートマトン部を並列させて構成したオートマトン部の組k組に相応する機能と、
    前記テキストの各文字を先頭から順番にk−1文字置きに振り分けることによって一つのテキストをk個の分割テキストに分割し、k組の前記オートマトン部の組のそれぞれに互いに異なる前記分割テキストを入力する機能と、
    k組の前記オートマトン部の組全てについて、該オートマトン部の組を構成するオートマトン部のいずれかが最終状態になり、かつ互いに異なる前記分割パターンを保持したk個のオートマトン部が該最終状態になったか否かを判定することによってパターンマッチングを行う機能と
    を実現させることを特徴とするプログラム。
  8. 前記オートマトン部の組をパイプライン化して実現し、このパイプライン化された前記オートマトン部の組に対し、前記分割テキストと前記分割パターンとの比較を時分割して行うパイプライン処理機能を実現させる
    ことを特徴とする請求項7記載のプログラム。
  9. 前記オートマトン部の組のそれぞれを、互いに異なる前記分割パターンを保持したk個のオートマトン合成した、互いに異なる前記分割パターンにそれぞれ対応したk個の最終状態を持つ単一のオートマトン部に置き換えた
    ことを特徴とする請求項7または8のいずれかに記載のプログラム。
  10. 請求項7ないし9のいずれかに記載のプログラムが記録されたことを特徴とする前記情報処理装置読み取り可能な記録媒体。
JP2004051680A 2004-02-26 2004-02-26 パターンマッチング装置および方法ならびにプログラム Expired - Lifetime JP4347087B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2004051680A JP4347087B2 (ja) 2004-02-26 2004-02-26 パターンマッチング装置および方法ならびにプログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2004051680A JP4347087B2 (ja) 2004-02-26 2004-02-26 パターンマッチング装置および方法ならびにプログラム

Publications (2)

Publication Number Publication Date
JP2005242672A JP2005242672A (ja) 2005-09-08
JP4347087B2 true JP4347087B2 (ja) 2009-10-21

Family

ID=35024350

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2004051680A Expired - Lifetime JP4347087B2 (ja) 2004-02-26 2004-02-26 パターンマッチング装置および方法ならびにプログラム

Country Status (1)

Country Link
JP (1) JP4347087B2 (ja)

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7702629B2 (en) * 2005-12-02 2010-04-20 Exegy Incorporated Method and device for high performance regular expression pattern matching
WO2008084594A1 (ja) 2007-01-12 2008-07-17 Nec Corporation パターンマッチング装置及び方法
EP2056221A1 (en) * 2007-10-30 2009-05-06 Mitsubishi Electric Corporation Split state machines for matching
WO2010001464A1 (ja) 2008-07-01 2010-01-07 富士通株式会社 検索装置および検索方法
JP5224953B2 (ja) 2008-07-17 2013-07-03 インターナショナル・ビジネス・マシーンズ・コーポレーション 情報処理装置、情報処理方法およびプログラム
US8766666B2 (en) * 2010-06-10 2014-07-01 Micron Technology, Inc. Programmable device, hierarchical parallel machines, and methods for providing state information
US8593175B2 (en) * 2011-12-15 2013-11-26 Micron Technology, Inc. Boolean logic in a state machine lattice
JP5904045B2 (ja) * 2012-07-24 2016-04-13 住友電気工業株式会社 情報処理装置および情報処理プログラム

Also Published As

Publication number Publication date
JP2005242672A (ja) 2005-09-08

Similar Documents

Publication Publication Date Title
US9647684B2 (en) Memory-based history search
US20080086274A1 (en) Method and Apparatus for Protein Sequence Alignment Using FPGA Devices
US20140019486A1 (en) Logic Content Processing for Hardware Acceleration of Multi-Pattern Search
JP4120888B2 (ja) データ検索装置及び方法
JP2009535747A5 (ja)
CN103309893B (zh) 一种字符串的比较方法及装置
CN106778079A (zh) 一种基于MapReduce的DNA序列k‑mer频次统计方法
JP4347087B2 (ja) パターンマッチング装置および方法ならびにプログラム
US20050120017A1 (en) Efficient retrieval of variable-length character string data
Dandass et al. Accelerating string set matching in FPGA hardware for bioinformatics research
JP2010123000A (ja) Webページグループ抽出方法及び装置及びプログラム
Baker et al. Automatic synthesis of efficient intrusion detection systems on FPGAs
Saegusa et al. An FPGA implementation of real-time K-means clustering for color images
JP2007233554A (ja) 高速パターンマッチング装置の探索方法
Bluthgen et al. A programmable processor for approximate string matching with high throughput rate
JP4347086B2 (ja) パターンマッチング装置および方法ならびにプログラム
CN114827030B (zh) 一种基于折叠sram的流分类装置及表项压缩方法
Lo et al. True suffix tree approach for discovering non-trivial repeating patterns in a music object
JP7172687B2 (ja) 情報処理装置、情報処理方法、及びプログラム
WO2009147794A1 (ja) 有限オートマトン生成システム
WO2018012413A1 (ja) 類似データ検索装置、類似データ検索方法および記録媒体
WO2015143708A1 (zh) 后缀数组的构造方法及装置
Bozdag et al. Parallel short sequence mapping for high throughput genome sequencing
Öztekin et al. Using FPGA-based content-addressable memory for mnemonics instruction searching in assembler design
Saha et al. An approach to enhance the design of protein sequence classifier using data mining

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20060407

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20090414

RD01 Notification of change of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7426

Effective date: 20090605

RD02 Notification of acceptance of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7422

Effective date: 20090605

RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20090605

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20090615

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: 20090714

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20090715

R150 Certificate of patent or registration of utility model

Ref document number: 4347087

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20120724

Year of fee payment: 3

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130724

Year of fee payment: 4

S531 Written request for registration of change of domicile

Free format text: JAPANESE INTERMEDIATE CODE: R313531

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

EXPY Cancellation because of completion of term