(57)【要約】【課題】オートマトンへの入力として、長大な正規表現を記述することなく、オートマトンによる検査を高速に実行する。【解決手段】外部状態遷移表記憶部９０は、決定性有限オートマトン１４による検査に用いられる外部状態遷移表９を記憶する。ＮＦＡ状態遷移表生成部１０は、正規表現で記述された検査条件であって、外部状態遷移表９の識別子が選択識別子として含まれている正規表現検査条件２を入力する。また、ＮＦＡ状態遷移表生成部１０は、選択識別子に対応する外部状態遷移表９を外部状態遷移表記憶部９０から読み出すとともに、正規表現検査条件２内の記述のうち選択識別子以外の記述に対応する状態遷移パスを生成する。更に、ＮＦＡ状態遷移表生成部１０は、生成した状態遷移パスを、読み出した外部状態遷移表９の状態遷移パスに追加して、ＮＦＡ状態遷移表１１を生成する。【選択図】図１
2014095993.tif 000002
【特許請求の範囲】
【請求項１】
オートマトンによる検査に用いられる、状態遷移パスが表される状態遷移情報を１つ以上記憶する状態遷移情報記憶部と、
正規表現で記述され、いずれかの状態遷移情報の識別子が選択識別子として含まれている検査条件を取得する検査条件取得部と、
前記選択識別子に対応する状態遷移情報である選択状態遷移情報を前記状態遷移情報記憶部から読み出すとともに、前記検査条件内の記述のうち前記選択識別子以外の記述に対応する状態遷移パスを生成し、生成した状態遷移パスを前記選択状態遷移情報の状態遷移パスに追加して、前記選択状態遷移情報から新たな状態遷移情報を生成する状態遷移情報更新部とを有することを特徴とする情報処理装置。
【請求項２】
前記状態遷移情報記憶部は、
初期状態と受理状態とを有し、初期状態から受理状態に至るまでの状態遷移パスが表される状態遷移情報を１つ以上記憶し、
前記検査条件取得部は、
前記選択識別子に先行する記述である先行記述と、前記選択識別子に後続する記述である後続記述と、前記選択識別子とで構成される検査条件を取得し、
前記状態遷移情報更新部は、
前記検査条件内の先行記述に対応する状態遷移パスである先行記述状態遷移パスを生成するとともに、先行記述状態遷移パス内の最後尾の状態を前記選択状態遷移情報の初期状態に連結し、前記検査条件内の後続記述に対応する状態遷移パスである後続記述状態遷移パスを生成するとともに、後続記述状態遷移パス内の先頭の状態を前記選択状態遷移情報の受理状態に連結し、前記先行記述状態遷移パス内の先頭の状態を新たな初期状態とし、前記後続記述状態遷移パス内の最後尾の状態を新たな受理状態とする新たな状態遷移情報を生成することを特徴とする請求項１に記載の情報処理装置。
【請求項３】
前記情報処理装置は、更に、
前記状態遷移情報更新部により生成された新たな状態遷移情報から、非決定的状態遷移を除去する状態遷移情報修正部を有することを特徴とする請求項１又は２に記載の情報処理装置。
【請求項４】
前記情報処理装置は、更に、
前記状態遷移情報更新部により生成された新たな状態遷移情報、又は、前記状態遷移情報修正部により非決定的状態遷移が除去された後の状態遷移情報を、前記オートマトンに出力する状態遷移情報出力部を有することを特徴とする請求項３に記載の情報処理装置。
【請求項５】
前記状態遷移情報記憶部は、
非決定性有限オートマトンによる検査に用いられる状態遷移情報を記憶しており、
前記状態遷移情報出力部は、
前記状態遷移情報更新部により生成された新たな状態遷移情報を、前記非決定性有限オートマトンに出力することを特徴とする請求項４に記載の情報処理装置。
【請求項６】
前記状態遷移情報記憶部は、
決定性有限オートマトンによる検査に用いられる状態遷移情報を記憶しており、
前記状態遷移情報出力部は、
前記状態遷移情報修正部により非決定的状態遷移が除去された後の状態遷移情報を、前記決定性有限オートマトンに出力することを特徴とする請求項４に記載の情報処理装置。
【請求項７】
前記状態遷移情報記憶部は、
前記オートマトンが、前記オートマトンに入力される複数桁の文字列に対して、桁ごとの文字の適性検査と桁ごとのチェックディジット検査とを並行して行うことができる状態遷移情報を１つ以上記憶していることを特徴とする請求項１〜６のいずれかに記載の情報処理装置。
【請求項８】
前記情報処理装置は、更に、
前記オートマトンが、前記オートマトンに入力される複数桁の文字列に対して、桁ごとの文字の適性検査と桁ごとのチェックディジット検査とを並行して行うことができる状態遷移情報を生成する状態遷移情報生成部を有し、
前記状態遷移情報記憶部は、
前記状態遷移情報生成部により生成された状態遷移情報を記憶していることを特徴とする請求項７に記載の情報処理装置。
【請求項９】
前記情報処理装置は、更に、
前記オートマトンが、前記オートマトンに入力される複数桁の文字列に対して、桁ごとの文字の適性検査と桁ごとのチェックディジット検査とを並行して行うことができる状態遷移情報を入力する状態遷移情報入力部を有し、
前記状態遷移情報記憶部は、
前記状態遷移情報入力部により入力された状態遷移情報を記憶していることを特徴とする請求項７に記載の情報処理装置。
【請求項１０】
オートマトンによる検査に用いられる、状態遷移パスが表される状態遷移情報を１つ以上記憶する状態遷移情報記憶部を有するコンピュータが行う情報処理方法であって、
正規表現で記述され、いずれかの状態遷移情報の識別子が選択識別子として含まれている検査条件を前記コンピュータが取得する検査条件取得ステップと、
前記コンピュータが、前記選択識別子に対応する状態遷移情報である選択状態遷移情報を前記状態遷移情報記憶部から読み出すとともに、前記検査条件内の記述のうち前記選択識別子以外の記述に対応する状態遷移パスを生成し、生成した状態遷移パスを前記選択状態遷移情報の状態遷移パスに追加して、前記選択状態遷移情報から新たな状態遷移情報を生成する状態遷移情報更新ステップとを有することを特徴とする情報処理方法。
【請求項１１】
オートマトンによる検査に用いられる、状態遷移パスが表される状態遷移情報を１つ以上記憶する状態遷移情報記憶部を有するコンピュータに、
正規表現で記述され、いずれかの状態遷移情報の識別子が選択識別子として含まれている検査条件を取得する検査条件取得ステップと、
前記選択識別子に対応する状態遷移情報である選択状態遷移情報を前記状態遷移情報記憶部から読み出すとともに、前記検査条件内の記述のうち前記選択識別子以外の記述に対応する状態遷移パスを生成し、生成した状態遷移パスを前記選択状態遷移情報の状態遷移パスに追加して、前記選択状態遷移情報から新たな状態遷移情報を生成する状態遷移情報更新ステップとを実行させることを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、オートマトンを用いて検査を行う技術に関する。
本発明は、例えば、オートマトンを用いて、入力された文字列が検査条件に合致するか否かを検査する技術に関する。
【背景技術】
【０００２】
近年、個人情報等の機密情報の漏洩を防止するため、文書やデータベース等に含まれる個人情報等の秘匿すべき情報を効率的に検出するニーズが高まっている。
そのような秘匿すべき情報の一つとして、クレジットカード番号、口座番号、証券番号等の番号がある。
例えば、クレジットカード番号の形式の一例として、１６桁の数字からなり、４桁ごとにハイフンで区切られた１９文字の文字列であるが、このような番号は、例えば図３に示す正規表現を用いて、公知の検出方法により検出することができる。
このような正規表現による文字列パタンの検出は、有限オートマトン（Ｆｉｎｉｔｅ  Ｓｔａｔｅ  Ａｕｔｏｍａｔｏｎ）と呼ばれる方法により実現可能である。
有限オートマトンを用いる文字列パタンの一般的な検出方法では、正規表現から状態遷移表を生成する手順については、例えば特許文献１、特許文献２、特許文献３に記載の公知の手順を用い、正規表現で記載された検査条件を状態遷移表に変換する。
この時、例えば図４７に示す拡張ＢＮＦ（Ｂａｃｋｕｓ−Ｎａｕｒ  Ｆｏｒｍ）で表現される構文規則に基づき、字句解析および構文解析の手順を行うことにより、状態遷移表を生成する。
状態遷移表は（現状態、入力文字、次状態）の組の集合で表現される。
有限オートマトンは初期状態から開始し、１文字入力されるごとに状態遷移表に含まれる現状態と入力文字の組に対応する次状態に遷移し、受理状態に到達すると文字列の検出が行われたものとする。
特に、現状態と入力文字の組に対して次状態が一意に決まる有限オートマトンを決定性有限オートマトン（ＤＦＡ：Ｄｅｔｅｒｍｉｎｉｓｔｉｃ  Ｆｉｎｉｔｅ  Ａｕｔｏｍａｔｏｎ）、２以上の次状態が存在する有限オートマトンを非決定性有限オートマトン（ＮＦＡ：  Ｎｏｎ−Ｄｅｔｅｒｍｉｎｉｓｔｉｃ  Ｆｉｎｉｔｅ  Ａｕｔｏｍａｔｏｎ）と呼ぶ。
ＮＦＡはＤＦＡに変換可能であることが知られており、ＤＦＡを用いると文字列を一度読むことにより、後戻りすることなく照合を行うことができる。
【０００３】
ところで、文書やデータベース中には、例えば図３に示すクレジットカード番号と同一の形式を持つが、クレジットカード番号ではない番号列が使用されることがある。
このため、図３の正規表現による文字列パタン検出では、クレジットカード番号とこのような番号列を区別することができないため、このような番号列も過剰に検出される。
一方、クレジットカード番号、口座番号、証券番号等などの番号には、誤入力防止を目的としてチェックディジットが付加されている。
チェックディジットの方式としては、例えば「ＡＮＳＩ規格Ｘ４．１３」に定義されている「Ｌｕｈｎの式」や、「モジュラス１０、ウェイト３」、「モジュラス１１  ウェイト１０−２」などの方式が知られており、例えばクレジットカード番号では右端の桁（最終桁）がＬｕｈｎの式によるチェックディジットである。
チェックディジットの正当性を検査することにより、右端の桁をチェックディジットとして使用していない番号列や異なる計算手順によるチェックディジットを使用している番号列を除外することができ、上記の過剰な検出を削減することができる。
「Ｌｕｈｎの式」、「モジュラス１０、ウェイト３」、「モジュラス１１  ウェイト１０−２」等のチェックディジット方式では、まず、各桁の文字を数値に変換し、ついで変換された数値を全桁に渡る総和を取り、その総和を予め決めた数による剰余を取る、という共通的な手順を使用している。
たとえばＬｕｈｎの式では以下の手順に従って計算を行う。
【０００４】
右端のチェックディジットを１番目として、偶数番目の桁を２倍にする。
２倍にしていない桁も含め、各数字の総和を求める（２倍にした桁が２桁になった場合は、それぞれを別々の数字として加える）。
この総和の下１桁が０なら、この番号は正しく、そうでない場合は正しくない。
【０００５】
クレジットカード番号の検出とともにチェックディジットを検査する方法は、例えば特許文献４に示されており、まず、正規表現による文字列パタンの検出を行った後、検出された文字列パタンのチェックディジット検査を行うという２段階の処理で実現できる。
しかし、この方法では、文字列パタンの検出を行い、検出位置を特定した後、チェックディジットの計算を行うという処理の切り替えが必要になり、処理時間を要する。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特許第３８５２７５７号
【特許文献２】特許第４５３５１３０号
【特許文献３】特開２０１０−２２５１５６号公報
【特許文献４】特許第４３５４１８２号
【発明の概要】
【発明が解決しようとする課題】
【０００７】
別の方法として、有限オートマトンによって文字列パタンの検出を行うのと同時にチェックディジットの検査を行う方法が存在する。
すなわち、全ての正当な文字列パタンを列挙した正規表現を入力とする有限オートマトンにより、文字列パタンの検出とチェックディジットの検査を同時に実行することができる。
例えば、図３の正規表現で表現されるクレジットカード番号でＬｕｈｎの式によるチェックディジットを備えている場合、正当なチェックディジットを持つ文字列パタンの一例として、文字列「４０２３−９９７０−３９８６−５７６３」などがある。
このような正当な文字列パタンの全てを記号「｜」により列挙した正規表現を作成することが論理的には可能である。
しかし、この方法では、有限オートマトンの入力となる正規表現が極めて長大になるという課題がある。
【０００８】
一般に剰余を用いたチェックディジット検査の場合、チェックディジット自身を含む検査対象の数字の桁数をｄ、剰余の種類をＭとするとき、この方法による正規表現検査条件の長さｒは、（式１）に示す程度となる。
ｒ＝Ｍ（ｄ−２）・・・（式１）
すなわち、検査対象の数字の桁数に対して指数オーダの長さとなる。
本例の場合、Ｍ＝１０，ｄ＝１６から、（式２）のようになる。
ｒ＝１０１４・・・（式２）
このため、正当な文字列パタンの全てを記号「｜」により列挙した正規表現の規模は、今日の一般的なコンピュータのメモリに保持することが困難な程度になる。
つまり、一般に剰余計算に基づくチェックディジット検査を公知の有限オートマトンにより検査しようとすると、正規表現の記述が長大になり、処理が困難になるという課題がある。
【０００９】
本発明は、上記の課題を解決することを主な目的としており、オートマトンへの入力として、長大な正規表現を記述することなく、オートマトンによる検査を高速に実行することを主な目的とする。
【課題を解決するための手段】
【００１０】
本発明に係る情報処理装置は、
オートマトンによる検査に用いられる、状態遷移パスが表される状態遷移情報を１つ以上記憶する状態遷移情報記憶部と、
正規表現で記述され、いずれかの状態遷移情報の識別子が選択識別子として含まれている検査条件を取得する検査条件取得部と、
前記選択識別子に対応する状態遷移情報である選択状態遷移情報を前記状態遷移情報記憶部から読み出すとともに、前記検査条件内の記述のうち前記選択識別子以外の記述に対応する状態遷移パスを生成し、生成した状態遷移パスを前記選択状態遷移情報の状態遷移パスに追加して、前記選択状態遷移情報から新たな状態遷移情報を生成する状態遷移情報更新部とを有することを特徴とする。
【発明の効果】
【００１１】
本発明では、検査条件に含まれる選択識別子に対応する選択状態遷移情報を取得するとともに、検査条件内の記述のうち選択識別子以外の記述に対応する状態遷移パスを生成し、生成した状態遷移パスを選択状態遷移情報の状態遷移パスに追加して、選択状態遷移情報から新たな状態遷移情報を生成する。
このため、検査条件内の選択識別子以外の記述と選択状態遷移情報とを連携させることができ、オートマトンへの入力として長大な正規表現を記述しなくても、オートマトンによる検査を高速に実行することができる。
【図面の簡単な説明】
【００１２】
【図１】実施の形態１に係る文字列照合装置の構成例を示す図。
【図２】実施の形態１に係る正規表現検索条件の例を示す図。
【図３】実施の形態１に係る、クレジットカード番号に対応する、チェックディジット検査を行わない正規表現の一例を示す図。
【図４】実施の形態１に係る外部状態遷移定義の例を示す図。
【図５】実施の形態１に係る状態遷移定義名の例を示す図。
【図６】実施の形態１に係る文字集合定義の例を示す図。
【図７】実施の形態１に係る桁数定義の例を示す図。
【図８】実施の形態１に係る除数定義の例を示す図。
【図９】実施の形態１に係る剰余定義の例を示す図。
【図１０】実施の形態１に係る変換関数定義の例を示す図。
【図１１】実施の形態１に係る外部状態遷移表の例を示す図。
【図１２】実施の形態１に係る外部個別状態遷移表名の例を示す図。
【図１３】実施の形態１に係る外部初期状態の例を示す図。
【図１４】実施の形態１に係る外部受理状態の例を示す図。
【図１５】実施の形態１に係る外部状態集合の例を示す図。
【図１６】実施の形態１に係る外部状態遷移集合の例を示す図。
【図１７】実施の形態１に係る外部状態遷移集合の例を示す図。
【図１８】実施の形態１に係るＮＦＡ状態遷移表の例を示す図。
【図１９】実施の形態１に係るＮＦＡ初期状態の例を示す図。
【図２０】実施の形態１に係るＮＦＡ受理状態の例を示す図。
【図２１】実施の形態１に係るＮＦＡ状態集合の例を示す図。
【図２２】実施の形態１に係るＮＦＡ状態遷移集合の例を示す図。
【図２３】実施の形態１に係るＮＦＡ状態遷移集合の例を示す図。
【図２４】実施の形態１に係るＮＦＡ状態遷移集合の例を示す図。
【図２５】実施の形態１に係るＤＦＡ状態遷移表の例を示す図。
【図２６】実施の形態１に係るＤＦＡ初期状態の例を示す図。
【図２７】実施の形態１に係るＤＦＡ受理状態の例を示す図。
【図２８】実施の形態１に係るＤＦＡ状態集合の例を示す図。
【図２９】実施の形態１に係るＤＦＡ状態遷移集合の例を示す図。
【図３０】実施の形態１に係るＤＦＡ状態遷移集合の例を示す図。
【図３１】実施の形態１に係るＤＦＡ状態遷移集合の例を示す図。
【図３２】実施の形態１に係る入力文字列の例（正しいチェックディジット）を示す図。
【図３３】実施の形態１に係る入力文字列の例（正しくないチェックディジット）を示す図。
【図３４】実施の形態１に係る入力文字列の例（形式不正）を示す図。
【図３５】実施の形態１に係る文字列照合装置の全体処理の例を示すフローチャート図。
【図３６】実施の形態１に係る状態遷移表生成部の動作例を示すフローチャート図。
【図３７】実施の形態１に係る外部状態遷移表生成部の動作例を示すフローチャート図。
【図３８】実施の形態１に係る手続き「個別状態遷移表の生成」の詳細を示すフローチャート図。
【図３９】実施の形態１に係る手続き「状態の生成」の詳細を示すフローチャート図。
【図４０】実施の形態１に係る手続き「状態遷移の生成」の詳細を示すフローチャート図。
【図４１】実施の形態１に係る手続き「状態の生成」によって生成される状態遷移グラフの例を示す図。
【図４２】実施の形態１に係る手続き「状態遷移の生成」によって生成される状態遷移グラフの例を示す図。
【図４３】実施の形態１に係る手続き「状態遷移の生成」によって生成される状態遷移グラフの例を示す図。
【図４４】実施の形態１に係る手続き「状態遷移の生成」によって生成される状態遷移グラフの例を示す図。
【図４５】実施の形態１に係る手続き「状態遷移の生成」によって生成される状態遷移グラフの例を示す図。
【図４６】実施の形態１に係る手続き「状態遷移の生成」によって生成される状態遷移グラフの例を示す図。
【図４７】通常の正規表現の構文規則の例を示す図。
【図４８】実施の形態１に係る正規表現構文規則の例を示す図。
【図４９】実施の形態１に係る外部定義出現時の処理の例を示すフローチャート図。
【図５０】実施の形態１に係る３文字目「＝」を読んだ直後の状態遷移表を示す図。
【図５１】実施の形態１に係る３文字目「＝」を読んだ直後の状態遷移グラフを示す図。
【図５２】実施の形態１に係る３文字目「＝」を読んだ直後の状態遷移グラフ、空文字遷移を含む例を示す図。
【図５３】実施の形態１に係る（？？｛ＣＲＥＤＩＴ｝？？）を読んだ直後の状態遷移グラフを示す図。
【図５４】実施の形態１に係る全て読んだ後の状態遷移グラフを示す図。
【図５５】実施の形態１に係る非決定的遷移を除去した後の状態遷移グラフを示す図。
【図５６】実施の形態１に係る照合による状態遷移の例１を示す図。
【図５７】実施の形態１に係る照合による状態遷移の例２を示す図。
【図５８】実施の形態１に係る照合による状態遷移の例３を示す図。
【図５９】実施の形態２に係る文字列照合装置の構成例を示す図。
【図６０】実施の形態３に係る文字列照合装置の構成例を示す図。
【図６１】実施の形態１〜３に係る文字列照合装置のハードウェア構成例を示す図。
【発明を実施するための形態】
【００１３】
実施の形態１．
本実施の形態では、オートマトンに入力する正規表現を長大な記述にしなくとも、チェックディジットを含む文字列パタンの検出を高速に実行することができる文字列照合装置を説明する。
【００１４】
より具体的には、本実施の形態に係る文字列照合装置は、現状態と文字の組に対し次状態を記述した状態遷移を１または複数個含む外部状態遷移表と、外部状態遷移表と正規表現で記述された検査条件から、状態遷移表を生成する状態遷移表生成部と、入力文字列と状態遷移表から照合結果を出力する有限オートマトンを備える。
また、本実施の形態に係る文字列照合装置は、正規表現検査条件と外部状態遷移表から生成される状態遷移表による照合を行うことにより、長大な正規表現を記述することなく、文字列パタンの検出とチェックディジット検査を同時に行うことができ、チェックディジットを含む文字列パタンを高速に検出できる。
【００１５】
図１は、実施の形態１における文字列照合装置１を示す図である。
文字列照合装置１は、情報処理装置の例に相当する。
図１に示すように、文字列照合装置１は、状態遷移表生成部６と照合部７とに大別される。
状態遷移表生成部６は、外部状態遷移定義３を入力して、外部状態遷移表９を生成し、更に、正規表現検査条件２を入力して、外部状態遷移表９と正規表現検査条件２とからＮＦＡ状態遷移表１１を生成し、更に、ＮＦＡ状態遷移表１１からＤＦＡ状態遷移表１３を生成する。
照合部６は、入力文字列４を入力し、入力文字列４が正規表現検査条件２で規定されている検査条件を満たすか否かをＤＦＡ状態遷移表１３を用いて判定し、照合結果６を出力する。
【００１６】
状態遷移表生成部６において、外部状態遷移表生成部８は、外部状態遷移定義３を入力して、１又は複数の外部状態遷移表９を生成し、生成した外部状態遷移表９を外部状態遷移表記憶部９０に格納する。
外部状態遷移表９は、後述する決定性有限オートマトン１４による検査に用いられる。
また、外部状態遷移表９には、複数の状態における状態遷移の経緯である状態遷移パスが定義されている。
なお、外部状態遷移表９は状態遷移情報の例に相当し、外部状態遷移表生成部８は状態遷移情報生成部の例に相当し、外部状態遷移表記憶部９０は状態遷移情報記憶部の例に相当する。
【００１７】
ＮＦＡ状態遷移表生成部１０は、正規表現検査条件２を入力し、正規表現検査条件２に対応する外部状態遷移表９を外部状態遷移表記憶部９０から読み出す。
また、ＮＦＡ状態遷移表生成部１０は、正規表現検査条件２に正規表現で記述されている検査条件と、外部状態遷移表記憶部９０から読み出した外部状態遷移表９とを関連付ける状態遷移表であるＮＦＡ状態遷移表１１を生成する。
そして、ＮＦＡ状態遷移表生成部１０は、生成したＮＦＡ状態遷移表１１をＮＦＡ状態遷移表記憶部１１０に格納する。
正規表現検査条件２には、いずれかの外部状態遷移表９の識別子が含まれている。
この識別子を選択識別子ともいう。
また、正規表現検査条件２には選択識別子以外の記述も含まれている。
また、ＮＦＡ状態遷移表生成部１０は、正規表現検査条件２内の選択識別子以外の記述に対応する状態遷移パスを生成し、選択識別子に対応する外部状態遷移表９に、生成した状態遷移パスを追加して、ＮＦＡ状態遷移表１１を生成する。
なお、ＮＦＡ状態遷移表生成部１０は、検査条件取得部及び状態遷移情報更新部の例に相当する。
【００１８】
ＤＦＡ状態遷移表生成部１２は、ＮＦＡ状態遷移表記憶部１１０からＮＦＡ状態遷移表１１を読み出し、読み出したＮＦＡ状態遷移表１１から非決定的状態遷移を除去して、ＤＦＡ状態遷移表１３を生成する。
そして、ＤＦＡ状態遷移表生成部１２は、生成したＤＦＡ状態遷移表１３をＤＦＡ状態遷移表記憶部１３０に格納する。
また、ＤＦＡ状態遷移表生成部１２は、ＤＦＡ状態遷移表１３をＤＦＡ状態遷移表記憶部１３０から決定性有限オートマトン１４に出力する。
ＤＦＡ状態遷移表生成部１２は、状態遷移情報修正部及び状態遷移情報出力部の例に相当する。
【００１９】
照合部７において、決定性有限オートマトン１４は、入力文字列４とＤＦＡ状態遷移表１３を入力し、ＤＦＡ状態遷移表１３を用いて入力文字列４を検査する。
例えば、クレジットカード番号についての検査の場合は、決定性有限オートマトン１４は、複数桁の文字列を入力文字列４として入力し、ＤＦＡ状態遷移表１３を用いて、桁ごとの文字の適性検査（０−９の数字又はハイフンであるか否かの検査）とチェックディジット検査（Ｌｕｈｎの式の計算）とを並行して行う。
決定性有限オートマトン１４が検査した結果は、照合結果５として出力される。
【００２０】
次に、本実施の形態に係る文字列照合装置１の動作の概要を説明する。
以下では、決定性有限オートマトン１４が、入力文字列４がクレジットカード番号に該当するか否かの検査を行う場合を例にして説明を進める。
また、クレジットカード番号のチェックディジットは、Ｌｕｈｎの式によるものとする。
【００２１】
外部状態遷移表生成部８は、外部状態遷移定義３を入力して、クレジットカード番号の照合のための外部状態遷移表９を生成し、生成した外部状態遷移表９を外部状態遷移表記憶部９０に格納する。
この外部状態遷移表９は、入力文字列４に対して、桁ごとの文字の適性検査と桁ごとのチェックディジット検査とを並行して行うことができる状態遷移表である。
また、この外部状態遷移表９の名称（識別子）を「ＣＲＥＤＩＴ」とする。
名称「ＣＲＤＩＴ」の外部状態遷移表９は、例えば、図４２の状態遷移グラフと等価である。
図４２の状態遷移グラフでは、桁ごとの文字の適性検査と桁ごとのチェックディジット検査とを並行して行うための状態遷移パスが定義されている。
なお、図４２の状態遷移グラフの詳細、図４２の状態遷移グラフの生成手順は後述する。
【００２２】
ＮＦＡ状態遷移表生成部１０は、正規表現検査条件２を入力し、正規表現検査条件２に対応する外部状態遷移表９を外部状態遷移表記憶部９０から読み出す。
ＮＦＡ状態遷移表生成部１０は、例えば、図２に示す正規表現検査条件２を入力する。
図２の正規表現検査条件２では、（？？｛ＣＲＥＤＩＴ｝？？）が選択識別子である。
ＮＦＡ状態遷移表生成部１０は、選択識別子に従い、名称「ＣＲＥＤＩＴ」の外部状態遷移表９を外部状態遷移表記憶部９０から読み出す。
更に、ＮＦＡ状態遷移表生成部１０は、正規表現検査条件２内の選択識別子に先行する記述である先行記述（図２の例では「Ｎｏ＝」）に対応する状態遷移パス（先行記述状態遷移パスという）を生成し、先行記述状態遷移パスの最後尾の状態を、名称「ＣＲＥＤＩＴ」の外部状態遷移表９の初期状態に連結する。
図２の正規表現検査条件２の場合は、「Ｎｏ＝」に対応する状態遷移パスとして図５１の状態遷移パスが生成され、図５１の状態遷移パスの最後尾の状態（状態：Ｓ３）が図４２の状態遷移グラフの初期状態（状態：Ｓ１０００）に連結されると、図５３の状態遷移グラフとなる。
更に、ＮＦＡ状態遷移表生成部１０は、正規表現検査条件２内の選択識別子に後続する記述である後続記述（図２の例では「＃」）に対応する状態遷移パス（後続記述状態遷移パスという）を生成し、後続記述状態遷移パスの先頭の状態（状態：Ｓ４）を、名称「ＣＲＥＤＩＴ」の外部状態遷移表９の受理状態（状態：Ｓ１１９０）に連結する。
図５４は、図５３の状態遷移グラフに図２の正規表現検査条件２の後続記述状態遷移パスが連結された後の状態遷移グラフを示す。
図５４の状態遷移グラフに対応する状態遷移表が、ＮＦＡ状態遷移表１１に相当する。
図４３の状態遷移グラフ（外部状態遷移表９に相当）では、図５４の状態：Ｓ１０００に相当する状態が初期状態であり、状態：Ｓ１１９０に相当する状態が受理状態であったが、図５４の状態遷移グラフでは、状態：Ｓ０が新たな初期状態であり、状態：Ｓ５が新たな受理状態である。
本実施の形態では、ＮＦＡ状態遷移表生成部１０が、図５４の状態遷移グラフに相当するＮＦＡ状態遷移表１１を生成することで、決定性有限オートマトン１４への入力として長大な正規表現を記述しなくてもよく、図２に示す正規表現検査条件２のように、簡潔な検査条件とすることができる。
【００２３】
ＤＦＡ状態遷移表生成部１２は、図５４の状態遷移グラフのうちの非決定的状態遷移を除去して、ＤＦＡ状態遷移表１３を生成する。
具体的には、図５４の状態遷移グラフの空文字遷移「ε」を除去して、図５５の状態遷移グラフを生成する。
図５５の状態遷移グラフは、ＤＦＡ状態遷移表１３に相当する。
【００２４】
次に、本実施の形態に係る外部状態遷移表生成部８、ＮＦＡ状態遷移表生成部１０及びＤＦＡ状態遷移表生成部１２の詳細を説明する。
【００２５】
図２は、実施の形態１における正規表現検査条件２の一例を示す図である。
図３は、クレジットカード番号に対応する、チェックディジット検査を行わない正規表現の一例を示す図である。
【００２６】
図４は、実施の形態１における外部状態遷移定義３の構成を示す図である。
図４において、２１は状態遷移定義であり、外部状態遷移定義３の中に１または複数の状態遷移定義２１が含まれ、図４ではＮ個の状態遷移定義２１が含まれている。
２２は状態遷移名定義、２３は文字集合定義、２４は桁数定義、２５は除数定義、２６は受理剰余定義、２７は変換関数定義である。
【００２７】
図５は、実施の形態１における外部状態遷移名指定２２の一例を示す図である。
図６は、実施の形態１における文字集合定義２３の一例を示す図であり、図３の形式のクレジットカード番号に対応する。
図７は、実施の形態１における桁数定義２４の一例を示す図であり、図３の形式のクレジットカード番号に対応する。
図８は、実施の形態１における除数定義２５の一例を示す図であり、Ｌｕｈｎの式によるチェックディジット検査に対応する。
図９は、実施の形態１における剰余定義２６の一例を示す図であり、Ｌｕｈｎの式によるチェックディジット検査に対応する。
【００２８】
図１０は、実施の形態１における変換関数定義２７の一例を示す図であり、Ｌｕｈｎの式によるチェックディジットを備えたクレジットカード番号に対応する。
図１０において、桁位置：１は、クレジットカード番号の左端の桁であり、桁位置：１９は、クレジットカード番号の右端の桁である。
前述のように、Ｌｕｈｎの式では、右端のチェックディジットを１番目として、偶数番目の桁を２倍にする。
このため、桁位置：１９では、奇数番目の桁なので、入力文字の数値は２倍されず、入力文字の数値がそのままチェックディジット計算の結果として利用される。
一方、桁位置：１８では、偶数番目の桁なので、入力文字の数値は２倍される。
入力文字が０〜４の場合は２倍後の数値（０、２、４、６、８）も１桁なので、チェックディジット計算の結果は、２倍後の数値（０、２、４、６、８）である。
一方、入力文字が５の場合は、５×２＝１０となり、「１」と「０」の加算結果である「１」がチェックディジット計算の結果となる。
同様にして、入力文字が９の場合は、９×２＝１８となり、「１」と「８」の加算結果である「９」がチェックディジット計算の結果となる。
【００２９】
図１１は、実施の形態１における外部状態遷移表９の構成の一例を示す図である。
図１１において、３１は外部個別状態遷移表であり、外部状態遷移表９の中に１又は複数の外部個別状態遷移表３１が含まれ、図１１ではＮ個の外部個別状態遷移表３１が含まれている。
３２は外部個別状態遷移表名、３３は外部初期状態、３４は外部受理状態、３５は外部状態集合、３６は外部状態遷移集合である。
【００３０】
図１２は、実施の形態１における外部個別状態遷移表名３２の一例を示す図である。
図１２は、外部状態遷移表９の名称が「ＣＲＥＤＩＴ」であることを表している。
【００３１】
図１３は、実施の形態１における外部初期状態３３の一例を示す図である。
図１３は、外部状態遷移表９の初期状態が、状態：Ｓ０であることを表している。
【００３２】
図１４は、実施の形態１における外部受理状態３４の一例を示す図である。
図１４は、外部状態遷移表９の受理状態が、状態：Ｓ１９０であることを表している。
【００３３】
図１５は、実施の形態１における外部状態集合３５の一例を示す図である。
図１５は、外部状態遷移表９に含まれる状態の状態名が定義されている。
【００３４】
図１６、図１７は、実施の形態１における外部状態遷移集合３６の一例を示す図である。
図１６、図１７では、外部状態遷移表９における現状態と入力文字と次状態との関係が示されている。
例えば、現状態：Ｓ０のときに、決定性有限オートマトン１４が入力文字として「０」を入力した場合には、次状態：Ｓ１０に遷移することを表している。
【００３５】
図１８は、実施の形態１におけるＮＦＡ状態遷移表１１の一例を示す図である。
図１８において、４１はＮＦＡ初期状態、４２はＮＦＡ受理状態、４３はＮＦＡ状態集合、４４はＮＦＡ状態遷移集合である。
【００３６】
図１９は、実施の形態１におけるＮＦＡ初期状態４１の一例を示す図である。
図１９は、ＮＦＡ状態遷移表１１の初期状態が、状態：Ｓ０であることを表している。
【００３７】
図２０は、実施の形態１におけるＮＦＡ受理状態４２の一例を示す図である。
図２０は、ＮＦＡ状態遷移表１１の受理状態が、状態：Ｓ５であることを表している。
【００３８】
図２１は、実施の形態１におけるＮＦＡ状態集合４３の一例を示す図である。
図２１では、ＮＦＡ状態遷移表１１に含まれる状態の状態名が定義されている。
【００３９】
図２２、図２３、図２４は、実施の形態１におけるＮＦＡ状態遷移集合４４の一例を示す図である。
図２２、図２３、図２４では、ＮＦＡ状態遷移表１１における現状態と入力文字と次状態との関係が示されている。
例えば、現状態：Ｓ１０００のときに、決定性有限オートマトン１４が入力文字として「０」を入力した場合には、次状態：Ｓ１０１０に遷移することを表している。
【００４０】
図２５は、実施の形態１におけるＤＦＡ状態遷移表１３の一例を示す図である。
図２５において、５１はＤＦＡ初期状態、５２はＤＦＡ受理状態、５３はＤＦＡ状態集合、５４はＤＦＡ状態遷移集合である。
【００４１】
図２６は、実施の形態１におけるＤＦＡ初期状態５１の一例を示す図である。
図２６は、ＤＦＡ状態遷移表１３の初期状態が、状態：Ｓ０であることを表している。
【００４２】
図２７は、実施の形態１におけるＤＦＡ受理状態５２の一例を示す図である。
図２７は、ＤＦＡ状態遷移表１３の受理状態が、状態：Ｓ３であることを表している。
【００４３】
図２８は、実施の形態１におけるＤＦＡ状態集合５３の一例を示す図である。
図２８では、ＤＦＡ状態遷移表１３に含まれる状態の状態名が定義されている。
【００４４】
図２９、図３０、図３１は、実施の形態１におけるＤＦＡ状態遷移集合５４の一例を示す図である。
図２９、図３０、図３１では、ＤＦＡ状態遷移表１３における現状態と入力文字と次状態との関係が示されている。
例えば、現状態：Ｓ１０００のときに、決定性有限オートマトン１４が入力文字として「０」を入力した場合には、次状態：Ｓ１０１０に遷移することを表している。
【００４５】
図３２は、実施の形態１における入力文字列４の第一の例を示す図である。
図３３は、実施の形態１における入力文字列４の第二の例を示す図である。
図３４は、実施の形態１における入力文字列４の第三の例を示す図である。
【００４６】
次に動作について説明する。
以下では、図３の正規表現で表記されるクレジットカード番号、すなわち１６桁の数字からなり、４桁ごとにハイフンで区切られた１９文字の文字列で、右端の桁がＬｕｈｎの式によるチェックディジットとなっている文字列を検出する場合の動作を例に説明する。
【００４７】
実施の形態１の文字列照合装置の動作を図３５に示す。
【００４８】
まず、状態遷移表生成部６が正規表現検査条件２と外部状態遷移定義３からＤＦＡ状態遷移表１３を生成する（ステップＳ１０１）。
次いで、照合部７が、ＤＦＡ状態遷移表１３を用いて入力文字列４の照合を行い、照合結果５を生成する（ステップＳ１０２）。
【００４９】
次に、状態遷移表生成部６の動作（ステップＳ１０１）の詳細を図３６により説明する。
【００５０】
状態遷移表生成部６では、まず外部状態遷移表生成部８が、外部状態遷移定義３に基づき外部状態遷移表９を生成する（ステップＳ１１１）。
次いで、ＮＦＡ状態遷移表生成部１０が、正規表現検査条件２と外部状態遷移表９からＮＦＡ状態遷移表１１を生成する（ステップＳ１１２）。
次いで、ＤＦＡ状態遷移表生成部１２が、ＮＦＡ状態遷移表１１からＤＦＡ状態遷移表１３を生成する（ステップＳ１１３）。
【００５１】
次に、外部状態遷移表生成部８の動作（ステップＳ１１１）の詳細を図３７により説明する。
【００５２】
まず、外部状態遷移表生成部８は、状態遷移定義の番号ｎを１とする（ステップＳ１２１）。
次いで、状態遷移定義＃ｎに対して手続き「個別状態遷移表の生成」を実行する（ステップＳ１２２）。
次いで、ｎに１を加え（ステップＳ１２３）、ｎが状態遷移定義の数Ｎを超えていなければステップＳ１２２を繰り返し、超えていれば終了する（ステップＳ１２４）。
【００５３】
次に、手続き「個別状態遷移表の生成」の動作について図３８により説明する。
【００５４】
まず、外部状態遷移表生成部８は、状態遷移表名３２に状態遷移表定義２１に含まれる状態遷移定義名２２を設定する（ステップＳ１３１）。
本例では図１２のように状態遷移表名「ＣＲＥＤＩＴ」が設定される。
次に、外部状態遷移表生成部８は、初期状態３３に初期状態の番号０を設定する（ステップＳ１３２）。
次に、外部状態遷移表生成部８は、受理状態３４に、受理状態の番号ＰＭを設定する（ステップＳ１３３）。
本例ではＰ＝１９（図７）、Ｍ＝１０（図８）からＰＭ＝１９０が設定される。
次いで、外部状態遷移表生成部８は、手続き「状態の生成」を実行する（ステップＳ１３１）。
次いで、外部状態遷移表生成部８は、手続き「状態遷移の生成」を実行する（ステップＳ１３４）。
次いで、外部状態遷移表生成部８は、手続き「個別状態遷移表の書き込み」を実行する（ステップＳ１３５）。
【００５５】
次に、手続き「状態の生成」の動作について図３９により説明する。
【００５６】
まず、外部状態遷移表生成部８は、Ｍを除数定義２５（図８）で定義された除数とし、Ｐを桁数定義２４（図７）で定義された桁数とする（ステップＳ１４１）。
本例ではＭ＝１０、Ｐ＝１９となる。
次いで、外部状態遷移表生成部８は、初期状態Ｓ０を生成する（ステップＳ１４２）。
次いで、外部状態遷移表生成部８は、ステップＳ１４３〜Ｓ１４９にて、桁位置ｐ＝１，２，…Ｐ−１、剰余ｍ＝０，１，…（Ｍ−１）の組に対して状態を生成する。
まず、桁位置ｐを１とする（ステップＳ１４３）。
次いで、剰余ｍを０とする（ステップＳ１４４）。
次いで、状態Ｓｓ（ｐ，ｍ，Ｍ）を生成し、状態集合３５に格納する（ステップＳ１４５）。
ただし、関数ｓ（ｐ，ｍ，Ｍ）は、式３に従う。
ｓ（ｐ，ｍ，Ｍ）＝ｐＭ＋ｍ・・・（式３）
次いで、ｍに１を加え（ステップＳ１４６）、ｍ≧Ｍすなわち全ての剰余に対して処理が完了したらステップＳ１４８に進み、そうでなければステップＳ１４５に進む（ステップＳ１４７）。
次いで、ｐに１を加え（ステップＳ１４８）、ｐ≧ＰとなったらステップＳ１５０に進み、そうでなければステップＳ１４４に進む（ステップＳ１４９）。
次いで、受理状態ＳＰＭ＋Ｄを生成する（ステップＳ１５０）。
ただし、Ｄは受理剰余定義２６にて指定された受理剰余である。
【００５７】
手続き「状態の生成」は、図３９に示すように、各状態に対して、入力文字ごとに、入力文字のＬｕｈｎの式の計算結果を求め、計算結果に対応する新たな状態を生成する処理である。
【００５８】
図４１は、手続き「状態の生成」（図３９）によって生成される状態を状態遷移グラフの形式で示したものである。
手続き「状態の生成」では状態遷移グラフのうち状態だけを生成しているので、図４１には状態遷移を示す矢印は示されていない。
初期状態Ｓ０と受理状態ＳＰＭ＋Ｄがそれぞれ生成され、一方、ステップＳ１４３〜Ｓ１４９では（Ｐ−１）種類の桁位置とＭ種類の剰余の組に対して（Ｐ−１）Ｍ個の状態が生成される。
なお、受理剰余Ｄが複数ある場合はそれぞれの受理剰余に対して複数の受理状態を生成する。
以上の手続きにより生成された状態は外部状態集合３５に格納される。
図１５に本例における外部状態集合３５の一例を示す。
図１５は状態Ｓｉの番号ｉを示しており、状態Ｓ０（初期状態），Ｓ１０，Ｓ１１，…，Ｓ１８９，Ｓ１９０（受理状態）が生成されたことを示している。
【００５９】
次に、手続き「状態遷移の生成」の動作について図４０により説明する。
以下では、現状態をＳｉ入力文字をｃ、次状態をＳｊ、とする状態遷移を（Ｓｉ，ｃ，Ｓｊ）と表記する。
【００６０】
まず、外部状態遷移表生成部８は、Ｍを除数定義２５（図８）で定義された除数、Ｐを桁数定義２４（図７）で定義された桁数、Ｃを文字集合定義２３（図６）で定義された文字集合とする（ステップＳ１６１）。
本例では、Ｍ＝１０、Ｐ＝１９、Ｃ＝｛０，１，２，３，４，５，６，７，８，９，−｝となる。
以下、文字集合Ｃの各要素を｛ｃｋ｝（ｋ＝１，２，…｜Ｃ｜）と添字（文字番号）つきで表記する。
ただし、｜Ｃ｜は文字集合Ｃに含まれる要素数、すなわち文字の種類である。
次いで、外部状態遷移表生成部８は、ステップＳ１６２〜Ｓ１７５にて、桁位置ｐ＝１，２，…Ｐ、剰余ｍ＝０，１，…（Ｍ−１）、文字ｃ＝０，１，…，９，−の組に対して状態遷移を生成する。
まず、桁位置ｐを１とする（ステップＳ１６２）。
次いで剰余ｍを０とする（ステップＳ１６３）。
次いで文字番号ｋを１とする（ステップＳ１６４）。
次いで、変換関数定義２７を参照し、桁位置＝ｐ、入力文字＝ｃｋの場合の剰余ｔｒａｎｓ（ｐ，ｃｋ）を求める（ステップＳ１６５）。
【００６１】
ここで、変換関数定義による剰余の計算方法について説明する。
変換関数定義２７は桁位置ｐと入力文字ｃの組に対して剰余の計算法を示すものであり、図１０の例では、桁位置１，３，６，８，１２，１４，１６，１８は、「−」を除くと右端から偶数番目の桁に相当するので、Ｌｕｈｎの式の規則により、「各桁の値を２倍し、１桁の場合はその値を、２桁（１０以上）になった場合は各桁の合計をとる」という規則に従って剰余を計算する。
すなわち、入力文字「０，１，２，３，４，５，６，７，８，９」が、それぞれ、剰余「０，２，４，６，８，１，３，５，７，９」に変換される。
ただし、数字でない文字「−」が出現した場合は正しい文字列形式ではないので剰余は変換不能（Ｘと表記）とする。
また、図１０の桁位置２，４，７，９，１２，１４，１７，１９は「−」を除くと右端から奇数番目の桁に相当するので、Ｌｕｈｎの式の規則により、「各桁の値をとる」という規則に従って剰余を計算する。
すなわち、入力文字「０，１，２，３，４，５，６，７，８，９」が、それぞれ、剰余「０，１，２，３，４，５，６，７，８，９」に変換される。
ただし、数字でない文字「−」が出現した場合は正しい文字列形式ではないので剰余は変換不能（Ｘと表記）とする。
【００６２】
更に、図１０の桁位置５，１０，１５は「−」が出現すべき桁位置であるので、入力文字「０，１，２，３，４，５，６，７，８，９」に対しては変換不能となる。
一方「−」が出現してもＬｕｈｎの式の剰余計算には影響しないので、剰余は０（不変）とする。
【００６３】
ステップＳ１６５で変換関数２７により得られたｔが変換不能を示す「Ｘ」である場合は状態遷移を生成できないのでステップＳ１７０に進み、それ以外の場合はステップＳ１６７に進む。（ステップＳ１６６）。
次に、現状態番号ｉ、次状態番号ｊをそれぞれ、式４及び式５によって計算する（ステップＳ１６７）。
ただし、式５において、ｍｏｄ（ｘ，ｙ）は整数ｘを整数ｙで除算したときの剰余である。
ｉ＝（ｐ−１）Ｍ＋ｍ・・・（式４）
ｊ＝ｐＭ＋ｍｏｄ（ｔｒａｎｓ（ｐ，ｃｋ）＋ｍ，Ｍ）・・・（式５）
もし状態Ｓｉ、状態Ｓｊがともに存在する、すなわち手続き「状態の生成」によって生成済みであれば、ステップＳ１６９に進む。
状態Ｓｉ、状態Ｓｊの一方もしくは両方が存在しなければステップＳ１７０に進む（ステップＳ１６８）。
次いで、外部状態遷移表生成部８は、状態遷移（Ｓｉ，ｃｋ，Ｓｊ）を生成し、外部状態遷移集合３６に格納する（ステップＳ１６９）。
次いで、ｋに１を加え（ステップＳ１７０）、ｋ＞｜Ｃ｜すなわち文字集合Ｃに含まれる全ての文字に対して処理が完了したらステップＳ１７２に進み、そうでなければステップＳ１６５に進む（ステップＳ１７１）。
次いで、ｍに１を加え（ステップＳ１７２）、ｍ≧Ｍすなわち全ての剰余に対して処理が完了したらステップＳ１７４に進み、そうでなければステップＳ１６４に進む（ステップＳ１７３）。
次いで、ｐに１を加え（ステップＳ１７４）、ｐ＞Ｐすなわち全ての桁に対して処理が完了したら終了し、そうでなければステップＳ１６３に進む（ステップＳ１７５）。
【００６４】
以上の手続きにより生成された状態遷移は外部状態遷移集合３６に格納される。
図１６、図１７に外部状態遷移集合３６の一例を表の形式で示す。
図１６、図１７では、現状態と入力文字の組に対する次状態が示されており、例えば、現状態が１０となっている行は状態Ｓ１０において入力文字「０，１，２，３，４，５，６，７，８，９」が入力された場合の次状態が、それぞれ，「Ｓ２０、Ｓ２１、Ｓ２２、Ｓ２３、Ｓ２４、Ｓ２５、Ｓ２６、Ｓ２７、Ｓ２８、Ｓ２９」であり、入力文字「−」が入力された場合は次状態が存在しないことを示している。
【００６５】
ここで、状態遷移グラフを用いて「状態遷移の生成」の動作について説明する。
図４２は手続き「状態遷移の生成」によって生成される状態遷移グラフを示したものである。
ただし、表記の都合で図４２では入力文字を省略している。
図４３は図４２の状態遷移グラフのうち、桁位置ｐ＝１に関わる部分を示したものである。
剰余の初期値はｍ＝０なので、現状態Ｓｉは式４でｐ＝１，ｍ＝０，Ｍ＝１０とすることにより、式６から、初期状態Ｓ０となる。
ｉ＝（ｐ−１）Ｍ＋ｍ
＝０          ・・・（式６）
一方、次状態Ｓｊは入力文字ｃｋごとに異なる。
入力文字「０，１，２，３，４，５，６，７，８，９，−」のそれぞれにつき、桁位置ｐ＝１の変換関数定義２７に従って決まる次の剰余ｔｒａｎｓ（１，ｃｋ）は「０，２，４，６，８，１，３，５，７，９，Ｘ（ｋ＝０，１，…９）」である。
入力文字「−」については変換不能のため状態遷移は生成できない。
それ以外の入力文字「０，１，２，３，４，５，６，７，８，９」について式５にｐ＝１，ｍ＝０，Ｍ＝１０を適用すると、式７から、それぞれ次状態は「Ｓ１０、Ｓ１２、Ｓ１４、Ｓ１６、Ｓ１８、Ｓ１１、Ｓ１３、Ｓ１５、Ｓ１７、Ｓ１９」となる。
ｊ＝ｐＭ＋ｍｏｄ（ｔ＋ｍ，Ｍ）
＝１０＋ｍｏｄ（ｔｒａｎｓ（ｐ，ｃｋ），１０）
＝１０＋ｔｒａｎｓ（１，ｃｋ）                ・・・（式７）
以上から、図４３の矢印で表記される次の状態遷移が追加される。
（Ｓ０，０，Ｓ１０）
（Ｓ０，１，Ｓ１２）
（Ｓ０，２，Ｓ１４）
（Ｓ０，３，Ｓ１６）
（Ｓ０，４，Ｓ１８）
（Ｓ０，５，Ｓ１１）
（Ｓ０，６，Ｓ１３）
（Ｓ０，７，Ｓ１５）
（Ｓ０，８，Ｓ１７）
（Ｓ０，９，Ｓ１９）
【００６６】
図４４は、図４２の状態遷移グラフのうち、例として桁位置ｐ＝２で剰余ｍ＝１に関わる部分を示したものである。
現状態Ｓｉは、式４でｐ＝２，ｍ＝１，Ｍ＝１０とすることにより、式８から状態Ｓ１１となる。
ｉ＝（ｐ−１）Ｍ＋ｍ
＝１１        ・・・（式８）
一方、次状態Ｓｊは、入力文字ｃｋごとに異なる。
入力文字「０，１，２，３，４，５，６，７，８，９，−」のそれぞれにつき、桁位置ｐ＝２の変換関数定義２７に従って決まる次の剰余ｔｒａｎｓ（２，ｃｋ）は「０，１，２，３，４，５，６，７，８，９，Ｘ（ｋ＝０，１，…９）」である。
入力文字「−」については変換不能のため状態遷移は生成できない。
それ以外の入力文字「０，１，２，３，４，５，６，７，８，９」について式５にｐ＝２，ｍ＝１，Ｍ＝１０を適用すると、式９から、それぞれ次状態Ｓｊは「Ｓ２１、Ｓ２２、Ｓ２３、Ｓ２４、Ｓ２５、Ｓ２６、Ｓ２７、Ｓ２８、Ｓ２９、Ｓ２０」となる。
ｊ＝ｐＭ＋ｍｏｄ（ｔ＋ｍ，Ｍ）  
＝２０＋ｍｏｄ（ｔｒａｎｓ（ｐ，ｃｋ）＋１，１０）・・・（式９）
以上から、図４４の矢印で表記される次の状態遷移が追加される。
（Ｓ１１，０，Ｓ２１）
（Ｓ１１，１，Ｓ２２）
（Ｓ１１，２，Ｓ２３）
（Ｓ１１，３，Ｓ２４）
（Ｓ１１，４，Ｓ２５）
（Ｓ１１，５，Ｓ２６）
（Ｓ１１，６，Ｓ２７）
（Ｓ１１，７，Ｓ２８）
（Ｓ１１，８，Ｓ２９）
（Ｓ１１，９，Ｓ２０）
【００６７】
図４５は、図４２の状態遷移グラフのうち、例として桁位置ｐ＝５に関わる部分を示したものである。
現状態Ｓｉは式４でｐ＝５，Ｍ＝１０とすることにより、式１０から、状態Ｓ４０〜Ｓ４９となる。
ｉ＝（ｐ−１）Ｍ＋ｍ
＝４０＋ｍ    ・・・（式１０）
一方、次状態Ｓｊであるが、入力文字「０，１，２，３，４，５，６，７，８，９，−」のそれぞれにつき、桁位置ｐ＝５の変換関数定義２７に従って決まる次の剰余ｔｒａｎｓ（５，ｃｋ）は「Ｘ，Ｘ，Ｘ，Ｘ，Ｘ，Ｘ，Ｘ，Ｘ，Ｘ，０（ｋ＝０，１，…９）」である。
すなわち、入力文字「０，１，２，３，４，５，６，７，８，９」については変換不能のため状態遷移は生成できない。
ｃｋ＝「−」について式４、式５にｐ＝５，Ｍ＝１０を適用すると、ｔｒａｎｓ（ｐ，ｃｋ）＝０であるから、式１１及び式１２のようになる。
ｉ＝（ｐ−１）Ｍ＋ｍ
＝４０＋ｍ    ・・・（式１１）
ｊ＝ｐＭ＋ｍｏｄ（ｔ＋ｍ，Ｍ）
＝５０＋ｍｏｄ（ｍ，１０）
＝５０＋ｍ  （０≦ｍ＜１０より）・・・（式１２）
すなわちｍ＝０，１，…９に対して、図４５の矢印で表記される次の状態遷移が追加される。
（Ｓ４０，−，Ｓ５０）
（Ｓ４１，−，Ｓ５１）
（Ｓ４２，−，Ｓ５２）
（Ｓ４３，−，Ｓ５３）
（Ｓ４４，−，Ｓ５４）
（Ｓ４５，−，Ｓ５５）
（Ｓ４６，−，Ｓ５６）
（Ｓ４７，−，Ｓ５７）
（Ｓ４８，−，Ｓ５８）
（Ｓ４９，−，Ｓ５９）
【００６８】
図４６は、図４２の状態遷移グラフのうち、例として桁位置ｐ＝１９に関わる部分を示したものである。
現状態Ｓｉは式４でｐ＝１９，Ｍ＝１０とすることにより、式１３から、状態Ｓ１８０〜Ｓ１８９となる。
ｉ＝（ｐ−１）Ｍ＋ｍ
＝１８０＋ｍ・・・（式１３）
一方、次状態Ｓｊであるが、入力文字「０，１，２，３，４，５，６，７，８，９，−」のそれぞれにつき、桁位置ｐ＝１９の変換関数定義２７に従って決まる次の剰余ｔｒａｎｓ（ｐ，ｃｋ）は「０，１，２，３，４，５，６，７，８，９，Ｘ」である。
入力文字「−」については変換不能のため状態遷移は生成できない。
更に、式５において、状態の生成手順から状態の生成手順からＳｊ（ｊ≧ＰＭ）となるｊはｊ＝ＰＭだけであり、従って、ステップＳ１６８において生成可能なｊは、式１４から、１９０の場合に限られる。
ｊ＝ｐＭ＋ｍｏｄ（ｔｒａｎｓ（ｐ，ｃｋ）＋ｍ，Ｍ）
＝１９０・・・（式１４）
従って、式１５を満足するｍ，ｃｋの組について現状態がＳ１８０〜Ｓ１８９、次状態がＳ１９０となる状態遷移が生成される。
ｍｏｄ（ｔｒａｎｓ（ｐ，ｃｋ）＋ｍ，１０）＝０・・・（式１５）
（ただし、ｐ＝１９）
すなわちｍ＝０，１，…９に対して、図４６の矢印で表記される次の状態遷移が追加される。
（Ｓ１８０，０，Ｓ１９０）
（Ｓ１８１，９，Ｓ１９０）
（Ｓ１８２，８，Ｓ１９０）
（Ｓ１８３，７，Ｓ１９０）
（Ｓ１８４，６，Ｓ１９０）
（Ｓ１８５，５，Ｓ１９０）
（Ｓ１８６，４，Ｓ１９０）
（Ｓ１８７，５，Ｓ１９０）
（Ｓ１８８，６，Ｓ１９０）
（Ｓ１８９，１，Ｓ１９０）
【００６９】
次に、ＮＦＡ状態遷移表生成部１０の動作（ステップＳ１１２）について説明する。
以下では、ＮＦＡ状態遷移表生成部１０の入力となる正規表現検査条件２の一例として図２に示す正規表現検査条件２を使用する場合について示す。
【００７０】
ＮＦＡ状態遷移表生成部１０におけるＮＦＡ状態遷移表９の生成方法は、公知の手順を拡張したものであり、例えば図４７に拡張ＢＮＦ記法にて記載の一般的な正規表現の構文規則に代えて図４８に示す構文規則により構文解析を行う。
図４７および図４８において＜＞で囲われた記号は非終端記号を表す。
図４８の構文規則では図４７に示す構文規則に対して非終端記号＜ｅｘｔｅｒｎａｌ＿ｄｅｆ＞の定義が追加されており（符号４８０１、４８０２）、図４８の＜ｅｘｔｅｒｎａｌ＿ｄｅｆ＞の定義に示されている＜ｉｄｅｎｔｉｆｉｅｒ＞により状態遷移名定義３２を指定する。
本実施の形態では、図１２のように「ＣＲＥＤＩＴ」という状態遷移名が指定されているものとする。
次いで、公知のＮＦＡ生成の手順と同様の手順により、正規表現検査条件２から図４８の構文規則に従い、公知の方法を使用して、正規表現を１文字ずつ読み取りながら字句解析、構文解析を行い、ＮＦＡ状態遷移表１１を生成する。
この過程で、＜ｅｘｔｅｒｎａｌ＿ｄｅｆ＞が検出されると、図４９に示す手順を実行する。
本例では、正規表現検査条件２の３文字目すなわち「＝」を読んだ直後には図５０に示す中間的なＮＦＡ状態遷移表４６が生成されている。
図５０のＮＦＡ状態遷移表４６を状態遷移グラフで表現すると図５１のようになる。
状態遷移グラフの生成手順によっては、中間的な状態遷移グラフの中に図５２に示すように冗長な空文字遷移が含まれる場合があるが、このような場合であっても同様の手順でＮＦＡ状態遷移表１１を生成することが可能であるので、本例では図５０のＮＦＡ状態遷移表が生成されたものとして説明する。
次に、正規表現検査条件２の（？？｛ＣＲＥＤＩＴ｝？？）の部分を読むことにより「ＣＲＥＤＩＴ」を＜ｉｄｅｎｔｉｆｉｅｒ＞とする＜ｅｘｔｅｒｎａｌ＿ｄｅｆ＞が検出され、図４９の外部定義出現時の処理が実行される。
【００７１】
図４９において、ＮＦＡ状態遷移表生成部１０は、まず、外部状態遷移表９を探索し、状態遷移表名３１が「ＣＲＥＤＩＴ」となる外部状態遷移集合３６を取得する（ステップＳ１８１）。
次いで、ＮＦＡ状態遷移表生成部１０は、外部状態遷移集合に含まれる状態遷移をＮＦＡ状態遷移表１１に追加する（ステップＳ１８２）。
この時、外部状態遷移集合３６に含まれる状態とＮＦＡ状態遷移表１１の状態の番号が重複しないように、外部状態遷移集合３６から追加された状態に一意の番号を割り当てる。
本例の場合、例えば、外部状態遷移集合３６から追加された状態の番号に一律１０００を加え、外部状態遷移集合３６の初期状態Ｓ０から初期状態に由来する状態Ｓ１０００、外部状態遷移集合３６の受理状態Ｓ１９０から受理状態に由来する状態Ｓ１１９０などを生成する。
次いで、ＮＦＡ状態遷移表生成部１０は、現在の状態を現状態、外部状態遷移集合３６の初期状態に由来する状態を次状態とする空文字（ε）による遷移をＮＦＡ状態遷移表１１に追加する（ステップＳ１８３）。
本例では（Ｓ３，ε，Ｓ１０００）という状態遷移を追加する。
この段階の状態遷移グラフは図５３の通りとなる。
次いで、ＮＦＡ状態遷移表生成部１０は、新しい状態を生成し、ＮＦＡ状態遷移表１１に追加する（ステップＳ１８４）。
本例では追加された状態をＳ４とする。
次いで、ＮＦＡ状態遷移表生成部１０は、外部状態遷移集合３６の受理状態に由来する状態を現状態とし、ステップＳ１８４にて生成された状態を次状態とする空文字による遷移を追加する（ステップＳ１８５）。
本例では（Ｓ１１９０，ε，Ｓ４）という状態遷移が追加される。
この段階の状態遷移グラフは図５４の通りとなる。
以上の手順が、＜ｅｘｔｅｒｎａｌ＿ｄｅｆ＞が検出されるたびに実行される。
【００７２】
以上の動作により、生成されるＮＦＡ状態遷移表１１の一例を図２２、図２３、図２４に示す。
【００７３】
次に、ＤＦＡ状態遷移表生成部の動作（ステップＳ１１３）について説明する。
【００７４】
ＤＦＡ状態遷移表生成部１２は、公知の手順により、ＮＦＡ状態遷移表１１に含まれる非決定的状態遷移を除去し、ＤＦＡ状態遷移表１３を生成する。
本例では、図１８〜図２４に示すＮＦＡ状態遷移表１１、すなわち図５４の状態遷移グラフから空文字遷移を含む非決定的状態遷移を除去することにより、図２５〜図３１のＤＦＡ状態遷移表１３が生成される。
図２５〜図３１のＤＦＡ状態遷移表１３を状態遷移グラフの形式で表記すると図５５のようになる。
【００７５】
以上で状態遷移表生成部６の説明を終わり、次に照合部７の動作（ステップＳ１０２）について説明する。
【００７６】
照合部７は、ＤＦＡ状態遷移表１３と入力文字列４を入力とし、公知の有限オートマトンによる照合を行い、最終的に受理状態に到達すれば、文字列パタンの検出と同時にチェックディジットの検査に成功したものとする。
照合部７により、文字列パタンの検出とチェックディジットの検査が同時に行われることを例により示す。
【００７７】
第一の例として、図３２に示す、正当なチェックディジットを持つ入力文字列４と図２５〜図３１のＤＦＡ状態遷移表１３を入力とする場合を示す。
本例ではまず初期状態Ｓ０において入力文字「Ｎ」を読むと、ＤＦＡ状態遷移表１３において状態Ｓ０と入力文字「Ｎ」に対応する次状態がＳ１であることから、状態Ｓ１に遷移する。
以下、図５６に示すとおり、入力文字「ｏ，＝，４，０，２，３，−，…」を順次読み進めると状態「Ｓ２、Ｓ１０００、Ｓ１０１８、Ｓ１０２８、Ｓ１０３２、Ｓ１０４５、Ｓ１０５５・・・」と読み進め、最後に入力文字＃を読むと受理状態Ｓ３に到達する。
すなわち図３２の入力文字列は決定性有限オートマトン１４により受理され、文字列パタンの検出と同時にチェックディジットの検査に成功するので、パタンが検出されたことを示す照合結果５を出力する。
【００７８】
第二の例として、図３３に示す、正当でないチェックディジットを持つ入力文字列４と図２５〜図３１のＤＦＡ状態遷移表１３を入力とする場合を示す。
本例では、第一の例の正当なチェックディジット「３」を「０」で置き換えている。
本例では図５７に示すとおり、入力文字「Ｎ，ｏ，＝，４，０，２，３，−，…」を順次読み進めると状態「Ｓ０、Ｓ１、Ｓ２、Ｓ１０００、Ｓ１０１８、Ｓ１０２８、Ｓ１０３２、Ｓ１０４５、Ｓ１０５５・・・」と読み進めるが、状態Ｓ１１８７にて文字「０」を読むと、次状態が存在しないため、照合に失敗する。
すなわち図３３の入力文字列４決定性有限オートマトン１４により受理されず、パタンが検出されなかったことを示す照合結果５を出力する。
【００７９】
第三の例として、図３４に示すような文字列パタンとして適合しない文字「Ａ」を含む入力文字列４と図２５〜図３１のＤＦＡ状態遷移表１３を入力とする場合を示す。
本例では図５８に示すとおり、入力文字「Ｎ，ｏ，＝，４，０，２，３，−，…」を順次読み進めると状態「Ｓ０、Ｓ１、Ｓ２、Ｓ１０００、Ｓ１０１８、Ｓ１０２８、Ｓ１０３２、Ｓ１０４５、Ｓ１０５５・・・」と読み進めるが、状態Ｓ１０８８にて文字「Ａ」を読むと、次状態が存在しないため、照合に失敗する。
すなわち図３４の入力文字列４決定性有限オートマトン１４により受理されず、パタンが検出されなかったことを示す照合結果５を出力する。
【００８０】
実施の形態１における文字列照合装置１は以上のように構成されているので、入力文字数をＰ、チェックディジット検査対象の数字の桁数をｄ、剰余の種類をＭとするとき、外部状態遷移表９およびそれに由来する状態遷移表に含まれる状態の数をｓ、状態遷移の数をｔとすると、式１６及び式１７の程度の多項式オーダで実現できる。
ｓ＝（Ｐ−２）Ｍ＋２・・・（式１６）
ｔ＝（Ｐ−ｄ）Ｍ＋（ｄ−２）・ｍ２・・・（式１７）
本例のＬｕｈｎの式によるクレジットカード番号検査の場合、Ｐ＝１９、ｄ＝１６、Ｍ＝１０であり、ｓ＝１７２、ｔ＝１４３０となる。
従って、状態、状態遷移の数とも、今日のコンピュータを用いて容易に保持できる規模である。
このように、本実施の形態によれば、長大な正規表現検査条件を記述することなく有限オートマトンを用いた文字列パタンの検出とチェックディジット検査を同時に実行するという効果を奏する。
【００８１】
なお、本実施の形態では、変換関数定義２７は図１０のような表の形式で指定するものとしたが、桁位置と入力文字から剰余が一意に決まるような手段であればよく、例えば手続き（プログラム）や数式を含むコンピュータプログラムや論理回路によって実現してもよい。
【００８２】
なお、実施の形態１では正規表現検査条件２や外部状態遷移定義３を外部から入力するとしたが、検出すべき文字列パタンおよびチェックディジットが既知の場合は文字列照合装置１の中に組み込んでおいてもよい。
【００８３】
実施の形態２．
実施の形態１では外部状態遷移定義３から外部状態遷移表９を生成するものとしたが、予め外部状態遷移表９を人手等により作成しておきそれを入力としてもよい。
【００８４】
図５９は、実施の形態２における文字列照合装置１を示す図である。
実施の形態２では、実施の形態１における外部状態遷移表９を文字列照合装置１の入力とする。
本実施の形態では、ＮＦＡ状態遷移表生成部１０が外部状態遷移表９を入力し、ＮＦＡ状態遷移表記憶部１１０に外部状態遷移表９を格納し、正規表現検査条件２を入力した際に、ＮＦＡ状態遷移表記憶部１１０から外部状態遷移表９を読み出して、実施の形態１で説明した手法により、ＮＦＡ状態遷移表１１を生成する。
これ以外の動作は、実施の形態１と同様である。
なお、本実施の形態では、ＮＦＡ状態遷移表生成部１０は、検査条件取得部、状態遷移情報更新部の例に相当するとともに、状態遷移情報入力部の例に相当する。
また、ＮＦＡ状態遷移表記憶部１１０が状態遷移情報記憶部の例に相当する。
【００８５】
実施の形態２では、外部状態遷移表９を直接記述できるため、実施の形態１では指定不可能な詳細な定義が可能になる。
例えば、クレジットカード番号は桁ごとに対象とする種類や割り当て可能な値が決められているので、一部の種類のカードに限定した状態遷移表を事前に作成し、それを入力とすることにより、種類を限定したクレジットカード番号の検出を行ったり、割り当ての行われていない数値を除外することにより、より精度良くクレジットカード番号の検出を行うことが可能になる。
【００８６】
なお、実施の形態２では正規表現検査条件２や外部状態遷移表９を外部から入力するとしたが、検出すべき文字列パタンおよびチェックディジットが既知の場合は文字列照合装置１の中に組み込んでおいてもよい。
【００８７】
実施の形態３．
実施の形態１では外部状態遷移定義３からＤＦＡ状態遷移表１３を生成し、決定性有限オートマトン１４の入力とするものとしたが、ＮＦＡ状態遷移表１１を非決定性有限オートマトンの入力としてもよい。
【００８８】
図６０は、実施の形態３における文字列照合装置１を示す図である。
実施の形態３では、実施の形態１における決定性有限オートマトン１４の代わりに非決定性有限オートマトン１５を使用する。
本実施の形態では、ＮＦＡ状態遷移表生成部１０がＮＦＡ状態遷移表記憶部１１０で記憶されているＮＦＡ状態遷移表１１を非決定性有限オートマトン１５に出力する。
これ以外の動作は、実施の形態１と同様である。
なお、本実施の形態では、ＮＦＡ状態遷移表生成部１０は、検査条件取得部、状態遷移情報更新部の例に相当するとともに、状態遷移情報出力部の例に相当する。
【００８９】
一般に決定性有限オートマトンでは、条件によりＤＦＡ状態遷移表のサイズが極めて大きくなることがある。
このため、実施の形態１において、正規表現検査条件２や外部状態遷移定義３の指定内容によっては、ＤＦＡ状態遷移表１３の規模が極めて大きくなり、処理が困難になる場合がある。
決定性有限オートマトン１４の代わりに非決定性有限オートマトン１５を使用することにより、よりサイズの小さいＮＦＡ状態遷移表１１を入力として処理を行うことができる。
【００９０】
以上の実施の形態１〜３ではＬｕｈｎの式を用いたチェックディジットを対象としたが、「モジュラス１０、ウェイト３」、「モジュラス１１  ウェイト１０−２」等の剰余を利用するチェックディジットに適用できる。
また、各桁の数字を合計する「チェックサム」や、「パリティチェック」も剰余を利用するチェックディジットの一種とみなすことができ、実施の形態１〜３に示した方式を適宜変更して文字列パタンの検出と同時に正当性の検査を行うことができる。
【００９１】
なお、例えば、特許文献２や特許文献３には、有限オートマトンの動作を拡張し、状態遷移表を格納するのに必要な記憶容量を削減する方法について記載されているが、このような拡張されたオートマトンであっても、実施の形態１〜３に示した方法を適用することにより、文字列パタンの検出とチェックディジットの正当性の検査を同時に行うことができる。
【００９２】
また、実施の形態１〜３に示した方式のうち、２つ以上を組み合わせて実施しても構わない。
あるいは、これらの実施の形態のうち、１つを部分的に実施しても構わない。
あるいは、これらの実施の形態のうち、２つ以上を部分的に組み合わせて実施しても構わない。
なお、本発明は、実施の形態１〜３に限定されるものではなく、必要に応じて種々の変更が可能である。
【００９３】
以上の実施の形態１〜３では、以下の手段を備えた文字列照合装置を説明した。
現状態と文字の組に対し次状態を記述した状態遷移を１または複数個含む外部状態遷移表、
外部状態遷移表と正規表現で記述された検査条件から、状態遷移表を生成する状態遷移表生成部、
入力文字列と状態遷移表から照合結果を出力する有限オートマトン。
【００９４】
また、実施の形態１〜３では、以下を説明した。
状態遷移表生成部は、正規表現で記述された検査条件から生成される状態において空文字により外部状態遷移表の初期状態に遷移する状態遷移を生成する。
状態遷移表生成部は、外部状態遷移表の受理状態から空文字により正規表現で記述された検査条件の状態に遷移する状態遷移を生成する。
【００９５】
また、実施の形態１及び３に係る文字列照合装置が、
文字集合、桁数、除数と、桁位置と文字の組に対する剰余を記述する変換関数から成る外部状態遷移定義を備え、
外部状態遷移定義から外部状態遷移表を生成する外部状態遷移表生成部を備えることを説明した。
【００９６】
また、実施の形態１〜３では、変換関数が、各桁ごとにチェックディジット計算に利用する剰余を生成することを説明した。
【００９７】
また、実施の形態１〜３では、変換関数が、区切り文字を含む桁に対して剰余を計算しないことを説明した。
【００９８】
また、実施の形態１〜３では、変換関数が、右端のチェックディジットを１番目として、奇数番目の桁と偶数番目の桁で異なる値を乗じた後各桁の数字を合計した数値を剰余とする（Ｌｕｈｎやモジュラス１０ウェイト３）ことを説明した。
【００９９】
また、実施の形態１〜３では、変換関数が、各桁ごとに異なる数字を乗じて剰余とする（モジュラス１１  ウェイト１０−２など）ことを説明した。
【０１００】
また、実施の形態１及び２では、有限オートマトンが決定性有限オートマトンであることを説明した。
【０１０１】
最後に、実施の形態１〜３に示した文字列照合装置１のハードウェア構成例について説明する。
図６１は、実施の形態１〜３に示す文字列照合装置１のハードウェア資源の一例を示す図である。
なお、図６１の構成は、あくまでも文字列照合装置１のハードウェア構成の一例を示すものであり、文字列照合装置１のハードウェア構成は図６１に記載の構成に限らず、他の構成であってもよい。
【０１０２】
図６１において、文字列照合装置１は、プログラムを実行するＣＰＵ９１１（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ、中央処理装置、処理装置、演算装置、マイクロプロセッサ、マイクロコンピュータ、プロセッサともいう）を備えている。
ＣＰＵ９１１は、バス９１２を介して、例えば、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）９１３、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）９１４、通信ボード９１５、表示装置９０１、キーボード９０２、マウス９０３、磁気ディスク装置９２０と接続され、これらのハードウェアデバイスを制御する。
更に、ＣＰＵ９１１は、ＦＤＤ９０４（Ｆｌｅｘｉｂｌｅ  Ｄｉｓｋ  Ｄｒｉｖｅ）、コンパクトディスク装置９０５（ＣＤＤ）、プリンタ装置９０６、スキャナ装置９０７と接続していてもよい。また、磁気ディスク装置９２０の代わりに、ＳＳＤ（Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｒｉｖｅ）、光ディスク装置、メモリカード（登録商標）読み書き装置などの記憶装置でもよい。
ＲＡＭ９１４は、揮発性メモリの一例である。ＲＯＭ９１３、ＦＤＤ９０４、ＣＤＤ９０５、磁気ディスク装置９２０の記憶媒体は、不揮発性メモリの一例である。
これらは、記憶装置の一例である。
実施の形態１〜３で説明した「〜記憶部」は、ＲＡＭ９１４、磁気ディスク装置９２０等により実現される。
通信ボード９１５、キーボード９０２、マウス９０３、スキャナ装置９０７などは、入力装置の一例である。
また、通信ボード９１５、表示装置９０１、プリンタ装置９０６などは、出力装置の一例である。
【０１０３】
通信ボード９１５は、ネットワークに接続されている。
例えば、通信ボード９１５は、ＬＡＮ（ローカルエリアネットワーク）、インターネット、ＷＡＮ（ワイドエリアネットワーク）、ＳＡＮ（ストレージエリアネットワーク）などに接続されている。
【０１０４】
磁気ディスク装置９２０には、オペレーティングシステム９２１（ＯＳ）、ウィンドウシステム９２２、プログラム群９２３、ファイル群９２４が記憶されている。
プログラム群９２３のプログラムは、ＣＰＵ９１１がオペレーティングシステム９２１、ウィンドウシステム９２２を利用しながら実行する。
【０１０５】
また、ＲＡＭ９１４には、ＣＰＵ９１１に実行させるオペレーティングシステム９２１のプログラムやアプリケーションプログラムの少なくとも一部が一時的に格納される。
また、ＲＡＭ９１４には、ＣＰＵ９１１による処理に必要な各種データが格納される。
【０１０６】
また、ＲＯＭ９１３には、ＢＩＯＳ（Ｂａｓｉｃ  Ｉｎｐｕｔ  Ｏｕｔｐｕｔ  Ｓｙｓｔｅｍ）プログラムが格納され、磁気ディスク装置９２０にはブートプログラムが格納されている。
文字列照合装置１の起動時には、ＲＯＭ９１３のＢＩＯＳプログラム及び磁気ディスク装置９２０のブートプログラムが実行され、ＢＩＯＳプログラム及びブートプログラムによりオペレーティングシステム９２１が起動される。
【０１０７】
上記プログラム群９２３には、実施の形態１〜３の説明において「〜部」（「〜記憶部」以外、以下同様）として説明している機能を実行するプログラムが記憶されている。プログラムは、ＣＰＵ９１１により読み出され実行される。
【０１０８】
ファイル群９２４には、実施の形態１〜３の説明において、「〜の判断」、「〜の計算」、「〜の生成」、「〜の更新」、「〜の設定」、「〜の選択」、「〜の入力」、「〜の出力」等として説明している処理の結果を示す情報やデータや信号値や変数値が、ディスクやメモリなどの記憶媒体にファイルとして記憶されている。
「〜ファイル」や「〜データベース」は、ディスクやメモリなどの記憶媒体に記憶される。
ディスクやメモリなどの記憶媒体に記憶された情報やデータや信号値や変数値やパラメータは、読み書き回路を介してＣＰＵ９１１によりメインメモリやキャッシュメモリに読み出される。
そして、読み出された情報やデータや信号値や変数値やパラメータは、抽出・検索・参照・比較・演算・計算・処理・編集・出力・印刷・表示などのＣＰＵの動作に用いられる。
抽出・検索・参照・比較・演算・計算・処理・編集・出力・印刷・表示のＣＰＵの動作の間、情報やデータや信号値や変数値やパラメータは、メインメモリ、レジスタ、キャッシュメモリ、バッファメモリ等に一時的に記憶される。
また、実施の形態１〜３で説明しているフローチャートの矢印の部分は主としてデータや信号の入出力を示す。
データや信号値は、ＲＡＭ９１４のメモリ、ＦＤＤ９０４のフレキシブルディスク、ＣＤＤ９０５のコンパクトディスク、磁気ディスク装置９２０の磁気ディスク、その他光ディスク、ブルーレイ（登録商標）ディスク、ＤＶＤ等の記憶媒体に記録される。
また、データや信号は、バス９１２や信号線やケーブルその他の伝送媒体によりオンライン伝送される。
【０１０９】
また、実施の形態１〜３の説明において「〜部」として説明しているものは、「〜回路」、「〜装置」、「〜機器」であってもよく、また、「〜ステップ」、「〜手順」、「〜処理」であってもよい。
すなわち、実施の形態１〜３で説明したフローチャートに示すステップ、手順、処理により、本発明に係る「情報処理方法」を実現することができる。
また、「〜部」として説明しているものは、ＲＯＭ９１３に記憶されたファームウェアで実現されていても構わない。
或いは、ソフトウェアのみ、或いは、素子・デバイス・基板・配線などのハードウェアのみ、或いは、ソフトウェアとハードウェアとの組み合わせ、さらには、ファームウェアとの組み合わせで実施されても構わない。
ファームウェアとソフトウェアは、プログラムとして、磁気ディスク、フレキシブルディスク、光ディスク、コンパクトディスク、ブルーレイ（登録商標）ディスク、ＤＶＤ等の記憶媒体に記憶される。
プログラムはＣＰＵ９１１により読み出され、ＣＰＵ９１１により実行される。
すなわち、プログラムは、実施の形態１〜３の「〜部」としてコンピュータを機能させるものである。あるいは、実施の形態１〜３の「〜部」の手順や方法をコンピュータに実行させるものである。
【０１１０】
このように、実施の形態１〜３に示す文字列照合装置１は、処理装置たるＣＰＵ、記憶装置たるメモリ、磁気ディスク等、入力装置たるキーボード、マウス、通信ボード等、出力装置たる表示装置、通信ボード等を備えるコンピュータである。
そして、上記したように「〜部」として示された機能をこれら処理装置、記憶装置、入力装置、出力装置を用いて実現するものである。
【符号の説明】
【０１１１】
１  文字列照合装置、２  正規表現検査条件、３  外部状態遷移定義、４  入力文字列、５  照合結果、６  状態遷移表生成部、７  照合部、８  外部状態遷移表生成部、９  外部状態遷移表、１０  ＮＦＡ状態遷移表生成部、１１  ＮＦＡ状態遷移表、１２  ＤＦＡ状態遷移表生成部、１３  ＤＦＡ状態遷移表、１４  決定性有限オートマトン、１５  非決定性有限オートマトン、９０  外部状態遷移表記憶部、１１０  ＮＦＡ状態遷移表記憶部、１３０  ＤＦＡ状態遷移表記憶部。
【図１】
2014095993.tif 000003
【図２】
2014095993.tif 000004
【図３】
2014095993.tif 000005
【図４】
2014095993.tif 000006
【図５】
2014095993.tif 000007
【図６】
2014095993.tif 000008
【図７】
2014095993.tif 000009
【図８】
2014095993.tif 000010
【図９】
2014095993.tif 000011
【図１０】
2014095993.tif 000012
【図１１】
2014095993.tif 000013
【図１２】
2014095993.tif 000014
【図１３】
2014095993.tif 000015
【図１４】
2014095993.tif 000016
【図１５】
2014095993.tif 000017
【図１６】
2014095993.tif 000018
【図１７】
2014095993.tif 000019
【図１８】
2014095993.tif 000020
【図１９】
2014095993.tif 000021
【図２０】
2014095993.tif 000022
【図２１】
2014095993.tif 000023
【図２２】
2014095993.tif 000024
【図２３】
2014095993.tif 000025
【図２４】
2014095993.tif 000026
【図２５】
2014095993.tif 000027
【図２６】
2014095993.tif 000028
【図２７】
2014095993.tif 000029
【図２８】
2014095993.tif 000030
【図２９】
2014095993.tif 000031
【図３０】
2014095993.tif 000032
【図３１】
2014095993.tif 000033
【図３２】
2014095993.tif 000034
【図３３】
2014095993.tif 000035
【図３４】
2014095993.tif 000036
【図３５】
2014095993.tif 000037
【図３６】
2014095993.tif 000038
【図３７】
2014095993.tif 000039
【図３８】
2014095993.tif 000040
【図３９】
2014095993.tif 000041
【図４０】
2014095993.tif 000042
【図４１】
2014095993.tif 000043
【図４２】
2014095993.tif 000044
【図４３】
2014095993.tif 000045
【図４４】
2014095993.tif 000046
【図４５】
2014095993.tif 000047
【図４６】
2014095993.tif 000048
【図４７】
2014095993.tif 000049
【図４８】
2014095993.tif 000050
【図４９】
2014095993.tif 000051
【図５０】
2014095993.tif 000052
【図５１】
2014095993.tif 000053
【図５２】
2014095993.tif 000054
【図５３】
2014095993.tif 000055
【図５４】
2014095993.tif 000056
【図５５】
2014095993.tif 000057
【図５６】
2014095993.tif 000058
【図５７】
2014095993.tif 000059
【図５８】
2014095993.tif 000060
【図５９】
2014095993.tif 000061
【図６０】
2014095993.tif 000062
【図６１】
2014095993.tif 000063