JP5169837B2 - 文字列照合用有限オートマトン生成システム、その生成方法、及び生成プログラム - Google Patents

文字列照合用有限オートマトン生成システム、その生成方法、及び生成プログラム Download PDF

Info

Publication number
JP5169837B2
JP5169837B2 JP2008552183A JP2008552183A JP5169837B2 JP 5169837 B2 JP5169837 B2 JP 5169837B2 JP 2008552183 A JP2008552183 A JP 2008552183A JP 2008552183 A JP2008552183 A JP 2008552183A JP 5169837 B2 JP5169837 B2 JP 5169837B2
Authority
JP
Japan
Prior art keywords
matrix
finite automaton
nfa
characters
conversion
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
JP2008552183A
Other languages
English (en)
Other versions
JPWO2008081932A1 (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 JP2008552183A priority Critical patent/JP5169837B2/ja
Publication of JPWO2008081932A1 publication Critical patent/JPWO2008081932A1/ja
Application granted granted Critical
Publication of JP5169837B2 publication Critical patent/JP5169837B2/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

Landscapes

  • Engineering & Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Computational Linguistics (AREA)
  • Data Mining & Analysis (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Description

[関連出願の記載]
本発明は、日本国特許出願:特願2006−355533号(2006年12月28月日出願)の優先権主張に基づくものであり、同出願の全記載内容は引用をもって本書に組み込み記載されているものとする。
本発明は、文字列照合用有限オートマトン生成技術に関し、特に複数文字列の同時並列入力による文字列照合ができる文字列照合用有限オートマトン生成システム、方法、及び生成プログラムに関する。
従来、文字列照合(パターンマッチ)用の有限オートマトン(Finite Automaton)として、ある1つの状態から同じ文字に対して複数の遷移先を許す非決定性有限オートマトン(NFA: Non−deterministic Finite Automaton)を用いる方法、もしくは、それを許さない決定性有限オートマトン(DFA: Deterministic Finite Automaton)を用いる方法がある。
例えば、特許文献1、非特許文献1に記載されているように、NFAは、与えられた正規表現等の検索対象条件から構文木を構築し、これに基づいて生成することができる。また、DFAはNFAを用いて生成することができる。
一般的に、ソフトウェアにおけるパターンマッチング処理では、NFAやDFA等の状態をメモリに保存し、状態が遷移する度に、状態に関する情報をメモリから取り出しながらパターンマッチングを行う。この際、NFAではある入力文字に対するある状態からの遷移先として複数の状態が存在するため、どの状態へ遷移すれば正しい結果が得られるか判断できず、ひとまずどれかの状態へ遷移して処理を進め、失敗した場合にバックトラック法を用いて別の状態へ遷移するという処理が必要になる。
一方、DFAではある入力文字に対するある状態からの遷移先が1つしかないことから、NFAよりも高速に処理が可能であるという利点がある反面、NFAよりも状態数が増加し、多くのメモリ容量が必要となるという欠点がある。
こうしたソフトウェアにおけるパターンマッチング処理の問題を解決するため、近年、ハードウェア回路にNFAを直接組み込むことにより、その並列動作による高速性を活かし、NFAを用いた高速なパターンマッチングを行う方法がある(非特許文献2)。また、1クロックサイクルにおける入力文字数を増加させることで、より検索スループットの向上を目指す方法もある(非特許文献3)。さらに、NFAの状態遷移条件を複数文字によって行うことにより、同時に複数文字の文字列入力を行うことで検索スループットの向上を図る方法も提案されてきている(非特許文献4,非特許文献5)。
特開2003−242179号公報(第20−34段落、図1〜図9) 定本Cプログラマのためのアルゴリズムとデータ構造(第297−330頁、近藤嘉雪、1998年) Proceedings of the 9th Annual IEEE Symposium on Field-Programmable Custom Computing Machines(第227―238頁、Reetinder Sidhu,Viktor K. Prasanna、2001年) Proceedings of 2004 IEEE International Conference on Field-Programmable Technology(第25―32頁、Peter Sutton、2004年) Proceedings of the 12th Annual IEEE Symposium on Field-Programmable Custom Computing Machines(第249頁−257頁、Christopher R. Clark、David E. Schimmel、2004年) 情報処理学会論文誌:コンピューティングシステム Vol.46、No.SIG12(ACS11)(第120−128頁、片下敏宏,前田敦司,小野正人,戸田賢二, 山口喜教、2005年)
以上の特許文献1、非特許文献1乃至5の開示事項は、本書に引用をもって繰り込み記載されているものとする。以下に本発明による関連技術の分析を与える。上記したように、ハードウェアにNFAを直接組み込んでパターンマッチングを行う方法には、以下のような複数の問題点があった。
第1の問題点は、正規表現等から生成したNFAを組み込むだけでは、より一層の検索スループットの向上ができないことである。
その理由は、組み込んだNFAの状態遷移条件は被検索対象文字列の入力1文字に対する条件であるため、1クロックサイクルあたり1文字の検索しか行うことができないためである。
第2の問題点は、上記のような1文字遷移のNFAは変化させず、1クロックサイクルあたりでの検索文字数を増加させるだけでは、検索スループットの向上に直接結びつかないことである。
その理由は、1クロックサイクルあたりでの検索文字数を増加させただけでは、同時に処理を行う文字数だけパスが長くなるため、クロックサイクルの周期が増加し、結果的に動作周波数が低下してしまうためである。つまり、仮に文字数が4倍になっても、動作周波数が1/4以下になってしまう可能性もある。
第3の問題点は、NFAの状態遷移条件を複数文字によって行う現在の方法では、正規表現のような柔軟な文字列検索ができないことである。
その理由は、正規表現から構成されるループを含むようなNFAではなく、それを展開し、ループをなくした単純な文字列検索(厳密一致:Exact Match)しか考慮されていないためである。
第4の問題点は、NFAの状態遷移条件を複数文字に拡張する際に状態数が増加してしまうことである。
その理由は、同時処理を行う文字数におけるオフセットを考慮し、処理する文字数分だけNFAを生成するためである。
従って、本発明が解決しようとする第1の課題は、正規表現等による柔軟な文字列検索を高速に行うための有限オートマトンの生成システム、生成方法、および生成プログラムを提供することにある。
さらに、本発明が解決しようとする第2の課題は、1文字で遷移するNFAが構築できるような検索対象を、同時並列処理を行う任意の文字数に合わせた有限オートマトンに生成するシステム、生成方法、および生成プログラムを提供することにある。
さらに、本発明が解決しようとする第3の課題は、1文字で遷移するNFAの状態数を増加させずに同時並列処理を行う文字数に合わせた有限オートマトンを生成するシステム、生成方法、および生成プログラムを提供することにある。
本発明によれば、固定文字数の遷移条件から成る有限オートマトンの遷移条件の文字数を、任意に指定する文字数に増加させる有限オートマトン生成システム(方法、プログラム)が提供される。前記有限オートマトンは行列形式で記述されている。本発明おいて、前記増加させる手段は、元の有限オートマトンの状態数を変化させない。あるいは、本発明において、前記増加させる手段は、予め定義された演算規則をもった行列演算に従う。あるいは、本発明において、前記増加させる手段は、予め定義された演算規則を複数の部分行列を用いた行列演算に適用する。本発明において、前記複数の部分行列を用いた行列演算は、演算を行う度に部分行列を生成し、使用する。あるいは、本発明において、前記複数の部分行列を用いた行列演算は、予め部分行列を生成しておき、前記部分行列を使用するようにしてもよい。
本発明の第1の側面に係る有限オートマトン生成システムは、1文字遷移のNFAを記述する行列を予め記憶しておくNFA記述行列記憶部(図1の31)と、1文字遷移のNFA記述行列又はp文字遷移のNFA記述行列を必要に応じて、NFA記述行列記憶部(図1の31)又はNFA変換結果行列記憶部(図1の32)からそれぞれ読み出し、生成した行列を再びNFA変換結果行列記憶部(図1の32)へ記憶させることを繰り返すことで、指定された同時並列処理文字数のNFAに変換するNFA変換手段(図1の21)と、変換後のNFA記述行列を記憶するNFA変換結果行列記憶部(図1の32)と、変換後のNFAを出力するための結果出力手段(図1の22)とを有する。
本発明の第2の側面に係る有限オートマトン生成システムは、1文字遷移のNFAを記述する行列を予め記憶しておくNFA記述行列記憶部(図6の31)と、変換後のNFA記述行列を記憶するNFA変換結果行列記憶部(図6の32)と、NFA変換手段(図6の23)と、結果出力手段(図6の22)とを有し、NFA変換手段(図6の23)は1文字遷移のNFA記述行列又はp文字遷移のNFA記述行列を必要に応じて、NFA記述行列記憶部(図6の31)又はNFA変換結果行列記憶部(図6の32)からそれぞれ読み出し、これらを複数の部分行列に分割してk文字遷移のNFA記述行列を生成し、生成した行列を再びNFA変換結果行列記憶部(図6の32)へ記憶させることを繰り返すことで、指定された同時並列処理文字数のNFAを生成する。
本発明の第3の側面に係る有限オートマトン生成システムは、前記NFA記述行列記憶部(図9の31)に記憶されている有限オートマトンを記述した行列を、複数の部分行列に分割するNFA記述行列分割手段(図9の24)と、前記分割された複数の部分行列を用いて、元の有限オートマトンの遷移条件の文字数を増加させる変換を行うNFA変換手段(図9の25)と、前記NFA変換手段による変換途中の有限オートマトン記述行列を記憶させるNFA変換結果行列記憶部(図9の32)と、前記NFA変換手段による変換途中の有限オートマトン記述行列の複数の部分行列を記憶させるNFA変換結果部分行列記憶部(図9の33)と、前記遷移条件の文字数を、任意に指定する文字数に増加させた有限オートマトン記述行列を出力する結果出力手段(図9の22)と備えている。
本発明の第1乃至第3の有限オートマトン生成システムは、このような構成を採用し、1文字遷移のNFA記述行列を、行列演算により変換することで、第1から第3の課題を解決することができる。
また、本発明の第4の側面に係る有限オートマトン生成システムは、第1または第2または第3の有限オートマトン生成システムの構成に加え、入力された正規表現からNFA記述行列を生成するNFA記述行列生成手段(図12の26)を有する。このような構成を採用し、予め1文字遷移のNFA記述行列を得ていなくても、1文字で遷移するNFAが構築できるような検索対象であればそのNFAを生成することにより、同時並列処理文字数のNFAに変換することができる。なお、上記各括弧内の図面の参照番号は、本発明と実施形態と構成との対応を分かりやすくするためのものであり、本発明を限定するためのものでないことは勿論である。
第1の効果は、予め記憶された1文字遷移の有限オートマトンを、複数文字の同時並列処理による文字列検索において利用することができる有限オートマトンに変換できることにある。
その理由は、1文字遷移の有限オートマトンを所定の行列で記述することにより、NFA変換手段によって、同時並列処理を行う文字数での遷移条件をもつ有限オートマトンに変換した後、NFA変換結果行列記憶部に記憶するためである。
第2の効果は、1文字遷移の有限オートマトンを所定の行列で記述することにより、変換処理が容易になり、常に同様の処理を行うことができることにある。
その理由は、1文字遷移の有限オートマトンに関して、その初期状態や終了状態を含めて行列で記述し、NFA変換手段によって行列演算を行うことができるためである。また、NFA変換手段によって、行列演算の特性を活かした変換を行うことで、目的の同時並列処理を行う文字数での遷移条件をもつ有限オートマトンに変換できるまで処理を逐次的に繰り返す必要もないためである。
第3の効果は、変換可能な検索対象に対する制限を大幅になくし、正規表現などの1文字遷移の有限オートマトンが生成できる検索対象であれば、必ず目的の同時並列処理を行う文字数での遷移条件をもつ有限オートマトンに変換できることにある。
その理由は、NFA記述行列生成手段により、正規表現を必ず1文字遷移のNFAに変換でき、また、変換を行うNFA変換手段では、検索対象の正規表現を考慮せず、あくまで行列として記述された有限オートマトンに対して変換を行うためである。
本発明の第1の実施の形態の構成を示すブロック図 本発明の第1の実施の形態の動作を示す流れ図 本発明の1文字遷移のNFA記述行列を説明するための図 本発明の第1の実施の形態の動作を示す流れ図におけるステップA3を示す流れ図 本発明の4文字遷移のNFA記述行列を説明するための図 本発明の第2の実施の形態の構成を示すブロック図 本発明の第2の実施の形態の動作を示す流れ図 本発明の第2の実施の形態の動作を示す流れ図におけるステップA6を示す流れ図 本発明の第3の実施の形態の構成を示すブロック図 本発明の第3の実施の形態の動作を示す流れ図 本発明の第3の実施の形態の動作を示す流れ図におけるステップA9を示す流れ図 本発明の第4の実施の形態の構成を示すブロック図 本発明の第4の実施の形態の動作を示す流れ図
符号の説明
1 入力装置
2 データ処理装置
3 記憶装置
4 出力装置
5 データ処理装置
6 データ処理装置
7 記憶装置
8 データ処理装置
21 NFA変換手段
22 結果出力手段
23 NFA変換手段
24 NFA記述行列分割手段
25 NFA変換手段
26 NFA記述行列生成手段
31 NFA記述行列記憶部
32 NFA変換結果行列記憶部
33 NFA変換結果部分行列記憶部
A1 m文字遷移のNFA記述行列 M生成準備ステップ
A2 同時並列処理文字数 m の NFA に変換できたかをチェックするステップ
A3 k 文字遷移のNFA記述行列Mk への変換ステップ
A4 同時並列処理文字数 m の NFA 記述行列を整形するステップ
A5 結果を出力するステップ
A6 k 文字遷移のNFA記述行列Mk への変換ステップ
A7 NFA記述行列Sを部分行列へ分割するステップ
A8 m文字遷移のNFA記述行列 M生成準備ステップ
A9 k 文字遷移のNFA記述行列Mk への変換ステップ
A10 正規表現からNFA記述行列S への生成ステップ
B1 k を増加させるステップ
B2 NFA記述行列 Mk-p、Mp を読み込むステップ
B3 Mk の算出を行うステップ
B4 Mk の算出が完了したかをチェックするステップ
B5 部分行列を求めるステップ
B6 Mk の部分行列を算出するステップ
B7 部分行列の和をとり Mk を求めるステップ
B8 NFA記述行列 Mk-p、Mp とそれらの部分行列を読み込むステップ
次に、本発明の実施の形態について図面を参照して詳細に説明する。
図1は、本発明を実施するための第1の実施の形態の構成を示すブロック図である。
図1を参照すると、本発明の第1の実施の形態は、キーボード等の入力装置1と、プログラム制御により動作するデータ処理装置2と、情報を記憶する記憶装置3と、ディスプレイ装置や印刷装置等の出力装置4とを含む。
記憶装置3は、NFA記述行列記憶部31と、NFA変換結果行列記憶部32とを備えている。
NFA記述行列記憶部31は、正規表現等から構築された1文字遷移NFAをNFA記述行列Sの形で予め記憶している。
NFA変換結果行列記憶部32は、NFA変換手段において1文字遷移のNFA記述行列Sから変換されたk文字遷移のNFAの記述行列Mk を記憶する。
データ処理装置2は、NFA変換手段21と、結果出力手段22を備えている。
NFA変換手段21は、1文字遷移のNFA記述行列S 、もしくは、p文字遷移のNFA記述行列Mp を必要に応じて、NFA記述行列記憶部31、もしくは、NFA変換結果行列記憶部32からそれぞれ読み出し、それらを用いてk文字遷移のNFA記述行列Mk を生成し、生成した行列Mkを再びNFA変換結果行列記憶部32へ記憶させる。このような処理を、入力装置1から入力された同時並列処理文字数m の値に従い、m 文字遷移のNFA記述行列M が生成されるまで処理を繰り返す。
結果出力手段22は、m 文字遷移のNFA記述行列をNFA変換結果行列記憶部32から読み出し、NFA記述行列、又はそれを状態遷移図に変換して出力装置4へ出力する。NFA変換手段21、結果出力手段22はデータ処理装置2上で実行されるプログラムによりその処理・機能を実現するようにしてもよいことは勿論である。
次に、図1及び図2を参照して本発明を実施するための第1の実施の形態の動作について詳細に説明する。
入力装置1から与えられた同時並列処理文字数 m はNFA変換手段21に供給される。NFA変換手段21は、まず、目的となるm文字遷移のNFA記述行列Mmの生成準備として、変数 k を1に、NFA記述行列記憶部31から読み出した1文字遷移のNFA記述行列Sを行列M1とし、行列M1をNFA変換結果行列記憶部32へ記憶させる(ステップA1)。
ここで、n個の状態をもつNFAに対する1文字遷移のNFA記述行列S = { sij } (i = 1,…,n、j = 1,…, n)、k文字遷移のNFA記述行列Mk = { mkij}(i = 1,…,n、j = 1,…, n)について以下に説明する。まず、NFA記述行列の行i (i = 1,…, n)、又は列i(i = 1,…, n)は、NFAのn個の状態のそれぞれ1つに対応付けられ、各要素sij 、mkij は、行i、列iに対応付けられた状態から、行j、列jに対応付けられた状態への遷移条件である文字、または文字列の集合を表すものとする。このとき、“+”を用いて複数の条件を表し、任意の文字を表す記号として、以下では“*”を用いる。
さらに、行 i 、又は列 iに対応付けられた状態が初期状態である場合には要素sii に is を、行i 、又は列 iに対応付けられた状態が終了状態である場合には、要素sii に fs を持つものとする。例えば、正規表現“a(bc)*(d|e)”の NFA として図3のような状態0から状態4をもつNFAが構築され、状態i (i = 0,…, 4)を行i+1に対応付けた場合、記述行列Sは[式1]のように表される。
[式1]
Figure 0005169837
NFA変換手段21で、上記の処理(ステップA1)を行うと、続いて変数 k と同時並列処理文字数 m の大小比較を行う(ステップA2)。変数 k よりも同時並列処理文字数m が大きな場合、まだ目的とする m 文字遷移のNFAへ変換できていないと判断し、k文字遷移のNFAへの変換処理を行う(ステップA3)。
図4に、ステップA3におけるより詳細な動作の流れ図を示す。NFA変換手段21は、ステップA3において、まず変数k を増加させる(ステップB1)。この増加の方法として、変数k ×2が同時並列処理文字数 m 以下であれば、k = k×2、そうでなければ k = k + 1 として増加させる。続いて、NFA変換結果行列記憶部32から、既に記憶されているNFA記述行列 Mk-p と Mp を読み出す(ステップB2)。
ここで、変数pは1以上kより小さな整数とし、読み出す Mk-p と Mp はそれらの行列が既に算出されていれば、制限はない。これらの行列を用いて、k文字遷移のNFA記述行列Mk を行列Mk-p と Mpの積を取ることで算出する。この算出においては、以下のような定義を設け、この定義に従って算出を行う。
a、bは、is、fsを含む文字、又は文字列とし、0は空集合とした場合、各要素の演算において、以下のように定義する。
[定義1]: a × b = ab ≠ ba
[定義2]: a × 0 = 0 × a = 0
[定義3]: is × a = is a、 a ×is = 0、is ×is = is is
[定義4]: a ×fs = a fs、fs × a = 0、fs ×fs = fs fs
[式1]の1文字遷移のNFA記述行列S = M1を用いてM2 = M1×M1 = { m2ij }(i = 1,…, 5、j = 1,…,5、k = 2、p = 1)を算出する場合、例えば要素m215 は[式2]で求められる。
[式2]
Figure 0005169837
上記と同様にして、M2 の各要素を算出し、全要素の算出が完了できたことを判断する(ステップB4)と、M2 は[式3]のように算出され、NFA変換手段21は2文字遷移のNFA記述行列M2 をNFA変換結果行列記憶部32に記憶させる。
[式3]
Figure 0005169837
さらに、同時並列処理文字数 m が4であるとした場合、4文字遷移のNFA記述行列M4 を算出するには、2文字遷移のNFA記述行列M2 を用いて、M4 =M2 ×M2 を算出し(k = 4 、p= 2)、[式4]に示す4文字遷移のNFA記述行列M4 を得ることができる。
[式4]
Figure 0005169837
NFA変換手段21では、目的のm文字遷移のNFA記述行列までを得る(ステップA2)と、得た行列Mm の整形を行う(ステップA4)。ここでは、行列の各要素に存在するis、fs を任意の文字を表す“*”で置き換える。その結果、例えば[式4]で示す4文字遷移のNFA記述行列M4 は、[式5]のように整形する。
[式5]
Figure 0005169837
NFA変換手段21は、目的のm文字遷移のNFA記述行列Mm を得ると、結果出力手段22に結果を得たことを通知し、結果出力手段22は、NFA変換結果行列記憶部32からMm を読み出し、出力装置4を通じて結果を出力する。この際、結果出力手段22では、出力フォームがNFA記述行列であれば行列形式を、NFAであればNFA 記述行列 Mmから状態遷移図を作成して出力装置4に提供する。例えば、[式5]に示す4文字遷移のNFA記述行列M4 の状態遷移図は図5のようになる。但し、状態0から状態0、状態4から状態4への遷移条件“****”は初期状態、終了状態における任意の文字列を意味し、このような入力文字列は意味をなさない。このため、図中では表していない。このように、前述の[定義1]から[定義4]に示される予め定められた演算規則に従って、式2から式5に見られる行列演算処理が行われる。
上記第1の実施の形態においては、NFA変換に行列を用いることにより、元々の1文字遷移のNFAの状態数を変化させることなく、同時並列処理文字数遷移のNFAに変換することができる。更に、NFA変換の途中結果の行列のみをNFA変換結果行列記憶部32に記憶させることにより、少ない記憶容量でNFA変換することができる。加えて、変換途中に現在の得ているk文字遷移のNFA記述行列の k と同時並列処理文字数mにより k を増加させることで、k が同時並列処理文字数に達するまで逐次的に k 文字遷移のNFA記述行列を算出する必要が無く、また、最後にm文字遷移のNFA記述行列の整形処理を行うため、任意の文字を表す“*”が is、fs のどちらから生成されているかの判断が不要となる。従って、行列演算に関する処理が簡単になり、生成速度を向上させることができる。
尚、上記実施例では、変数 k の増加方法を同時並列処理数 m との比較によって決定しているが、常に k = k+ 1 として変数kを増加させる方法をとっても良い。
また、非決定性有限オートマトン(NFA)だけでなく、決定性有限オートマトン(DFA)に対しても、本実施の形態と同様の構成を適用することができる。
次に、本発明を実施するための第2の実施の形態について図面を参照して詳細に説明する。
図6は、本発明を実施するための第2の実施の形態の構成を示すブロック図である。
図6を参照すると、本発明の第2の実施の形態に係わるデータ処理装置5は、図1に示された第1の実施の形態におけるデータ処理装置2の構成において、NFA変換手段21がNFA変換手段23に置き換わった構成になる。その他の点は第1の実施の形態と同じである。
データ処理装置5は、NFA変換手段23と、結果出力手段22を備えている。
NFA変換手段23は、1文字遷移のNFA記述行列S 、もしくは、p文字遷移のNFA記述行列Mp を必要に応じて、NFA記述行列記憶部31、もしくは、NFA変換結果行列記憶部32からそれぞれ読み出し、それらを3つの部分行列に分割してk 文字遷移のNFA記述行列Mk を生成し、生成した行列Mkを再びNFA変換結果行列記憶部32へ記憶させる。ここで、3つの分割行列として、1文字遷移のNFA記述行列Sの部分行列をS’、Si、Sa、k 文字遷移のNFA記述行列Mk をM’k、Mik、Makとする。このような処理を、入力装置1から入力された同時並列処理文字数m の値に従い、 m 文字遷移の NFA が生成されるまで処理を繰り返す。結果出力手段22は、第1の実施の形態と同じであるため、説明は省略する。NFA変換手段23、結果出力手段22は、データ処理装置5上で実行されるプログラムによりその処理・機能を実現するようにしてもよいことは勿論である。
次に、図6及び図7を参照して本発明を実施するための第2の実施の形態の動作について詳細に説明する。
入力装置1から与えられた同時並列処理文字数 m はNFA変換手段23に供給される。NFA変換手段23は、まず、目的となるm文字遷移のNFA記述行列Mmの生成準備として、変数 k を 1に、NFA記述行列記憶部31から読み出した1文字遷移のNFA記述行列Sを行列 M1 とし、行列M1 をNFA変換結果行列記憶部32へ記憶させる(ステップA1)。NFA記述行列S、M1の意味は、第1の実施の形態と同じあるため、説明は省略する。
NFA変換手段23で、上記の処理(ステップA1)を行うと、続いて変数 k と同時並列処理文字数 m の大小比較を行う(ステップA2)。変数 k よりも同時並列処理文字数m が大きな場合、まだ目的とする m 文字遷移のNFAへ変換できていないと判断し、k文字遷移のNFAへの変換処理を行う(ステップA6)。
図8に、ステップA6におけるより詳細な動作の流れ図を示す。NFA変換手段23は、ステップA6において、まず変数k を増加させ(ステップB1)、NFA変換結果行列記憶部32から、既に記憶されているNFA記述行列 Mk-p と Mp とを読み出す(ステップB2)。これらの方法は第1の実施の形態と同じあるため、説明は省略する。
続いて、これらの行列Mk-p と Mpとから、それぞれの部分行列M’k-p、Mik-p、Mak-p、M’p、Mip、Mapを求める(ステップB5)。
ここで、k文字遷移の NFA 記述行列 Mkの部分行列 M’k、Mik 、Mak を以下のように定義する。まず、k = 1 の場合のNFA 記述行列 Mk =S の部分行列 M’1、Mi1 、Ma1を次のように定義する。
[定義5]: 部分行列 M’1 は、各要素共にis、fs 以外の要素のみをもつ行列。
[定義6]: 部分行列Mi1 は、is のみを要素にもち、このis は任意の文字を表す“*”に置き換える。
[定義7]: 部分行列Ma1 は、fs のみを要素にもち、このfsは任意の文字を表す“*”に置き換える。
[定義8]: M1 = M’1 + Mi1 + Ma1
例えば、記述行列Sが[式1]のように表されるとき、M’1、Mi1 、Ma1 、M1 は[式6]のように表す。
[式6]
Figure 0005169837

Figure 0005169837
また、k が 1 より大きい場合のNFA記述行列 Mk の部分行列 M’k 、Mik 、Mak は以下の定義によって表す。
[定義9]: 部分行列 M’kは、各要素共に最後に“*” を持たない行列。つまり、 “**a…” のような要素はあっていいが、“…a**” のような要素は持たない。
[定義10]: 部分行列 Mikは、各要素共に初期状態を示すisから置き換えられた“*”の積である “**…” のような要素しか持たない。
[定義11]: 部分行列 Makは、各要素共に最後に “*” を持つものだけで構成される行列。つまり、“…a**” のような要素のみを持つ。
NFA変換手段23は、上記のような部分行列を用いて、k文字遷移のNFA記述行列Mk の部分行列M’k、Mik、Mak を求める。このときの算出には、第1の実施の形態でも定義した定義1から定義4を用いる。ここで、Mk = Mk-p×Mp を定義1から定義4を用いて算出すると、[式7]を得る。
[式7]
Figure 0005169837
定義3、4より、M’k-p×Mip = 0、Mak-p×M’p =0、Mak-p×Mip = 0 となるので、[式7]は[式8]で表される。
[式8]
Figure 0005169837
定義9、10、11と[式8]とにより、k文字遷移のNFA記述行列Mk の部分行列M’k、Mik、Mak は[式9]のように定義できる。なお、[式9]の演算では、任意の文字を表す“*”は通常の文字として扱い、計算を行う。
[式9]
Figure 0005169837
NFA変換手段23は、NFA変換結果行列記憶部32から読み込んだ行列Mk-p と Mpとから、それぞれの部分行列M’k-p、Mik-p、Mak-p、M’p、Mip、Mapを求める(ステップB5)と、上記の[式9]よりM’k、Mik、Mak を求める(ステップB6)。それらの和を取ることで、k文字遷移の NFA 記述行列 Mkを算出し(ステップB7)、全要素の算出が完了できたことを判断する(ステップB4)と、NFA変換手段23はk文字遷移のNFA記述行列Mk をNFA変換結果行列記憶部32に記憶させる。
例えば、図3に示す正規表現“a(bc)*(d|e)”の1文字遷移のNFA記述行列S = M1(式6)の部分行列を用いてM2 の部分行列、及びその和を求めると[式10]のようになる。
[式10]
Figure 0005169837
さらに、同時並列処理文字数 m が4であるとした場合、4文字遷移のNFA記述行列M4 を算出するには、2文字遷移のNFA記述行列M2 の部分行列を用いて、M4 を算出し(k = 4 、p= 2)、[式11]に示す4文字遷移のNFA記述行列M4 の部分行列、及びM4 を得ることができる。
[式11]
Figure 0005169837
NFA変換手段23では、目的のm文字遷移のNFA記述行列までを得る(ステップA2)と、結果出力手段22に結果を得たことを通知し、その後の動作は第1の実施の形態と同じあるため、説明は省略する。
上記第2の実施の形態においては、第1の実施の形態と同様、NFA変換に行列を用いることにより、元々の1文字遷移のNFAの状態数を変化させることなく、同時並列処理文字数遷移のNFAに変換することができる。また、NFA変換手段における行列演算において、既に定義1から定義4が考慮されているため、演算途中において各要素をチェックする必要がない。このため、各部分行列の生成が必要となるものの、分岐等の処理が不要となり、生成速度を向上させることができる。
なお、上記実施例では、第1の実施例と同様、変数 k の増加方法を同時並列処理数 m との比較によって決定しているが、常に k = k + 1 として増加させても良い。また、非決定性有限オートマトン(NFA)だけでなく、決定性有限オートマトン(DFA)に対しても同様の実施の形態で適用することができる。
次に、本発明を実施するための第3の実施の形態について図面を参照して詳細に説明する。
図9は、本発明を実施するための第3の実施の形態の構成を示すブロック図である。
図9を参照すると、本発明の第3の実施の形態に係わるデータ処理装置6は、図6に示された第2の実施の形態におけるデータ処理装置5の構成において、NFA変換手段23がNFA変換手段25に置き換わり、かつ、NFA記述行列分割手段24を備え、記憶装置7は、図6に示された第2の実施の形態における記憶装置3において、NFA変換結果部分行列記憶部33を備えている。その他の点は第2の実施の形態と同じである。
データ処理装置6は、NFA記述行列分割手段24と、NFA変換手段25と、結果出力手段22を備えている。
NFA記述行列分割手段24は、1文字遷移のNFA記述行列S をNFA記述行列記憶部31から読み出し、部分行列S’、Si、Saに分割し、1文字遷移のNFA記述行列Sと共にそれらの行列をNFA変換手段25へと提供する。
NFA変換手段25は、NFA記述行列分割手段24からのNFA記述行列S、及びその部分行列S’、Si、Saを1文字遷移のNFA記述行列M1、及び、その部分行列M’1、Mi1、Ma1として受け取り、M1をNFA変換結果行列記憶部32に、部分行列M’1、Mi1、Ma1をNFA変換結果部分行列記憶部33に記憶させる。NFA変換手段25は、既に変換され、NFA変換結果行列記憶部32とNFA変換結果部分行列記憶部33に記憶されているk-p文字遷移のNFA記述行列Mk-pとその部分行列M’k-p、Mik-p、Mak-p、また、p文字遷移のNFA記述行列Mp とその部分行列M’p、Mip、Mapを必要に応じて読み出し、それらを使ってk文字遷移のNFA記述行列Mkの部分行列M’k、Mik、Makを生成し、それらの和をとることでMk を生成し、生成したそれらの行列を再びNFA変換結果行列記憶部32、NFA変換結果部分行列記憶部33へ記憶させる。ここで、各種の行列の意味と結果出力手段22は、第2の実施の形態と同じであるため、説明を省略する。
記憶装置7は、NFA記述行列記憶部31と、NFA変換結果行列記憶部32と、NFA変換結果部分行列記憶部33を備えている。
NFA変換結果部分行列記憶部33は、k 文字遷移のNFA記述行列Mk の部分行列である M’k、Mik、Makを記憶する。NFA記述行列記憶部31と、NFA変換結果行列記憶部32については、第2の実施の形態と同じであるため、説明を省略する。本実施例において、NFA記述行列分割手段24と、NFA変換手段25と、結果出力手段22は、データ処理装置6上で実行されるプログラムによりその処理・機能を実現するようにしてもよいことは勿論である。
次に、図9及び図10を参照して本発明を実施するための第3の実施の形態の動作について詳細に説明する。
入力装置1から与えられた同時並列処理文字数 m はNFA変換手段25に供給される。NFA記述行列分割手段24は、NFA記述行列記憶部31から読み出した1文字遷移のNFA記述行列Sを部分行列S’、Si、Sa に分割する(ステップA7)。NFA記述行列分割手段24は、それらの行列をNFA変換手段25に提供し、NFA変換手段25は、NFA記述行列分割手段24から受け取ったそれぞれの行列を、1文字遷移のNFA記述行列M1、及びその部分行列M’1、Mi1、Ma1として、M1をNFA変換結果行列記憶部32に、部分行列M’1、Mi1、Ma1をNFA変換結果部分行列記憶部33に記憶させる(ステップA8)。
なお、NFA記述行列S、M1の意味、及びそれら部分行列の意味は、第2の実施の形態と同じであるため、説明を省略する。
NFA変換手段25で上記の処理(ステップA8)を行うと、続いて変数 k と同時並列処理文字数 m の大小比較を行う(ステップA2)。変数 k よりも同時並列処理文字数m が大きな場合、まだ目的とする m 文字遷移のNFAへ変換できていないと判断し、k文字遷移のNFAへの変換処理を行う(ステップA9)。
図11に、ステップA9におけるより詳細な動作の流れ図を示す。NFA変換手段25は、ステップA9において、まず変数k を増加させ(ステップB1)、NFA変換結果行列記憶部32から、既に記憶されているNFA記述行列 Mk-p と Mpを、NFA変換結果部分行列記憶部33から、NFA記述行列Mk-p と Mp の部分行列M’k-p、Mik-p、Mak-p、M’p、Mip、Mapを読み出す(ステップB8)。その後の動作としては、算出したk文字遷移の NFA 記述行列 MkをNFA変換結果行列記憶部32に記憶させるだけでなく、その部分行列 M’k、Mik 、Mak をNFA変換結果部分行列記憶部33に記憶させること以外は、第2の実施の形態と同じであるため、説明は省略する。
上記第3の実施の形態においては、NFA変換手段における行列演算において、変換したk文字遷移の NFA 記述行列 Mkだけでなく、その部分行列M’k、Mik 、Mak もNFA変換結果部分行列記憶部33に記憶させるため、NFA変換手段で変換を繰り返す度に部分行列への分割を行う必要がない。このため、k文字遷移のNFA記述行列の生成速度を向上させることができる。
なお、上記実施例では、第1、第2の実施例と同様、変数 k の増加方法を同時並列処理数 m との比較によって決定しているが、常に k = k + 1 として増加させても良い。また、非決定性有限オートマトン(NFA)だけでなく、決定性有限オートマトン(DFA)に対しても同様の実施の形態で適用することができる。
次に、本発明を実施するための第4の実施の形態について図面を参照して詳細に説明する。
図12は、本発明を実施するための第4の実施の形態の構成を示すブロック図である。
図12を参照すると、本発明の第4の実施の形態に係わるデータ処理装置8は、図9に示された第3の実施の形態におけるデータ処理装置6の構成において、NFA記述行列生成手段26を備え、その他の点は第3の実施の形態と同じである。
データ処理装置8は、NFA記述行列生成手段26と、NFA記述行列分割手段24と、NFA変換手段25と、結果出力手段22を備えている。
NFA記述行列生成手段26は、入力装置1から正規表現そのものを提供される。NFA記述行列生成手段26は、正規表現を提供されると、正規表現から構文木を構築し、その構文木から1文字遷移のNFAを生成する。生成したNFAからNFA記述行列S を生成し、NFA記述行列記憶部31へと記憶させる。本実施例において、NFA記述行列生成手段26と、NFA記述行列分割手段24と、NFA変換手段25と、結果出力手段22は、データ処理装置8上で実行されるプログラムによりその処理・機能を実現するようにしてもよいことは勿論である。
次に、図12及び図13を参照して本発明を実施するための第4の実施の形態の動作について詳細に説明する。
入力装置1から与えられた同時並列処理文字数 m はNFA変換手段25に供給される。また、入力装置1からは正規表現そのものがNFA記述行列生成手段26に供給される。[非特許文献1]に記載されているような正規表現を元に構文木を構築し、その構文木から1文字遷移のNFAを生成する。一般的に、このような方法を用いた正規表現からNFAを構築する方法では、各状態からの遷移先状態、及びその遷移条件を保持したリストがあるため、そのリストからNFA記述行列S を生成し、NFA記述行列記憶部31へと記憶させる(ステップA10)。その後の処理は、第3の実施の形態と同じであるため、詳細な説明は省略する。
上記第4の実施の形態においては、予めNFA記述行列がNFA記述行列記憶部31に記憶されていない場合において、正規表現を入力することで既存のNFA構築手法を用いてNFAを構築し、そのNFA記述行列Sを生成することができる。このため、柔軟に与えられた正規表現を用いて同時並列処理文字数で遷移するNFA記述行列を生成することができる。
なお、上記第4の実施の形態は、第3の実施の形態の構成にNFA記述行列生成手段26を備えた形態であるが、第1の実施の形態、及び第2の実施の形態においても同様のNFA記述行列生成手段26を備えることで、与えられた正規表現から、指定された同時並列処理文字数で遷移するNFA記述行列を生成することができる。
上記第1から第4の実施の形態では、処理装置及び記憶装置の各部をハードウェアで構成したが、各部の一部または全部をプログラムとして情報処理装置に機能させるようにすることもできる。
本発明の活用例として、ネットワークサービスに対する攻撃や侵入を検知する侵入検知システム(IDS:Intrusion Detection System)や侵入防止システム(IPS:Intrusion Prevention System)における攻撃・侵入ルールのパターンマッチング処理を高速に実現するためのオートマトンを生成するためのプログラムといった用途に適用できる。また、パソコンやワークステーションに搭載されているソフトウェアベースでのパターンマッチング処理におけるオートマトン生成にも適用できる。
本発明の全開示(請求の範囲を含む)の枠内において、さらにその基本的技術思想に基づいて、実施形態ないし実施例の変更・調整が可能である。また、本発明の請求の範囲の枠内において種々の開示要素の多様な組み合わせないし選択が可能である。すなわち、本発明は、請求の範囲を含む全開示、技術的思想にしたがって当業者であればなし得るであろう各種変形、修正を含むことは勿論である。

Claims (42)

  1. 固定文字数の遷移条件から成る有限オートマトンの遷移条件の文字数を、任意に指定する文字数に増加させる手段を有することを特徴とする有限オートマトン生成システム。
  2. 前記有限オートマトンは、行列形式で記述されていることを特徴とする請求項1に記載の有限オートマトン生成システム。
  3. 前記増加させる手段は、元の有限オートマトンの状態数を変化させないことを特徴とする請求項1または請求項2に記載の有限オートマトン生成システム。
  4. 前記増加させる手段は、予め定義された演算規則をもった行列演算に従うように構成されていることを特徴とする請求項2または請求項3に記載の有限オートマトン生成システム。
  5. 前記増加させる手段は、予め定義された演算規則を複数の部分行列を用いた行列演算に適用するように構成されていることを特徴とする請求項2または請求項3に記載の有限オートマトン生成システム。
  6. 前記複数の部分行列を用いた行列演算は、演算を行う度に部分行列を生成し、使用することを特徴とする請求項5に記載の有限オートマトン生成システム。
  7. 前記複数の部分行列を用いた行列演算は、予め部分行列を生成しておき、前記部分行列を使用することを特徴とする請求項5に記載の有限オートマトン生成システム。
  8. 予め行列の形式で記述された固定文字数の遷移条件を有する有限オートマトンを記憶するNFA記述行列記憶手段と、
    前記NFA記述行列記憶手段に記憶されている行列で記述された有限オートマトンの遷移条件の文字数を増加させる変換を行うNFA変換手段と、
    前記NFA変換手段による変換途中の有限オートマトン記述行列を記憶させるNFA変換結果行列記憶手段と、
    前記遷移条件の文字数を、任意に指定する文字数に増加させた有限オートマトンを出力する結果出力手段と
    を備えたことを特徴とする有限オートマトン生成システム。
  9. 前記NFA変換手段は、1文字遷移の有限オートマトン記述行列又はp文字遷移の有限オートマトン記述行列を、前記NFA記述行列記憶手段又は前記NFA変換結果行列記憶手段からそれぞれ読み出し、前記読み出した有限オートマトン記述行列を複数の部分行列に分割してk文字遷移の有限オートマトン記述行列を生成し、生成した前記k文字遷移の有限オートマトン記述行列を前記NFA変換結果行列記憶手段へ記憶させる処理を繰り返すことで、指定された同時並列処理文字数の有限オートマトンを生成する、ことを特徴とする請求項8に記載の有限オートマトン生成システム。
  10. 予め行列の形式で記述された固定文字数の遷移条件を有する有限オートマトンを記憶するNFA記述行列記憶手段と、
    前記NFA記述行列記憶手段に記憶されている有限オートマトンを記述した行列を、複数の部分行列に分割するNFA記述行列分割手段と、
    前記分割された複数の部分行列を用いて、元の有限オートマトンの遷移条件の文字数を増加させる変換を行うNFA変換手段と、
    前記NFA変換手段による変換途中の有限オートマトン記述行列を記憶させるNFA変換結果行列記憶手段と、
    前記NFA変換手段による変換途中の有限オートマトン記述行列の複数の部分行列を記憶させるNFA変換結果部分行列記憶手段と、
    前記遷移条件の文字数を、任意に指定する文字数に増加させた有限オートマトンを出力する結果出力手段と
    を備えたことを特徴とする有限オートマトン生成システム。
  11. 前記増加させる手段は、入力された正規表現を、1文字の遷移条件をもつ有限オートマトンに変換し、変換された有限オートマトンの遷移条件の文字数を任意に増加させることを特徴とする請求項1から請求項3のいずれかに記載の有限オートマトン生成システム。
  12. 入力された正規表現を、1文字の遷移条件をもつ有限オートマトンを記述する行列に変換するNFA記述行列生成手段と、
    前記NFA記述行列生成手段による変換後の行列を記憶するNFA記述行列記憶手段と、
    前記NFA記述行列記憶手段に記憶されている行列で記述された有限オートマトンの遷移条件の文字数を増加させる変換を行うNFA変換手段と、
    前記NFA変換手段による変換途中の有限オートマトン記述行列を記憶させるNFA変換結果行列記憶手段と、
    前記遷移条件の文字数を、任意に指定する文字数に増加させた有限オートマトンを出力する結果出力手段と
    を備えたことを特徴とする有限オートマトン生成システム。
  13. 入力された正規表現を、1文字の遷移条件をもつ有限オートマトンを記述する行列に変換するNFA記述行列生成手段と、
    前記NFA記述行列生成手段による変換後の行列を記憶するNFA記述行列記憶手段と、
    前記NFA記述行列記憶手段に記憶されている有限オートマトンを記述した行列を複数の部分行列に分割するNFA記述行列分割手段と、
    前記分割された複数の部分行列を用いて、元の有限オートマトンの遷移条件の文字数を増加させる変換を行うNFA変換手段と、
    前記NFA変換手段による変換途中の有限オートマトン記述行列を記憶させるNFA変換結果行列記憶手段と、
    前記NFA変換手段による変換途中の有限オートマトン記述行列の複数の部分行列を記憶させるNFA変換結果部分行列記憶手段と、
    前記遷移条件の文字数を、任意に指定する文字数に増加させた有限オートマトンを出力する結果出力手段と
    を備えたことを特徴とする有限オートマトン生成システム。
  14. 前記結果出力手段は、前記任意に指定する文字数に増加させた有限オートマトンを、行列形式及び/又は状態遷移図で、出力することを特徴とする請求項8、9、10、12、13のいずれか一に記載の有限オートマトン生成システム。
  15. データ処理装置により有限オートマトンを生成する方法であって、
    前記データ処理装置は、固定文字数の遷移条件から成る有限オートマトンを記憶装置から読み出し前記有限オートマトンの遷移条件の文字数を、入力装置から入力した、任意に指定する文字数に増加させることを特徴とする有限オートマトン生成方法。
  16. 前記記憶装置に記憶された前記有限オートマトンは、行列形式で記述されていることを特徴とする請求項15に記載の有限オートマトン生成方法。
  17. 前記データ処理装置は、前記記憶装置に記憶されている元の有限オートマトンの状態数を変化させないことを特徴とする請求項15または請求項16に記載の有限オートマトン生成方法。
  18. 前記データ処理装置は、予め定義された演算規則をもった行列演算に従って、有限オートマトンの遷移条件の文字数を増加させることを特徴とする請求項16または請求項17に記載の有限オートマトン生成方法。
  19. 前記データ処理装置は、予め定義された演算規則を、前記記憶装置に記憶されている複数の部分行列を用いた行列演算に適用することで、有限オートマトンの遷移条件の文字数を増加させることを特徴とする請求項16または請求項17に記載の有限オートマトン生成方法。
  20. 前記データ処理装置は、前記複数の部分行列を用いた行列演算において、演算を行う度に部分行列を生成し、使用することを特徴とする請求項19に記載の有限オートマトン生成方法。
  21. 前記データ処理装置は、前記複数の部分行列を用いた行列演算において、予め部分行列を生成しておき、前記部分行列を使用することを特徴とする請求項19に記載の有限オートマトン生成方法。
  22. 前記記憶装置に、予め行列の形式で記述された固定文字数の遷移条件を有する有限オートマトンを記憶しておき、
    前記データ処理装置のNFA変換手段は、前記記憶装置に記憶されている行列で記述された有限オートマトンの遷移条件の文字数を増加させる変換を行い、
    前記NFA変換手段による変換途中の有限オートマトン記述行列を前記記憶装置に記憶し、
    前記データ処理装置の結果出力手段は、前記遷移条件の文字数を、入力装置から入力した、任意に指定する文字数に増加させた有限オートマトンを出力装置から出力することを特徴とする有限オートマトン生成方法。
  23. 前記NFA変換手段は、前記記憶装置に予め記憶されている1文字遷移の有限オートマトン記述行列又はp文字遷移の有限オートマトン記述行列を読み出し、前記読み出した有限オートマトン記述行列を複数の部分行列に分割してk文字遷移の有限オートマトン記述行列を生成し、生成した前記k文字遷移の有限オートマトン記述行列を前記記憶装置に記憶させる処理を繰り返すことで、指定された同時並列処理文字数の有限オートマトンを生成する、ことを特徴とする請求項22記載の有限オートマトン生成方法。
  24. 記憶装置に、予め行列の形式で記述された固定文字数の遷移条件を有する有限オートマトンを記憶しておき、
    データ処理装置のNFA記述行列分割手段は、前記記憶装置に記憶されている有限オートマトンを記述した行列を複数の部分行列に分割し、
    前記データ処理装置のNFA変換手段は、前記分割された複数の部分行列を用いて元の有限オートマトンの遷移条件の文字数を増加させる変換を行い、
    前記NFA変換手段による、変換途中の有限オートマトン記述行列を前記記憶装置に記憶し、
    前記NFA変換手段による、変換途中の有限オートマトン記述行列の複数の部分行列を前記記憶装置に記憶し、
    前記データ処理装置の結果出力手段は、前記遷移条件の文字数を、入力装置から入力した、任意に指定する文字数に増加させた有限オートマトンを出力装置から出力することを特徴とする有限オートマトン生成方法。
  25. 前記データ処理装置のNFA変換手段は、前記入力装置から入力された正規表現を、1文字の遷移条件をもつ有限オートマトンに変換し、変換された有限オートマトンの遷移条件の文字数を、任意に増加させることを特徴とする請求項15から請求項17のいずれかに記載の有限オートマトン生成方法。
  26. データ処理装置のNFA記述行列生成手段は、入力装置から入力された正規表現を、1文字の遷移条件をもつ有限オートマトンを記述する行列に変換し、
    前記NFA記述行列生成手段による変換後の行列を前記記憶装置に記憶しておき、
    前記データ処理装置のNFA変換手段は、前記記憶されている行列で記述された有限オートマトンの遷移条件の文字数を増加させる変換を行い、
    前記NFA変換手段による変換途中の有限オートマトン記述行列を前記記憶装置に記憶し、
    前記データ処理装置の結果出力手段は、前記遷移条件の文字数を、入力装置から入力した、任意に指定する文字数に増加させた有限オートマトンを出力することを特徴とする有限オートマトン生成方法。
  27. データ処理装置のNFA記述行列生成手段は、入力装置から入力された正規表現を、1文字の遷移条件をもつ有限オートマトンを記述する行列に、変換し、
    前記NFA記述行列生成手段による変換後の行列を記憶装置に記憶しておき、
    前記データ処理装置のNFA記述行列分割手段は、前記変換後の行列を複数の部分行列に分割し、
    前記データ処理装置のNFA変換手段は、前記分割された複数の部分行列を用いて、前記記憶装置に記憶されている元の有限オートマトンの遷移条件の文字数を増加させる変換を行い、
    前記データ処理装置は、変換途中の有限オートマトン記述行列を前記記憶装置に記憶し、
    前記データ処理装置は、変換途中の有限オートマトン記述行列の複数の部分行列を前記記憶装置に記憶し、
    前記データ処理装置の結果出力手段は、前記遷移条件の文字数を、入力装置から入力した、任意に指定する文字数に増加させた有限オートマトンを出力装置から出力することを特徴とする有限オートマトン生成方法。
  28. 前記データ処理装置は、前記任意に指定する文字数に増加させた有限オートマトンを、行列形式及び/又は状態遷移図で、前記出力装置から出力することを特徴とする請求項22、23、24、26、27のいずれか一に記載の有限オートマトン生成方法。
  29. 固定文字数の遷移条件から成る有限オートマトンを記憶装置から読み出す処理と、
    前記読み出した有限オートマトンの遷移条件の文字数を、入力装置から入力された、任意に指定する文字数に増加させる処理、をコンピュータに実行させることを特徴とする有限オートマトン生成プログラム。
  30. 前記記憶装置に記憶された前記有限オートマトンは、行列形式で記述されていることを特徴とする請求項29に記載の有限オートマトン生成プログラム。
  31. 前記入力装置から入力された任意に指定する文字数に増加させる処理において、前記記憶装置に記憶されている元の有限オートマトンの状態数を変化させないことを特徴とする請求項29または請求項30に記載の有限オートマトン生成プログラム。
  32. 前記入力装置から入力された任意に指定する文字数に増加させる処理において、予め定義された演算規則をもった行列演算処理をコンピュータに実行させることを特徴とする請求項30または請求項31に記載の有限オートマトン生成プログラム。
  33. 前記入力装置から入力された任意に指定する文字数に増加させる処理において、予め定義された演算規則を、前記記憶装置に記憶されている複数の部分行列を用いた行列演算に適用する処理をコンピュータに実行させることを特徴とする請求項30または請求項31に記載の有限オートマトン生成プログラム。
  34. 前記複数の部分行列を用いた行列演算において、演算を行う度に部分行列を生成し、使用することを特徴とする請求項33に記載の有限オートマトン生成プログラム。
  35. 前記複数の部分行列を用いた行列演算において、予め部分行列を生成して前記記憶装置に記憶しておき、前記部分行列を使用することを特徴とする請求項33に記載の有限オートマトン生成プログラム。
  36. 予め行列の形式で記述された固定文字数の遷移条件を有する有限オートマトンを記憶装置に記憶するNFA記述行列記憶処理と、
    前記NFA記述行列記憶処理により前記記憶装置に記憶されている行列で記述された有限オートマトンの遷移条件の文字数を増加させる変換を行うNFA変換処理と、
    前記NFA変換処理による変換途中の有限オートマトン記述行列を前記記憶装置に記憶させるNFA変換結果行列記憶処理と、
    前記遷移条件の文字数を、入力装置から入力された任意に指定する文字数に増加させた有限オートマトンを出力装置から出力する結果出力処理と
    をコンピュータに実行させることを特徴とする有限オートマトン生成プログラム。
  37. 前記NFA変換処理は、前記NFA記述行列記憶処理又は前記NFA変換結果行列記憶処理で前記記憶装置に記憶された、1文字遷移の有限オートマトン記述行列又はp文字遷移の有限オートマトン記述行列を前記記憶装置からそれぞれ読み出し、前記読み出した有限オートマトン記述行列を複数の部分行列に分割してk文字遷移の有限オートマトン記述行列を生成し、生成した前記k文字遷移の有限オートマトン記述行列を前記記憶装置に記憶させる処理を繰り返すことで、指定された同時並列処理文字数の有限オートマトンを生成する、ことを特徴とする請求項36記載の有限オートマトン生成プログラム。
  38. 予め行列の形式で記述された固定文字数の遷移条件を有する有限オートマトンを記憶装置に記憶するNFA記述行列記憶処理と、
    前記記憶装置に記憶された有限オートマトンの記述行列を複数の部分行列に分割するNFA記述行列分割処理と、
    前記分割された複数の部分行列を用いて、元の有限オートマトンの遷移条件の文字数を増加させる変換を行うNFA変換処理と、
    前記NFA変換処理による変換途中の有限オートマトン記述行列を前記記憶装置に記憶させるNFA変換結果行列記憶処理と、
    前記NFA変換処理による変換途中の有限オートマトン記述行列の複数の部分行列を前記記憶装置に記憶させるNFA変換結果部分行列記憶処理と、
    前記遷移条件の文字数を、入力装置から入力された任意に指定する文字数に増加させた有限オートマトンを出力装置から出力する結果出力処理と
    をコンピュータに実行させることを特徴とする有限オートマトン生成プログラム。
  39. 前記入力装置から入力された任意に指定する文字数に増加させる処理において、入力された正規表現を、1文字の遷移条件をもつ有限オートマトンに変換し、
    変換された有限オートマトンの遷移条件の文字数を、任意に増加させる処理をコンピュータに実行させることを特徴とする請求項29から請求項31のいずれかに記載の有限オートマトン生成プログラム。
  40. 入力装置から入力された正規表現を、1文字の遷移条件をもつ有限オートマトンを記述する行列に変換するNFA記述行列生成処理と、
    前記NFA記述行列生成処理による変換後の行列を記憶装置に記憶するNFA記述行列記憶処理と、
    前記NFA記述行列記憶処理により前記記憶装置に記憶されている行列で記述された有限オートマトンの遷移条件の文字数を増加させる変換を行うNFA変換処理と、
    前記NFA変換処理による変換途中の有限オートマトン記述行列を前記記憶装置に記憶させるNFA変換結果行列記憶処理と、
    前記遷移条件の文字数を、入力装置から入力された任意に指定する文字数に増加させた有限オートマトンを出力装置から出力する結果出力処理と
    をコンピュータに実行させることを特徴とする有限オートマトン生成プログラム。
  41. 入力装置から入力された正規表現を、1文字の遷移条件をもつ有限オートマトンを記述する行列に変換するNFA記述行列生成処理と、
    前記NFA記述行列生成処理による変換後の行列を記憶装置に記憶するNFA記述行列記憶処理と、
    前記NFA記述行列記憶処理により前記記憶装置に記憶されている有限オートマトンを記述した行列を複数の部分行列に分割するNFA記述行列分割処理と、
    前記分割された複数の部分行列を用いて元の有限オートマトンの遷移条件の文字数を増加させる変換を行うNFA変換処理と、
    前記NFA変換処理による変換途中の有限オートマトン記述行列を前記記憶装置に記憶させるNFA変換結果行列記憶処理と、
    前記NFA変換処理による変換途中の有限オートマトン記述行列の複数の部分行列を前記記憶装置に記憶させるNFA変換結果部分行列記憶処理と、
    前記遷移条件の文字数を、入力装置から入力された任意に指定する文字数に増加させた有限オートマトンを出力装置から出力する結果出力処理と
    をコンピュータに実行させることを特徴とする有限オートマトン生成プログラム。
  42. 前記結果出力処理は、前記任意に指定する文字数に増加させた有限オートマトンを、行列形式及び/又は状態遷移図で前記出力装置から出力する、ことを特徴とする請求項36、37、38、40、41のいずれか一に記載の有限オートマトン生成プログラム。
JP2008552183A 2006-12-28 2007-12-28 文字列照合用有限オートマトン生成システム、その生成方法、及び生成プログラム Expired - Fee Related JP5169837B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2008552183A JP5169837B2 (ja) 2006-12-28 2007-12-28 文字列照合用有限オートマトン生成システム、その生成方法、及び生成プログラム

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
JP2006355533 2006-12-28
JP2006355533 2006-12-28
JP2008552183A JP5169837B2 (ja) 2006-12-28 2007-12-28 文字列照合用有限オートマトン生成システム、その生成方法、及び生成プログラム
PCT/JP2007/075286 WO2008081932A1 (ja) 2006-12-28 2007-12-28 文字列照合用有限オートマトン生成システム、その生成方法、及び生成プログラム

Publications (2)

Publication Number Publication Date
JPWO2008081932A1 JPWO2008081932A1 (ja) 2010-04-30
JP5169837B2 true JP5169837B2 (ja) 2013-03-27

Family

ID=39588612

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2008552183A Expired - Fee Related JP5169837B2 (ja) 2006-12-28 2007-12-28 文字列照合用有限オートマトン生成システム、その生成方法、及び生成プログラム

Country Status (3)

Country Link
US (1) US8612376B2 (ja)
JP (1) JP5169837B2 (ja)
WO (1) WO2008081932A1 (ja)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5120263B2 (ja) * 2007-01-12 2013-01-16 日本電気株式会社 パターンマッチング装置及び方法
WO2009017131A1 (ja) * 2007-08-02 2009-02-05 Nec Corporation ε遷移を含まない非決定性有限オートマトン生成システムと方法およびプログラム
JP5321589B2 (ja) * 2008-08-13 2013-10-23 日本電気株式会社 有限オートマトン生成装置、パターンマッチング装置、有限オートマトン回路生成方法およびプログラム
JP5440812B2 (ja) * 2009-03-19 2014-03-12 日本電気株式会社 パターンマッチング装置
WO2015084360A1 (en) * 2013-12-05 2015-06-11 Hewlett-Packard Development Company, L.P. Regular expression matching
US9875045B2 (en) * 2015-07-27 2018-01-23 International Business Machines Corporation Regular expression matching with back-references using backtracking
JP6737117B2 (ja) * 2016-10-07 2020-08-05 富士通株式会社 符号化データ検索プログラム、符号化データ検索方法および符号化データ検索装置

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0380366A (ja) * 1989-08-23 1991-04-05 Hitachi Ltd ストリングサーチ方法およびそのための装置

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7185081B1 (en) * 1999-04-30 2007-02-27 Pmc-Sierra, Inc. Method and apparatus for programmable lexical packet classifier
JP3852757B2 (ja) 2002-02-05 2006-12-06 インターナショナル・ビジネス・マシーンズ・コーポレーション 文字列照合方法、これを用いた文書処理装置及びプログラム

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0380366A (ja) * 1989-08-23 1991-04-05 Hitachi Ltd ストリングサーチ方法およびそのための装置

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
CSNG200600124007; 小野 正人 他: 'データ圧縮技術によるNFAパターンマッチング回路の効率的実現手法' 電子情報通信学会技術研究報告 Vol.105,No.226(CPSY2005-21), 20050805, pp.37-42., 社団法人電子情報通信学会 *
JPN6012047212; 小野 正人 他: 'データ圧縮技術によるNFAパターンマッチング回路の効率的実現手法' 電子情報通信学会技術研究報告 Vol.105,No.226(CPSY2005-21), 20050805, pp.37-42., 社団法人電子情報通信学会 *
JPN6012047213; CLARK, Christopher R., et al.: 'Scalable Pattern Matching for HighSpeed Networks' Proceedings of IEEE Symposium onField-Programmable Custom Computing Machines (FCCM2004) , 20040423, pp.249-257., IEEE Computer Society *

Also Published As

Publication number Publication date
US20100325157A1 (en) 2010-12-23
JPWO2008081932A1 (ja) 2010-04-30
US8612376B2 (en) 2013-12-17
WO2008081932A1 (ja) 2008-07-10

Similar Documents

Publication Publication Date Title
JP5169837B2 (ja) 文字列照合用有限オートマトン生成システム、その生成方法、及び生成プログラム
WO2009116646A1 (ja) マルチバイト処理向け文字列照合用有限オートマトン生成システム
JP5321589B2 (ja) 有限オートマトン生成装置、パターンマッチング装置、有限オートマトン回路生成方法およびプログラム
JPWO2009017131A1 (ja) ε遷移を含まない非決定性有限オートマトン生成システムと方法およびプログラム
CN111105029A (zh) 神经网络的生成方法、生成装置和电子设备
JP2016152048A (ja) 統計的学習によるブラックボックス・ソフトウェア試験
EP3566186A1 (en) Small majorana fermion codes
JP6310345B2 (ja) プライバシー保護装置、プライバシー保護方法及びデータベース作成方法
Sarkar et al. An algorithm for DNA read alignment on quantum accelerators
Zygelman et al. Computare Errare Est: Quantum Error Correction
CN110009048B (zh) 一种神经网络模型的构建方法以及设备
JPWO2018167885A1 (ja) 情報処理装置、情報処理方法、および情報処理プログラム
WO2018135515A1 (ja) 情報処理装置、ニューラルネットワークの設計方法及び記録媒体
JP5301411B2 (ja) 類似性算出装置、類似性算出方法、類似性算出プログラム、及び類似性解析装置
JP5429164B2 (ja) 有限オートマトン生成システム
Javaheripi et al. Swann: Small-world architecture for fast convergence of neural networks
JP5736336B2 (ja) 行列ベクトル積演算装置、行列ベクトル積演算方法、及び行列ベクトル積演算プログラム
Ding et al. Adaptive subgradient methods for online AUC maximization
Kociumaka et al. Faster recovery of approximate periods over edit distance
CN113806310B (zh) 对比方法和相关产品
Nijmeijer A method to accelerate the convergence of the secant algorithm
Balkanski et al. On the state complexity of partial word DFAs
WO2022070422A1 (ja) 計算機システム及び文字認識方法
WO2023175680A1 (ja) 符号化装置、符号化方法、及びプログラム
CN116227607B (zh) 量子电路的分类方法、装置、电子设备、介质和产品

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20101104

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20120911

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20121112

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20121217

R150 Certificate of patent or registration of utility model

Ref document number: 5169837

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees