JP5120263B2 - パターンマッチング装置及び方法 - Google Patents

パターンマッチング装置及び方法 Download PDF

Info

Publication number
JP5120263B2
JP5120263B2 JP2008553012A JP2008553012A JP5120263B2 JP 5120263 B2 JP5120263 B2 JP 5120263B2 JP 2008553012 A JP2008553012 A JP 2008553012A JP 2008553012 A JP2008553012 A JP 2008553012A JP 5120263 B2 JP5120263 B2 JP 5120263B2
Authority
JP
Japan
Prior art keywords
pattern
pattern detection
address
nfa
combination
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
Application number
JP2008553012A
Other languages
English (en)
Other versions
JPWO2008084594A1 (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.)
NEC Corp
Original Assignee
NEC 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 NEC Corp filed Critical NEC Corp
Priority to JP2008553012A priority Critical patent/JP5120263B2/ja
Publication of JPWO2008084594A1 publication Critical patent/JPWO2008084594A1/ja
Application granted granted Critical
Publication of JP5120263B2 publication Critical patent/JP5120263B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/903Querying
    • G06F16/90335Query processing
    • G06F16/90344Query processing by using string matching techniques
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F40/00Handling natural language data
    • G06F40/20Natural language analysis
    • G06F40/279Recognition of textual entities

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computational Linguistics (AREA)
  • Databases & Information Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • Health & Medical Sciences (AREA)
  • Artificial Intelligence (AREA)
  • Audiology, Speech & Language Pathology (AREA)
  • General Health & Medical Sciences (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Image Analysis (AREA)

Description

本発明は、入力されたデータの中に特定のパターンが存在するか否かを判定するパターンマッチング装置及び方法に関する。
入力されたデータの中に特定のパターンが存在するか否かを判定するパターンマッチングは、情報処理分野における要素技術であり、その用途は多岐にわたる。例えば、ワードプロセッサでのテキスト検索、バイオテクノロジーにおけるDNA解析、電子メールなどに潜むコンピュータウィルスの検知、等である。
パターンマッチングの実現手段の1つとして、有限オートマトン(別名:有限状態機械、有限ステートマシン)を利用する方法がある。
パターンマッチングのための有限オートマトンは、パターンあるいはパターンの集合から作成される。
例として、3種類のパターン“ABC”,“CAB”,“ABCD”を受理するNFA(Non-deterministic Finite Automaton:非決定性有限オートマトン)及びDFA(Deterministic Finite Automaton:決定性有限オートマトン)について説明する。
図1は、NFAの一例を示す図である。また、図2は、DFAの一例を示す図である。なお、NFAとDFAの違いについては後述する。
パターンマッチングのための有限オートマトンは、初期状態から開始し、入力された文字に対応する枝を経由して次の状態へ遷移する。そして、パターンの最終文字に対応する状態(図中では二重円で囲まれた状態)に到達したら、そのパターンを検出したとみなす。
上記の動作を、テキストの先頭から末尾までの全ての文字について繰り返し実施する。
有限オートマトンの表現形式として、NFAとDFAの2種類が存在する。
DFAは、決定性という単語が示すように、現在の状態と入力が決まると、次の状態が一意に定まる有限オートマトンである。一方、NFAは、次の状態が一意に定まらない有限オートマトンである。
例えば、図1に示したNFAの状態“0”に着目すると、入力された文字“A”に対応する遷移先は状態“0”、状態“1”、状態“2”の3つが存在する。
逐次処理コンピュータ上でNFAを動作させる場合、ある状態からの遷移先が複数存在するとき、その状態をスタックに積んでから、複数の遷移先のうち1つを選んで状態遷移する。そして、状態遷移できなくなるかテキストの末尾に達するまでNFAを辿る。
その後、スタックから状態を1つ取り出して、その状態へ復帰し、前回と異なる遷移先を選択して状態遷移する。
上記の動作をスタックが空になるまで繰り返す。
このように、逐次処理コンピュータ上でNFAを動作させる場合、過去の状態に戻って状態遷移を再開する行為、すなわち、バックトラック(Backtracking)が発生する。このバックトラックの影響により、NFAに基づく検索の速度はDFAよりも劣る。
一方、DFAに含まれる状態の数と状態遷移の数(枝の本数)は、NFAよりも多くなる傾向がある。そのため、DFAを格納するためのメモリの量はNFAの場合よりも多くなる。また、DFAの作成には多くの計算量を必要とすることが知られている。
上述のように、NFAの唯一の欠点は、バックトラックによる検索速度の低下である。バックトラックは、逐次処理コンピュータにおいて複数の遷移先を同時に探索できないという制約に起因して発生する。すなわち、バックトラックを抑制するには並列処理が求められる。
そこで、NFAをフリップフロップと各種ゲート(ANDやOR)との組み合わせで表現して、それらを回路としてLSI等のデバイスに埋め込み、その回路を利用してパターンマッチングする方法が、著者:R. Sidhu and V. K. Prasanna、題目:Fast Regular Expression Matching using FPGAs、出典:Field-Programmable Custom Computing Machines (FCCM), Rohnert Park, CA, USA, Apr. 2001の文献に提案されている。
このようにNFAを回路化することにより、NFAの欠点であるバックトラックを解消できる。その理由は、回路においては全てのフリップフロップとゲートは並列に動作可能であるからである。
図3は、入力されるパターンの一例を示す図である。また、図4は、図3に示したパターンを受理するNFAを示す図である。また、図5は、図4に示したNFAをフリップフロップとゲートとで表現した回路図の一例を示す図である。
図3に示す3つのパターン“AB*C”,“A[B|C]”,”CAB”には、正規表現が含まれる。正規表現とはパターンを簡潔に表現するための表現法である。
第1のパターン“AB*C”に含まれる“B*”は0個以上のBの連続を表す。従って、第1のパターンは、テキスト“AC”,“ABC”,“ABBC”,…にマッチする。
第2のパターン“A[B|C]”に含まれる“[B|C]”はBまたはCを表す。従って、第2のパターンは、テキスト“AB”,“AC”にマッチする。
図5に示すように、NFA回路10の入力は、検索対象のテキスト20の構成要素である文字22である。テキスト20は、その先頭の文字から順に1文字ずつ、文字22としてNFA回路10に与えられる。
NFA回路10は、X番目のパターンを検出するたびに、パターン検出信号30−X(1≦X≦3)を1にする。一方、それ以外のパターン検出信号30−1〜30−3を0にする。なお、NFAの非決定性によりパターン検出信号30−1〜30−3のうち2つ以上が、同時に1になる場合もある。
図4に示したNFAの回路化は、状態の回路化ステップと状態遷移の回路化ステップを経て行われる。
状態の回路化ステップでは、NFAの中の1つの状態を1つのフリップフロップで置き換える。状態が有効であるとき、対応するフリップフロップの出力値が1になる。
状態遷移の回路化ステップでは、遷移条件となる文字(=NFAの枝に付与されている文字)と文字22とを比較する比較器を配置する。比較器は、両者が一致していれば1を出力する。
比較器の出力と、遷移元のフリップフロップの出力との論理積(AND)をとり、その論理積を、遷移先のフリップフロップの入力とする。また、複数の状態から1つの状態への遷移が存在する場合は、複数の遷移元からの論理積の論理和(OR)をとり、その論理和を遷移先のフリップフロップの入力とする。
回路化されたNFAを利用するパターンマッチング方法は、所望のパターンを検索するための専用回路を構成するので、検索速度が極めて高速であるという利点を有する。
しかしながら、回路化されたNFAを利用するパターンマッチング方法は、多数のパターンが存在している場合、テキストにマッチしたパターンを識別することが困難であるという問題点がある。
以下に、この問題点について詳細に説明する。
最も単純なパターン識別方法は、図5に示したNFA回路10が出力するパターン検出信号30−1〜30−Nの値を個別に調べることである。ここで、Nはパターンの個数である。
パターン検出信号30−X(1≦X≦N)の値が1であれば、X番目のパターンが検出されたことになる。この方法では、例えばパターンの個数が10000であるとき、10000本のパターン検出信号30−1〜30−10000の値を全て検査する回路を設ける必要がある。従って、この方法は、パターンの個数が多いとき、ゲート規模・配線量・動作速度の点で実現性に乏しいと言える。
そこで、より洗練された別のパターン識別方法としてプライオリティ・エンコーダを用いる従来法が、著者:小野 正人(筑波大学システム情報工学研究科)、他、題目:NIDSにおけるNFAパターンマッチング回路の設計と試作、出典:電子情報通信学会 信学技報 CPSY2004-17の文献に記載されている。
プライオリティ・エンコーダとは、入力されたビット列を数値にエンコードする回路である。一般的には、入力されたNビットは0以上(N−1)以下の数値に変換され、エンコード後の数値はlog2(N)ビットで表現される。
入力されたビット列において同時に複数のビットが1になった場合でも出力値を確定させるために、各ビットに優先度が付与される。優先度の高いビットが1であった場合、それよりも優先度が低いビットは無視される。
パターンに正規表現が含まれなければ、プライオリティ・エンコーダを用いてパターン検出信号30−1〜30−Nのビット列を数値にエンコードし、エンコード後の数値を参照してテキストに含まれるパターンの種類を識別できる。
例えば、N=8192であるとき、エンコード後の数値は0〜8191となり、13ビットで表現される(log2(8192)=13)。
すなわち、8192本のパターン検出信号30−1〜30−8192を直接参照する必要はなくなり、回路規模が削減される。
しかし、プライオリティ・エンコーダを用いる従来法では、パターンに正規表現が含まれる場合、パターンの種類を常に識別できるとは限らない。
以下に、この理由について具体例を用いて説明する。
前述のとおり、プライオリティ・エンコーダを使用する際には、入力される各ビットに優先順位を定義しなければならない。言い換えれば、各ビットに優先順位を一意に定義できなければ、エンコード後の数値を参照してテキストに含まれるパターンの種類を正確に識別できない。
図6は、図5に示したNFA回路10が出力するパターン検出信号30−1〜30−3の値の組み合わせを示す図である。
図6に示した入力表15のパターン検出信号30−1とパターン検出信号30−2の列に着目すると、それらの値の組み合わせは00,01,10,11の4通りである。これの意味するところは、パターン検出信号30−1とパターン検出信号30−2の値が、それぞれ単独で1になる場合もあり、かつ、両方とも1になる場合もある、ということである。
つまり、パターン検出信号30−1とパターン検出信号30−2は従属関係を満たしていないため、それらの間の優先順位を確定できないことが分かる。
以上説明したように、回路化されたNFAを利用するパターンマッチング方法において、パターンに正規表現が含まれる場合、テキストにマッチしたパターンを識別する実用的な方法は確立されていなかった。
本発明は、上述したような従来の技術が有する問題点に鑑みてなされたものであって、テキストにマッチしたパターンの種類を全て識別可能なパターンマッチング装置及び方法を提供することを目的とする。
上記目的を達成するために本発明は、
回路化されたNFA(Non-deterministic Finite Automaton)から出力されるN個(Nは自然数)のパターン検出信号の値の組み合わせの各々について、前記N個のパターン検出信号のうち有効となるパターン検出信号に対応するパターンを示す識別子と、前記組み合わせの区切りを示すフラグとを、前記組み合わせに応じて設定されるアドレスにそれぞれ格納するメモリと、
前記回路化されたNFAから出力されたパターン検出信号の値の組み合わせを用いて、該パターン検出信号の値の組み合わせに対応する前記メモリのアドレスを求めるアドレス生成部と、
前記フラグが特定の値になるまで、前記アドレス生成部にて求められたアドレスをインクリメントしていきながら当該アドレスに格納された前記識別子及び前記フラグを前記メモリから連続的に読み出す読み出し制御部とを有する。
上記のように構成された本発明においては、回路化されたNFAから出力されるN個のパターン検出信号の値の組み合わせの各々について、N個のパターン検出信号のうち有効となるパターン検出信号に対応するパターンを示す識別子と、N個のパターン検出信号の値の組み合わせの区切りを示すフラグとが、メモリのうち組み合わせに応じて設定されるアドレスにそれぞれ格納される。その後、回路化されたNFAからパターン検出信号の値が出力されると、アドレス生成部において、その組み合わせを用いてパターン検出信号の値の組み合わせに対応するメモリのアドレスが求められ、読み出し制御部において、メモリから読み出されるフラグが特定の値になるまで、アドレス生成部にて求められたアドレスをインクリメントしていきながらそのアドレスに格納された識別子及びフラグがメモリから連続的に読み出される。
本発明においては、回路化されたNFAから出力されるN個のパターン検出信号の値の組み合わせの各々について、N個のパターン検出信号のうち有効となるパターン検出信号に対応するパターンを示す識別子と、N個のパターン検出信号の値の組み合わせの区切りを示すフラグとを、組み合わせに応じて設定されるアドレスにそれぞれ格納するメモリと、回路化されたNFAから出力されたパターン検出信号の値の組み合わせを用いて、該パターン検出信号の値の組み合わせに対応するメモリのアドレスを求めるアドレス生成部と、フラグが特定の値になるまで、アドレス生成部にて求められたアドレスをインクリメントしていきながら当該アドレスに格納された識別子及びフラグをメモリから連続的に読み出す読み出し制御部とを有する構成としたため、テキストにマッチしたパターンの種類を識別することができる。
NFAの一例を示す図である。
DFAの一例を示す図である。
入力されるパターンの一例を示す図である。
図3に示したパターンを受理するNFAを示す図である。
図4に示したNFAをフリップフロップとゲートとで表現した回路図の一例を示す図である。
図5に示したNFA回路が出力するパターン検出信号の値の組み合わせを示す図である。
本発明のパターンマッチング装置の実施の一形態を示すブロック図である。
図7に示したNFA回路、アドレス生成部、パターンIDメモリの内容、終端フラグメモリの内容を求める方法を説明するためのフローチャートである。
図4に示したNFAから変換されたDFAを示す図である。
図7に示したパターンIDメモリ、終端フラグメモリ及びインデックスの内容を、図に示した3つのパターンに対応する入力表から作成する様子を示す図である。
図8のフローチャートのステップS102をプログラム的に表現した詳細なアルゴリズムを示す図である。
図7に示したアドレス生成部の真理値表が入力表とインデックスとから構成されることを示す図である。
図12に示した真理値表を満足するアドレス生成部の回路図の一例を示す図である。
図7に示したパターンマッチング装置の内部の信号の変化を時系列で示すタイムチャートの一例である。
図7に示した読み出し制御部の動作を示すフローチャートである。
以下に、本発明の実施の形態について図面を参照して説明する。なお、本発明では、パターンマッチングの対象となるデータを「テキスト」と呼ぶ。また、テキスト及びパターンは、1つ以上の「文字」の並びから構成されるものとする。文字は、人間が認識可能なものに限定されず、単なる数値(バイナリ)でもよい。
図7は、本発明のパターンマッチング装置の実施の一形態を示すブロック図である。
本形態におけるパターンマッチング装置1は図7に示すように、NFA回路10と、アドレス生成部11と、読み出し制御部12と、パターンIDメモリ13と、終端フラグメモリ14とから構成されている。そして、テキスト20を入力とし、テキスト20の中でパターンを発見するたびに、そのパターンに付随する識別子であるパターンID21を出力する。テキスト20は、その先頭の文字から順に1文字ずつ、文字22としてパターンマッチング装置1に与えられる。
NFA回路10は、図5に示したように、背景技術で述べた方法を用いて回路化されたNFAである。例えば、著者:R. Sidhu and V. K. Prasanna、題目:Fast Regular Expression Matching using FPGAs、出典:Field-Programmable Custom Computing Machines (FCCM), Rohnert Park, CA, USA, Apr. 2001の文献に記載された方法を用いて回路化されたものである。NFA回路10の入力は、テキスト20の構成要素である文字22である。NFA回路10は、X番目のパターンを検出するたびに、パターン検出信号30−X(1≦X≦N)を1にし、それ以外のパターン検出信号30−1〜30−Nを0にする。ここで、Nは、パターンの個数であり、自然数である。なお、NFAの非決定性によりパターン検出信号30−1〜30−Nのうち2つ以上が、同時に1になる場合もある。
アドレス生成部11は、パターン検出信号30−1〜30−Nの値の組み合わせに対応する開始アドレス31を算出する。開始アドレス31は、パターンIDメモリ13と終端フラグメモリ14において、読み出しを開始するアドレスである。アドレス生成部11は、パターンに依存し、後述の方法によりパターンから設計される。
読み出し制御部12は、アドレス生成部11から開始アドレス31を受け取り、パターンIDメモリ13と終端フラグメモリ14へ与えるアドレス32を生成する。そして、終端フラグメモリ14から読み出された終端フラグ33が1になるまで、アドレス32をインクリメントする。なお、終端フラグ33は、パターン検出信号30−1〜30−Nの組み合わせの区切りを示すフラグとなる。
パターンIDメモリ13は、読み出し制御部12の制御によって、アドレス32に対応するメモリの内容が読み出され、パターンID21として出力する。
終端フラグメモリ14は、読み出し制御部12の制御によって、アドレス32に対応するメモリの内容が読み出され、終端フラグ33として出力する。
パターンIDメモリ13及び終端フラグメモリ14の内容はパターンに依存し、後述の方法によりパターンから作成される。
なお、本形態では、パターンIDメモリ13と終端フラグメモリ14とを個別に扱っているが、これらを物理的に同一のメモリに収容しても差し支えない。
以下に、上述したNFA回路10、アドレス生成部11、パターンIDメモリ13の内容、終端フラグメモリ14の内容それぞれを、パターンから設計・決定する方法についてフローチャートを参照して説明する。
図8は、図7に示したNFA回路10、アドレス生成部11、パターンIDメモリ13の内容、終端フラグメモリ14の内容を求める方法を説明するためのフローチャートである。
まず、ステップS100において、パターンからNFA回路10を設計する。この設計手法は公知のものであり、背景技術にて説明済みである。
次に、ステップS101において、パターン検出信号30−1〜30−Nの、出現しうる値の組み合わせが全て列挙された入力表15を作成する。パターン検出信号30−1〜30−Nは、それぞれ0か1かの2値をとるため、最大で「2のN乗」個の組み合わせを持つ。
しかし、「2のN乗」個の組み合わせの全てが実際に出現するとは限らない。出現しうるパターン検出信号30−1〜30−Nの組み合わせは、パターンによって一意に決まる。組み合わせを求めるための好適な方法は、ステップS100で求めたNFAを、DFAに変換することである。部分集合構成(Subset Construction)法などの公知のアルゴリズムにより、NFAをDFAに変換できる。
図9は、図4に示したNFAから変換されたDFAを示す図である。
図9中の楕円はDFA状態を表し、楕円に含まれる1つ以上の数字はそれぞれNFA状態の番号を示している。つまり、DFAの各状態は、NFA状態の1つ以上の集合になっている。
例えば、図9のDFA状態{0,1,2}は、NFA状態“0”と“1”と“2”が同時に有効になっており、その他のNFA状態が無効になっている状態を意味する。従って、DFA状態{0,1,2}に遷移したとき、NFA回路10においては、
・NFA状態“1”に対応するパターン検出信号30−1の値=1
・NFA状態“2”に対応するパターン検出信号30−2の値=1
・NFA状態“3”に対応するパターン検出信号30−3の値=0
になる。
すなわち、各DFA状態は、パターン検出信号30−1〜30−Nの値の組み合わせの1つに対応する。
ゆえに、DFAを求めることにより、パターン検出信号30−1〜30−Nの値の組み合わせを全て得ることができる。
入力表15は、パターン検出信号30−1〜30−Nの値の全ての組み合わせが行単位に配列された表である。値が全て0のパターン検出信号30−1〜30−Nに対応する行は、入力表15の第1行に配置される。入力表15の2行目以降については順不同である。
図10は、図7に示したパターンIDメモリ13、終端フラグメモリ14及びインデックスの内容を、図3に示した3つのパターンに対応する入力表から作成する様子を示す図である。
ステップS102において、入力表15を元にして、パターンIDメモリ13の内容、終端フラグメモリ14の内容、インデックス16をそれぞれ作成する。
インデックス16は、図8に示すフローチャートにおいて計算途中に作成されるテンポラリな1次元配列であって、パターンマッチング装置1の構成要素ではない。インデックス16は、M個のセルを持ち、各セルにはパターンIDメモリ13と終端フラグメモリ14のアドレスが格納される。ここでMは、入力表15の行数、すなわち、パターン検出信号30−1〜30−Nの値の組み合わせの数である。
図11は、図8のフローチャートのステップS102をプログラム的に表現した詳細なアルゴリズムを示す図である。
アルゴリズムA102に登場する変数の意味は、下記の通りである。
・index[X](0≦X<M)…インデックス16の(X+1)番目のセルの値
・input[X][Y](0≦X<M、0≦Y<N)…入力表15の(X+1)行目(Y+1)桁目のセルの値
・pattern_id[X](X≧0)…パターンIDメモリ13のアドレス”X”の内容
・termination_flag[X](X≧0)…終端フラグメモリ14のアドレス”X”の内容
アルゴリズムA102を文章で表現すると、次のようになる。
入力表15の各行について、パターン検出信号30−X(1≦X≦N)に対応するセルの値が1であれば、X番目のパターンのIDをパターンIDメモリ13に追記する。
また、そのセルが、値が1である最後のセルであれば、終端フラグメモリ14に1を追記し、そうでなければ0を追記する。
上記の処理を、入力表15の第1行から最終行まで順に実行する。
パターンIDメモリ13及び終端フラグメモリ14への書き込みはアドレス“1”から開始される。すなわち、パターンIDメモリ13及び終端フラグメモリ14のアドレス“0”の内容は不定である。
また、入力表15のX行目(1≦X≦N)の処理において、パターンIDメモリ13及び終端フラグメモリ14に初めて値を書き込んだとき、その書き込んだアドレスをインデックス16のX番目のセルに代入する。
このようにして、図10に示すように、パターンIDメモリ13及び終端フラグメモリ14には、NFA回路10から出力されるパターン検出信号30−1〜30−Nの値の組み合わせの各々について、パターン検出信号30−1〜30−Nのうち有効となるパターン検出信号に対応するパターンを示すパターンIDと、その組み合わせの区切りとなる終端を示す終端フラグとが、組み合わせに応じて設定されるアドレスにそれぞれ格納される。
次に、ステップS103において、入力表15とインデックス16とから真理値表17を作成する。論理回路における真理値表とは、入力値とそれに対応した出力値を表形式で表したものである。
図12は、図7に示したアドレス生成部11の真理値表が入力表とインデックスとから構成されることを示す図である。
図12に示すように、真理値表17の入力はパターン検出信号30−1〜30−Nであり、出力は開始アドレス31である。また、真理値表17の入力値の組み合わせは入力表15であり、それに対応する出力値はインデックス16である。
さらに、入力表15に定義されていない入力値の組み合わせ、すなわち、パターン検出信号の出現し得ない値の組み合わせを、冗長入力として扱う。冗長入力に対応する出力値を、任意(Don't care)とする。
例として、図10に示した入力表15とインデックス16から作成された真理値表17を図12の下部に示す。
次に、ステップS104において、真理値表17からアドレス生成部11を設計する。アドレス生成部11は、真理値表17を満足する論理回路である。
図13は、図12に示した真理値表17を満足するアドレス生成部11の回路図の一例を示す図である。
一般的に、真理値表から論理回路を設計するには、真理値表を論理圧縮して簡略化された論理式を導出する手順を踏む。特に、真理値表17には冗長入力が存在するため、論理圧縮によってコンパクトな論理回路を得られやすい。
このように、開始アドレス31をパターン検出信号の値の組み合わせから求める際に、パターン検出信号の出現し得ない値の組み合わせを冗長入力として扱うことにより、アドレスを求める回路の規模を小さくすることができる。
論理圧縮に関する公知の方法としては、カルノー(Karnaugh)図、クワイン(Quine)法、クワイン−マクラスキー(Quine-McCluskey)法が代表的である。これらはデジタル電子回路設計の基本であって本分野における一般知識であるため、それらの説明は割愛する。
以下に、図7に示したパターンマッチング装置1の動作について、具体例を挙げて詳細に説明する。
本例では、図3に示した3つのパターン“AB*C”,“A[B|C]”,“CAB”を使用する。また、テキスト20は、4文字からなる文字列“ACAB”であると仮定する。すなわち、文字22として“A”,“C”,“A”,“B”がパターンマッチング装置1に順次与えられる。
上述した実施の形態における方法により、それら3つのパターンに対応するNFA回路10、アドレス生成部11、パターンIDメモリ13及び終端フラグメモリ14の内容は、それぞれ図5、図13及び図10のように作成される。
以下に、パターンマッチング装置1が、パターンをテキスト20の中で検出するたびに、そのパターンに付随するパターンIDを出力する動作について説明する。
図14は、図7に示したパターンマッチング装置1の内部の信号の変化を時系列で示すタイムチャートの一例であり、本例における、パターン検出信号30−1〜30−3、開始アドレス31、アドレス32、終端フラグ33、パターンID21、のそれぞれの値を時系列順に記している。
まず、テキスト20の1文字目の“A”がパターンマッチング装置1に入力されたときの動作を説明する。
文字22として“A”が図5に示したNFA回路10に与えられると、NFA回路10はパターン検出信号30−1〜30−3を出力し、それらの値は全て0になる。
パターン検出信号30−1〜30−3はアドレス生成部11へ入力され、開始アドレス32として0が出力される。開始アドレス32は読み出し制御部12に与えられる。
ここで、読み出し制御部12の動作を説明する。
図15は、図7に示した読み出し制御部12の動作を示すフローチャートである。
まず、ステップS200において、アドレス生成部11から開始アドレス31を取得する。
次に、ステップS201において、開始アドレス31の値が0であるか否かを判定し、0であればステップS200に戻る。0以外であれば、ステップS202において、取得した開始アドレス31をアドレス32に代入する。
ステップS202とステップS203の間において、パターンIDメモリ13及び終端フラグメモリ14は、読み出し制御部12の制御によって、アドレス32に対応するメモリの内容を読み出し、パターンID21、終端フラグ33として、それぞれ出力する。
ステップS203において、読み出し制御部12は、読み出された終端フラグ33を受け取る。
その後、ステップS204において、終端フラグ33の値が1であるか否かを判定し、1であればステップS200に戻る。また、1以外であれば、ステップS205において、アドレス32の内容を1だけ増加させてから、ステップS203に戻る。
パターンマッチング装置1の動作の説明に復帰する。
前述のように、文字22として“A”が入力された時点では、開始アドレス32の値は0である。
このとき、読み出し制御部12では、図15に示したステップS201の条件が成立して即座にステップS200に戻り、テキスト20の1文字目に対応する処理は終了する。
この時点ではパターンは検出されず、パターンID21は出力されない。
引き続き、テキスト20の2文字目の“C”がパターンマッチング装置1に入力されたときの動作を説明する。
文字22として”C”が図5に示したNFA回路10に与えられると、パターン検出信号30−1〜30−3の値は順に1,1,0になる。
このとき、アドレス生成部11は、開始アドレス32として2を出力する。
読み出し制御部12では、開始アドレス32の値が0以外であるため、図15に示したステップS201の条件は成立せずにステップS202へ進み、開始アドレス31の値、すなわち2がアドレス32に代入される。
図10を参照すると、パターンIDメモリ13のアドレス“2”に対応するメモリの内容は第1のパターンのIDであるから、パターンID21として第1のパターンのIDが出力される。
また、終端フラグメモリ14のアドレス“2”に対応するメモリの内容は0であるから、終端フラグ33の値は0になる。終端フラグ33の値は0であるため、図15に示したステップS204の条件は成立せず、ステップS205へ進み、アドレス32に1を加算して3とする。
前回と同様に、図10を参照すると、パターンIDメモリ13のアドレス“3”に対応するメモリの内容は第2のパターンのIDであるから、パターンID21として第2のパターンのIDが出力される。
また、終端フラグメモリ14のアドレス“3”に対応するメモリの内容は1であるから、終端フラグ33の値は1になる。終端フラグ33の値は0でないため、ステップS204の条件が成立し、ステップS200に戻り、テキスト20の2文字目に対応する処理は終了する。
テキスト20の3文字目のA及び4文字目のBがパターンマッチング装置1に入力された際の動作は上記と同様である。
以上、実施例を参照して本願発明を説明したが、本願発明は上記実施例に限定されるものではない。本願発明の構成や詳細には、本願発明のスコープ内で当業者が理解し得る様々な変更をすることができる。
この出願は、2007年1月12日に出願された日本出願特願2007−004458を基礎とする優先権を主張し、その開示の全てをここに取り込む。

Claims (4)

  1. 回路化されたNFA(Non-deterministic Finite Automaton)から出力されるN個(Nは自然数)のパターン検出信号の値の組み合わせの各々について、前記N個のパターン検出信号のうち有効となるパターン検出信号に対応するパターンを示す識別子と、前記組み合わせの区切りを示すフラグとを、前記組み合わせに応じて設定されるアドレスにそれぞれ格納するメモリと、
    前記回路化されたNFAから出力されたパターン検出信号の値の組み合わせを用いて、該パターン検出信号の値の組み合わせに対応する前記メモリのアドレスを求めるアドレス生成部と、
    前記フラグが特定の値になるまで、前記アドレス生成部にて求められたアドレスをインクリメントしていきながら当該アドレスに格納された前記識別子及び前記フラグを前記メモリから連続的に読み出す読み出し制御部とを有するパターンマッチング装置。
  2. 請求項1に記載のパターンマッチング装置において、
    前記アドレス生成部は、前記回路化されたNFAから出力されたパターン検出信号の値の組み合わせを用いて、該パターン検出信号の値の組み合わせに対応する前記メモリのアドレスを求める際に、前記パターン検出信号の出現し得ない値の組み合わせを冗長入力として扱うパターンマッチング装置。
  3. 回路化されたNFA(Non-deterministic Finite Automaton)から出力されるN個(Nは自然数)のパターン検出信号の値の組み合わせの各々について、前記N個のパターン検出信号のうち有効となるパターン検出信号に対応するパターンを示す識別子と、前記組み合わせの区切りを示すフラグとを、前記組み合わせに応じて設定されるアドレスにそれぞれメモリに格納する第1の処理と、
    前記回路化されたNFAから出力されたパターン検出信号の値の組み合わせを用いて、該パターン検出信号の値の組み合わせに対応する前記メモリのアドレスを求める第2の処理と、
    前記フラグが特定の値になるまで、前記第2の処理にて求められたアドレスをインクリメントしていきながら当該アドレスに格納された前記識別子及び前記フラグを前記メモリから連続的に読み出す第3の処理とを有するパターンマッチング方法。
  4. 請求項3に記載のパターンマッチング方法において、
    前記第2の処理は、前記回路化されたNFAから出力されたパターン検出信号の値の組み合わせを用いて、該パターン検出信号の値の組み合わせに対応する前記メモリのアドレスを求める際に、前記パターン検出信号の出現し得ない値の組み合わせを冗長入力として扱うパターンマッチング方法。
JP2008553012A 2007-01-12 2007-11-06 パターンマッチング装置及び方法 Expired - Fee Related JP5120263B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2008553012A JP5120263B2 (ja) 2007-01-12 2007-11-06 パターンマッチング装置及び方法

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
JP2007004458 2007-01-12
JP2007004458 2007-01-12
PCT/JP2007/071526 WO2008084594A1 (ja) 2007-01-12 2007-11-06 パターンマッチング装置及び方法
JP2008553012A JP5120263B2 (ja) 2007-01-12 2007-11-06 パターンマッチング装置及び方法

Publications (2)

Publication Number Publication Date
JPWO2008084594A1 JPWO2008084594A1 (ja) 2010-04-30
JP5120263B2 true JP5120263B2 (ja) 2013-01-16

Family

ID=39608492

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2008553012A Expired - Fee Related JP5120263B2 (ja) 2007-01-12 2007-11-06 パターンマッチング装置及び方法

Country Status (3)

Country Link
US (1) US8626688B2 (ja)
JP (1) JP5120263B2 (ja)
WO (1) WO2008084594A1 (ja)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8572014B2 (en) * 2009-10-16 2013-10-29 Mcafee, Inc. Pattern recognition using transition table templates
US9558825B1 (en) * 2014-06-25 2017-01-31 Hrl Laboratories, Llc System and method to discover and encode indirect associations in associative memory
US11093218B2 (en) 2017-07-14 2021-08-17 Microsoft Technology Licensing, Llc Dynamic pattern matching code generation
JP2019057123A (ja) * 2017-09-21 2019-04-11 株式会社東芝 対話システム、方法、及びプログラム

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2003308333A (ja) * 2002-04-16 2003-10-31 Fujitsu Ltd 繰り返しを含む順序パターンを用いた検索装置および方法
JP2005122444A (ja) * 2003-10-16 2005-05-12 Internatl Business Mach Corp <Ibm> 形態素解析システム、形態素解析方法及びプログラム
WO2006061899A1 (ja) * 2004-12-09 2006-06-15 Mitsubishi Denki Kabushiki Kaisha 文字列照合装置および文字列照合プログラム
JP2007142767A (ja) * 2005-11-17 2007-06-07 Univ Of Tsukuba パターンマッチング装置、その形成方法、それを用いたネットワーク不正侵入検知装置の動作方法、およびそれを用いた侵入防止システムの動作方法
WO2008081932A1 (ja) * 2006-12-28 2008-07-10 Nec Corporation 文字列照合用有限オートマトン生成システム、その生成方法、及び生成プログラム

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH03119397A (ja) 1989-10-03 1991-05-21 Nec Corp パターンマッチング装置
JP2921119B2 (ja) 1990-12-26 1999-07-19 株式会社日立製作所 数値検索装置および数値検索方法
US7975305B2 (en) * 1997-11-06 2011-07-05 Finjan, Inc. Method and system for adaptive rule-based content scanners for desktop computers
US6990552B2 (en) * 2002-10-31 2006-01-24 Mosaid Technologies, Inc. Sorting method and apparatus using a CAM
US7305391B2 (en) * 2003-02-07 2007-12-04 Safenet, Inc. System and method for determining the start of a match of a regular expression
JP4120888B2 (ja) 2004-01-30 2008-07-16 日本電気株式会社 データ検索装置及び方法
JP4347087B2 (ja) 2004-02-26 2009-10-21 日本電信電話株式会社 パターンマッチング装置および方法ならびにプログラム
US7260558B1 (en) * 2004-10-25 2007-08-21 Hi/Fn, Inc. Simultaneously searching for a plurality of patterns definable by complex expressions, and efficiently generating data for such searching
US7502769B2 (en) * 2005-01-31 2009-03-10 Knowmtech, Llc Fractal memory and computational methods and systems based on nanotechnology

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2003308333A (ja) * 2002-04-16 2003-10-31 Fujitsu Ltd 繰り返しを含む順序パターンを用いた検索装置および方法
JP2005122444A (ja) * 2003-10-16 2005-05-12 Internatl Business Mach Corp <Ibm> 形態素解析システム、形態素解析方法及びプログラム
WO2006061899A1 (ja) * 2004-12-09 2006-06-15 Mitsubishi Denki Kabushiki Kaisha 文字列照合装置および文字列照合プログラム
JP2007142767A (ja) * 2005-11-17 2007-06-07 Univ Of Tsukuba パターンマッチング装置、その形成方法、それを用いたネットワーク不正侵入検知装置の動作方法、およびそれを用いた侵入防止システムの動作方法
WO2008081932A1 (ja) * 2006-12-28 2008-07-10 Nec Corporation 文字列照合用有限オートマトン生成システム、その生成方法、及び生成プログラム

Also Published As

Publication number Publication date
US20100049713A1 (en) 2010-02-25
JPWO2008084594A1 (ja) 2010-04-30
WO2008084594A1 (ja) 2008-07-17
US8626688B2 (en) 2014-01-07

Similar Documents

Publication Publication Date Title
CN106852185B (zh) 基于字典的并行压缩编码器
US9870530B2 (en) Methods and systems for data analysis in a state machine
US9817678B2 (en) Methods and systems for detection in a state machine
US9275290B2 (en) Methods and systems for routing in a state machine
JP5736042B2 (ja) 階層構造を使用するデータの分析
US8972450B2 (en) Multi-stage parallel multi-character string matching device
JP4810915B2 (ja) データ検索装置及び方法、並びにコンピュータ・プログラム
JP2015505399A (ja) 状態機械格子におけるカウンタ動作
WO2013090092A1 (en) Boolean logic in a state machine lattice
US20180024841A1 (en) Adaptive routing to avoid non-repairable memory and logic defects on automata processor
US20170193351A1 (en) Methods and systems for vector length management
JP5120263B2 (ja) パターンマッチング装置及び方法
US11580055B2 (en) Devices for time division multiplexing of state machine engine signals
US10929764B2 (en) Boolean satisfiability
CN112926647A (zh) 模型训练方法、域名检测方法及装置
JPH0666050B2 (ja) ソート処理方法
CN103294735B (zh) 基于tcam的确定性有穷状态自动机dfa的匹配方法和装置
JP2745710B2 (ja) ストリングサーチ方法およびそのための装置
TWI443538B (zh) Multi - hierarchical parallel multi - character string alignment device
JP2845173B2 (ja) 論理照合方式
Daneshgaran et al. Efficient parallel pipelinable VLSI architecture for finding the maximum binary number
CN113703737A (zh) 一种寄存器传输级代码生成方法、装置、设备及介质
TWI509441B (zh) Can flexibly set the data width of the multi-character string alignment device
KR20220101518A (ko) 곱셈-누산 회로 및 이를 포함하는 프로세싱-인-메모리 장치
JP2564881B2 (ja) ビット列比較方式

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20101013

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

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

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

Free format text: PAYMENT UNTIL: 20151102

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees