(57)【要約】      （修正有）【課題】パターンマッチングのためのフィルタリングを行う情報処理装置等において、従来例に比較して、効率的に処理することができる。【解決手段】情報処理システムにおいて、センサ装置は、入力されるイベントのシーケンスデータに関する所定のマッチング条件に基づいて有限状態機械を生成し、生成された有限状態機械を用いて、前記シーケンスデータから前記マッチング条件に一致しないデータを実質的に除去するように加工されたシーケンスデータを出力する前置情報処理回路を備える。【選択図】図１
2020057362.tif 000002
【特許請求の範囲】
【請求項１】
入力されるイベントのシーケンスデータに関する所定のマッチング条件に基づいて有限状態機械を生成し、生成された有限状態機械を用いて、前記シーケンスデータから前記マッチング条件に一致しないデータを実質的に除去するように加工されたシーケンスデータを出力する情報処理回路を備えたことを特徴とする情報処理装置。
【請求項２】
前記シーケンスデータが実時間のタイムスタンプ付きイベントのシーケンスデータで、前記マッチング条件は実時間制約付きオートマトンとして記述されている、請求項１記載の情報処理装置。
【請求項３】
前記有限状態機械は、Ｎ個のメモリブロックを有するＦＩＦＯバッファと、前記有限状態機械の状態遷移のルールを記述した情報を有し、前記Ｎ個のメモリブロックのそれぞれは、第１状態と第２状態のいずれかを表すフラグを格納する領域を有する請求項２記載の情報処理装置。
【請求項４】
前記有限状態機械は、前記シーケンスデータの一単位のデータの入力を受け付けるたびに、
前記バッファの末尾のメモリブロックの内容を取り出し、
前記受け付けたデータと前記ルールとに基づいて、前記有限状態機械の状態を遷移させ、
前記バッファの先頭のメモリブロックに、前記受け付けたデータに対応するフラグの初期値として、第２状態を格納し、
遷移後の前記有限状態機械の状態に応じて、前記バッファ内の各メモリブロックに格納されているフラグの更新を行う、
請求項３に記載の情報処理装置。
【請求項５】
前記有限状態機械がとり得る状態の各々は、前記オートマトンがとり得る状態ｓと、初期状態から前記状態ｓに達するまでに要する遷移回数に相当するカウンタｎの組（ｓ，ｎ）の集合｛（ｓ１，ｎ１），（ｓ２，ｎ２），...（ｓｋ，ｎｋ）｝からなり（ｋは１以上の整数）、
前記情報処理回路は、
（１）前記有限状態機械の状態を遷移させた後の状態に含まれる、前記組の集合の中に、前記カウンタの値がＮである組が存在する場合、前記バッファ中のＮ個のメモリブロックのフラグをすべて第１状態に変更し、
（２）前記有限状態機械の状態が含む前記状態ｓ１，ｓ２，，...ｓｋの中に受理状態が含まれる場合、受理状態の前記状態に対応付けられた前記カウンタの最大値Ｍを特定し、前記バッファの先頭からＭ個のメモリブロックのフラグを第１状態に変更する、
請求項４記載の情報処理装置。
【請求項６】
前記シーケンスデータは、前記一単位のデータごとにタイムスタンプが付された、タイムスタンプ付き文字列であり、前記文字列を構成する文字は、所定の文字セット内の要素であり、
前記有限状態機械は前記一単位のデータの入力を受け付けるたびに、前記バッファの末尾のメモリブロックに記憶されているフラグを出力し、
前記情報処理回路は、
前記有限状態機械が出力したフラグが第１状態である場合、前記有限状態機械が出力したフラグに対応する一単位分のデータを外部に出力し、
前記有限状態機械が出力したフラグが第２状態である場合、前記有限状態機械が出力したフラグに対応する一単位分のデータを、前記文字セットに含まれない文字に変換して外部に出力することで、前記シーケンスデータから前記マッチング条件に一致しないデータを実質的に除去する、
請求項５記載の情報処理装置。
【請求項７】
複数の記号からなるシーケンスデータに含まれる所定のパターンを検索するためのマッチング条件の入力を受け付け、
前記受け付けたマッチング条件に基づいて、前記シーケンスデータから前記マッチング条件に一致しないデータを実質的に除去するための情報を生成するように構成された有限状態機械を生成する、
情報処理回路。
【請求項８】
前記マッチング条件は、オートマトンとして記述されている、請求項７記載の情報処理回路。
【請求項９】
前記有限状態機械は、Ｎ個のメモリブロックを有するＦＩＦＯバッファと、前記有限状態機械の状態遷移のルールを記述した情報を有し、前記Ｎ個のメモリブロックのそれぞれは、第１状態と第２状態のいずれかを表すフラグを格納する領域を有する請求項８記載の情報処理回路。
【請求項１０】
前記有限状態機械は前記シーケンスデータの一単位のデータの入力を受け付けるたびに、
前記バッファの末尾のメモリブロックの内容を出力し、
前記受け付けたデータと前記ルールとに基づいて、前記有限状態機械の状態を遷移させ、
前記バッファの先頭のメモリブロックに、前記受け付けたデータに対応するフラグの初期値として、第２状態を格納し、
遷移後の前記有限状態機械の状態に応じて、前記バッファ内の各メモリブロックに格納されているフラグの更新を行う、
請求項９に記載の情報処理回路。
【請求項１１】
前記有限状態機械がとり得る状態の各々は、前記オートマトンがとり得る状態ｓと、初期状態から前記状態ｓに達するまでに要する遷移回数に相当するカウンタｎの組（ｓ，ｎ）の集合｛（ｓ１，ｎ１），（ｓ２，ｎ２），...（ｓｋ，ｎｋ）｝からなり（ｋは１以上の整数）、
前記情報処理回路は、
（１）前記有限状態機械の状態を遷移させた後の状態に含まれる、前記組の集合の中に、前記カウンタの値がＮである組が存在する場合、前記バッファ中のＮ個のメモリブロックのフラグをすべて第１状態に変更し、
（２）前記有限状態機械の状態が含む前記状態ｓ１，ｓ２，，...ｓｋの中に受理状態が含まれる場合、受理状態の前記状態に対応付けられた前記カウンタの最大値Ｍを特定し、前記バッファの先頭からＭ個のメモリブロックのフラグを第１状態に変更する、
ことを特徴とする請求項１０記載の情報処理回路。
【請求項１２】
前記Ｎ個のメモリブロックのそれぞれはさらに、前記シーケンスデータの一単位分のデータを格納するためのデータ領域を有し、
前記情報処理回路は、前記有限状態機械に前記シーケンスデータを一単位ずつ入力するよう構成されており、
前記有限状態機械は前記一単位のデータの入力を受け付けた時に、
前記バッファの先頭のメモリブロックに、前記受け付けたデータに対応するフラグの初期値を格納することに加え、前記先頭のメモリブロックのデータ領域に、前記受け付けたデータを格納する、
請求項１１記載の情報処理回路。
【請求項１３】
前記シーケンスデータは文字列であり、前記文字列を構成する文字は、所定の文字セット内の要素であり、
前記有限状態機械は前記一単位のデータの入力を受け付けた時に、
前記バッファの先頭のメモリブロックのフラグが第１状態である場合、前記バッファの先頭のメモリブロックの内容を出力し、
前記バッファの先頭のメモリブロックのフラグが第２状態である場合、前記バッファの先頭のメモリブロックの内容を前記文字セットに含まれない文字に変更して出力することで、前記シーケンスデータから前記マッチング条件に一致しないデータを実質的に除去する、
請求項１２記載の情報処理回路。
【請求項１４】
前記シーケンスデータは、前記一単位のデータごとにタイムスタンプが付された、タイムスタンプ付き文字列であり、前記文字列を構成する文字は、所定の文字セット内の要素であり、
前記オートマトンは実時間制約付きオートマトンであり、
前記有限状態機械は前記一単位のデータの入力を受け付けるたびに、前記バッファの末尾のメモリブロックに記憶されているフラグを出力し、
前記情報処理回路は、
前記有限状態機械が出力したフラグが第１状態である場合、前記有限状態機械が出力したフラグに対応する一単位分のデータを外部に出力し、
前記有限状態機械が出力したフラグが第２状態である場合、前記有限状態機械が出力したフラグに対応する一単位分のデータを、前記文字セットに含まれない文字に変換して外部に出力することで、前記シーケンスデータから前記マッチング条件に一致しないデータを実質的に除去する、
請求項１１記載の情報処理回路。
【請求項１５】
請求項１ないし６のうちのいずれか１つに記載の情報処理装置である第１の情報処理装置と、
前記第１の情報処理装置に所定の通信回線又はネットワークを介して接続された第２の情報処理装置とを備えた情報処理システムであって、
前記第２の情報処理装置が有する情報処理回路は、第１の情報処理装置が出力した、前記加工されたシーケンスデータから前記マッチング条件に一致するデータを抽出して、前記抽出されたデータを出力することを特徴とする情報処理システム。
【請求項１６】
入力されるイベントのシーケンスデータに対して所定の加工を行う、情報処理装置による情報処理方法であって、
前記情報処理装置の有する情報処理回路が、
シーケンスデータに関する所定のマッチング条件を記述したオートマトンを受領する工程と、
前記オートマトンに基づいて有限状態機械を生成する工程と、
前記シーケンスデータの入力を受け付ける工程と、
前記有限状態機械を用いて、前記シーケンスデータから前記マッチング条件に一致しないデータを実質的に除去するように、前記シーケンスデータを加工する工程と、
前記加工されたシーケンスデータを出力する工程と、
を実行することを特徴とする、情報処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、パターンマッチングのためのフィルタリングを行う情報処理装置、上記情報処理装置を備えた情報処理システム、及び情報処理方法に関する。
【背景技術】
【０００２】
例えば、特許文献１において、時系列データのフィルタリングを行う時系列相関抽出装置であって、トランザクションの数が増えても、処理に多大の時間が掛かるのを防止することができる時系列相関抽出装置が開示されている。この従来例に係る時系列相関抽出装置は、複数の属性からなるレコードの集合からレコードの組み合わせを検索する場合、レコード内の所定属性が特定の値をとることをそれぞれ定義する複数のイベントと、その属性値の順序に基づいて定義された該複数のイベントの間の順序関係とを用いて検索パターンを指定する指定手段と、レコードの集合から指定された検索パターンに対応するレコードの組み合わせを検索する検索手段と、検索結果を出力する出力手段とを有する時系列フィルタ部を備えると共に、時系列相関エンジン部により時系列相関ルールを抽出する機能を有する。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００４−１１０３２７号公報
【特許文献２】国際公開第２００４／０３８６２０号パンフレット
【特許文献３】国際公開第２０１２／０５７１７０号パンフレット
【非特許文献】
【０００４】
【非特許文献１】Eugene Asarin, Oded Maler, Dejan Nickovic, and Dogan Ulus, 2017, Combining the Temporal and Epistemic Dimensions for MTL Monitoring. A. Abate and G. Geeraerts (Eds.), 2017, Proc. FORMATS. LNCS, Vol. 10419. Springer.
【非特許文献２】M. Krichen and S. Tripakis, 2009, Conformance testing for real-time systems, FMSD 34, 3 (2009), 238-304.
【非特許文献３】Leena Salmela, Jorma Tarhio, and Jari Kytojoki, 2006, Multi-pattern string matching with q-grams, ACM Journal of Experimental Algorithmics 11 (2006).
【非特許文献４】D. Ulus, T. Ferrere, E. Asarin, and O. Maler, 2014, Timed Pattern Matching, In Proc. FORMATS, (LNCS), A. Legay and M. Bozga (Eds.), Vol. 8711, Springer, 222-236.
【非特許文献５】Masaki Waga, Ichiro Hasuo, and Kohei Suenaga, 2017, Efficient Online Timed Pattern Matching by Automata-Based Skipping, 224-243.
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、従来例に係る時系列相関抽出装置では、例えばマッチング条件を記述したオートマトンに基づいてムーアマシン等の有限状態機械を生成し、生成された有限状態機械を用いてフィルタリングすることは開示も示唆もなく、効率的に処理を行うことができないという問題点があった。
【０００６】
本発明の目的は以上の問題点を解決し、パターンマッチングのためのフィルタリングを行う情報処理装置、情報処理システム及び情報処理方法において、従来例に比較して、フィルタリングを用いて効率的にパターンマッチングを行うことができる情報処理装置、情報処理システム及び情報処理方法を提供することにある。
【課題を解決するための手段】
【０００７】
本発明の一実施形態に係る情報処理装置は、入力されるイベントのシーケンスデータに関する所定のマッチング条件に基づいて有限状態機械を生成し、生成された有限状態機械を用いて、前記シーケンスデータから前記マッチング条件に一致しないデータを実質的に除去するように加工されたシーケンスデータを出力する情報処理回路を備えたことを特徴とする。
【発明の効果】
【０００８】
従って、本発明に係る情報処理装置、情報処理システム及び情報処理方法によれば、従来例に比較して、フィルタリングを用いて効率的にパターンマッチングを行うことができる。特に、従来の（フィルタリングによる前処理を行わない）実時間制約付きパターンマッチング（例えば、非特許文献４）と比較してフィルタリングを用いることにより、効率的に処理することができ、性能を大幅に向上できる。また、フィルタリングを用いるパターンマッチングに関する従来例（例えば、非特許文献４）と比較して、実時間制約がない場合はパターンとしてより広汎なオートマトンを許すができ、実時間制約がある場合は実時間制約を扱えることができる。
【図面の簡単な説明】
【０００９】
【図１】実施形態に係る物理情報システム（ＣＰＳ）の構成例を示すブロック図である。
【図２】パターンマッチング処理とフィルタリング処理との関係を表した概念図である。
【図３Ａ】実施形態で用いるパターンマッチングにおける前後の移動処理を示すタイミングチャートである。
【図３Ｂ】従来文献でのパターンマッチングにおける位置プロットの一例を示す平面図である。
【図３Ｃ】図３Ｂの位置プロットでの区間の特定を示す平面図である。
【図４】実施形態におけるフィルタリングのパディング処理を示す概念図である。
【図５】実施形態におけるムーアマシンによるフィルタリング処理を示す概念図である。
【図６Ａ】実施形態に係る非決定的有限オートマトン（ＮＦＡ）であるパターンの一例を示す図である。
【図６Ｂ】実施形態に係るムーアマシンフィルタの非バッファ部分の一例を示す図である。
【図７Ａ】所定の文字列に対するムーアマシンフィルタのランを示す図である。
【図７Ｂ】実施形態に係る前置情報処理回路の処理回路の一例を示すブロックである。
【図８】実施例１に係る自動車のトルクセンサのデータのためのムーアマシンフィルタの一例を示す図である。
【図９】実施例１に係る自動車のギアセンサのデータのためのムーアマシンフィルタの一例を示す図である。
【図１０】実施例１に係る自動車のアクセルセンサのデータのためのムーアマシンフィルタの一例を示す図である。
【図１１Ａ】実施例１に係る自動車のトルクセンサのデータに対するムーアマシンフィルタのシミュレーション結果であって、入力された実時間付き文字列長に対するフィルタされた実時間付き文字列長を示すグラフである。
【図１１Ｂ】実施例１に係る自動車のギアセンサのデータに対するムーアマシンフィルタのシミュレーション結果であって、入力された実時間付き文字列長に対するフィルタされた実時間付き文字列長を示すグラフである。
【図１１Ｃ】実施例１に係る自動車のアクセルセンサのデータに対するムーアマシンフィルタのシミュレーション結果であって、入力された実時間付き文字列長に対するフィルタされた実時間付き文字列長を示すグラフである。
【図１２Ａ】実施例１に係る自動車のトルクセンサのデータに対するムーアマシンフィルタのシミュレーション結果であって、入力された実時間付き文字列長に対する実行時間を示すグラフである。
【図１２Ｂ】実施例１に係る自動車のギアセンサのデータに対するムーアマシンフィルタのシミュレーション結果であって、入力された実時間付き文字列長に対する実行時間を示すグラフである。
【図１２Ｃ】実施例１に係る自動車のアクセルセンサのデータに対するムーアマシンフィルタのシミュレーション結果であって、入力された実時間付き文字列長に対する実行時間を示すグラフである。
【図１３Ａ】実施例１に係る自動車のトルクセンサのデータに対するムーアマシンフィルタのシミュレーション結果であって、入力された実時間付き文字列長に対するメモリ使用量を示すグラフである。
【図１３Ｂ】実施例１に係る自動車のギアセンサのデータに対するムーアマシンフィルタのシミュレーション結果であって、入力された実時間付き文字列長に対するメモリ使用量を示すグラフである。
【図１３Ｃ】実施例１に係る自動車のアクセルセンサのデータに対するムーアマシンフィルタのシミュレーション結果であって、入力された実時間付き文字列長に対するメモリ使用量を示すグラフである。
【図１４Ａ】自動車のトルクセンサのデータに対する、比較例に係るツールのシミュレーション結果であって、入力された実時間付き文字列長に対する実行時間を示すグラフである。
【図１４Ｂ】自動車のギアセンサのデータに対する、比較例に係るツールのシミュレーション結果であって、入力された実時間付き文字列長に対する実行時間を示すグラフである。
【図１４Ｃ】自動車のアクセルセンサのデータに対する、比較例に係るツールのシミュレーション結果であって、入力された実時間付き文字列長に対する実行時間を示すグラフである。
【図１５】実施例２に係る前置情報処理回路の構成例を示すブロック図である。
【図１６】バッファ部の構成例を示す図である。
【図１７】オートマトンの状態遷移図の例を示す図である。
【図１８】カウンタ付き状態を用いて記述されるオートマトンの状態遷移図の例を示す図である。
【図１９】実施例２に係るムーアマシンの状態遷移図の例を示す図である。
【図２０】実施例２に係るムーアマシンの状態遷移表の例を示す図である。
【図２１】実施例２に係るムーアマシンの状態管理テーブルの例を示す図である。
【図２２】実施例２に係る前置情報処理回路の有する各機能ブロックを表した図である。
【図２３】実施例２に係る前置情報処理回路の処理の流れを示すフローチャートである。
【図２４】ムーアマシンの状態遷移時の処理の流れを示すフローチャートである。
【図２５】実時間制約付きムーアマシンを用いた時の前置情報処理回路の処理の流れを示すフローチャートである。
【図２６】実時間制約付きムーアマシンの状態遷移時の処理の流れを示すフローチャートである。
【図２７】リアルタイムオートマトンの決定化処理を示すフローチャートである。
【図２８】実時間制約付きオートマトンをリアルタイムオートマトンに近似させる近似処理を示すフローチャートである。
【図２９】実施例３に係る異常時の自動停止機構を有する自動車制御システムの構成例を示すブロック図である。
【図３０】実施例４に係るセミコネクテッドカーの走行経路最適化機構を有する自動車制御システムの構成例を示すブロック図である。
【図３１】実施例５に係るサーバ装置への攻撃のモニタリングとアクセス遮断機構を有する通信システムの構成例を示すブロック図である。
【発明を実施するための形態】
【００１０】
以下、本発明に係る実施形態及び実施例について図面を参照して説明する。なお、以下の各実施形態において、同様の構成要素については同一の符号を付している。
【００１１】
実施形態．
モニタリングは実時間性のある、組み込みの物理情報システムの実行時検証技法の根幹を成している。数学的には、モニタリング問題はパターンオートマトンに対するパターンマッチング問題として定式化される。本発明者らは組み込みアプリケーション（特にセンサとそれを監視するプロセッサとの通信路の容量が限られているもの）を動機として、モニタリングの前処理としてのフィルタリングについて研究しており、具体的には、所与のパターンオートマトンに対して、フィルタとして機能するムーアマシンを構成する手法を提案する。
【００１２】
その構成はオートマトン理論的であり、また、本発明者らはムーアマシンを利用することが特に組み込みアプリケーションに適していることを発見した。これは、ムーアマシンによる順次的な計算が比較的低コストであるというだけでなく、ムーアマシンが専用回路によるハードウェアアクセラレーションと相性が良いことが理由である。本発明者らはまた、健全性（マッチングを見逃さないこと）も証明する。本発明者らは、次の状況設定でこの研究を行う。１つは、実時間制約なしの設定で、パターンは非決定的有限オートマトン（ＮＦＡ）で記述される。もう１つは実時間制約付きの設定で、パターンは実時間制約付きオートマトンで記述される。時間なしの構成を時間ありの設定に拡張するのは技術的には複雑であるが、以下の実施形態及び実施例によってその実用上の恩恵が明らかになる。なお、実施形態においては、説明の便宜上、章番号及び節番号を付す。
【００１３】
１．序論
１．１  モニタリングと、実時間制約付きパターンマッチング
【００１４】
物理情報システム（Ｃｙｂｅｒ  Ｐｈｙｓｉｃａｌ  Ｓｙｓｙｔｅｍ；ＣＰＳ）は日増しに複雑になっている。これは、例えば自動車の燃費などの効率化だけでなく自動運転などの新機能を実現する、急発達してきたデジタル制御のためでもある。従って、このようなシステムを正しく理解することは依然重要かつ取り組み甲斐のある課題である。
【００１５】
このような物理情報システム（ＣＰＳ）の複雑さや、他のサプライヤによって提供されるブラックボックスな部品といった他の理由のために、従来の意味での形式検証を実世界の物理情報システム（ＣＰＳ）に適用することは困難である。このために、研究者や実務者はいわゆる軽量形式検証に注目することになった。実行時形式検証はその取り組みの１つであり、所与のシステムの実行結果列が、所与の仕様に対して検査される。この目的のためにモニタリング用の様々なアルゴリズムが提案されてきた。
【００１６】
数学的に言うと、モニタリング問題の一般的な定式化の１つとしてパターンマッチング問題がある（もう１つの一般的な定式化は、本発明者らが言うところのパターン検索問題である。パターン検索はパターンマッチングよりも簡単だが、より少ない情報しかもたらさない。）。実行結果列が文字列ｗ＝ａ１ａ２…ａｎによって与えられているとき、期待される出力は、添字（ｉ，ｊ）の組で所与のパターンｐａｔを満足させる文字列ｗの制限を表す複数のものの集合
【００１７】
【数１】
2020057362.tif 000003
である。パターンｐａｔは文字列、文字列の集合、正規表現、あるいはオートマトンなどによって与えられる。また上の式（１）は、ｉ番目からｊ番目までの文字列がパターンｐａｔと一致することを意味する。
【００１８】
（例１．１）：文字列ｗ１＝ａｂｂｂｂｂａａｂと、Ａ１＝ａ（ａ＊）ｂで与えられる正規表現を考える。ここには３つのマッチングがあって、Ｍａｔｃｈ（ｗ１，Ａ１）＝｛（１，２），（７，９），（８，９）｝となる。
【００１９】
物理情報システム（ＣＰＳ）において、重要な課題はパターンマッチングの実時間制約時間付き版の取り扱いである。一般的な定式化の１つでは、実行結果列はタイムスタンプ付き文字列により与えられる。これは時刻記録のついた文字の列（文字列）であり、例えば文字列ｗ２＝（ａ，０．１）（ｂ，２．５）（ａ，３．５）（ｂ，４．８）のようなものである。パターンｐａｔは実時間制約付きオートマトン（Ｔｉｍｅｄ  Ａｕｔｏｍａｔｏｎ；ＴＡ）で与えられ、この下で、文字列ｗの制限を表す時間区間（ｔ，ｔ'）において、その制限が実時間制約付きオートマトン（ＴＡ）Ａによって受理されるようなものの集合
【００２０】
【数２】
2020057362.tif 000004
が計算される。時間なしの設定とは異なり、実時間制約付きオートマトン（ＴＡ）Ａではさまざまな実時間についての制約を表現することができ、物理情報システム（ＣＰＳ）の実行結果列のよりきめ細かい分析ができるようになる。
【００２１】
（例１．２）：タイムスタンプ付き文字列ｗ２＝（ａ，０．１）（ｂ，２．５）（ａ，３．５）（ｂ，４．８）とパターン「ｂはａが現われた後２秒以内に現われる」（このパターンに対応する実時間制約付きオートマトン（ＴＡ）は本質的に図９にあるものと同じである）を考える。どんなマッチングも、２番目のａとｂの連なりを含んでいる。なお、はじめの連なりは遠く離れすぎていることに注意する。そのようなマッチングは例えば文字列ｗ２｜（３，５）で与えられるが、このようなマッチングは非可算無限個存在する。このマッチングの集合は、記号的には｛（ｔ，ｔ'）｜２．５≦ｔ＜３．５，４．８＜ｔ'｝と表わされる。
【００２２】
物理情報システム（ＣＰＳ）の設計や展開の様々な場面への明らかな応用があるにも関わらず、実時間制約付きパターンマッチングの研究が始まったのはごく最近である（例えば、非特許文献１，４，６参照）。そのため、実時間制約付きパターンマッチングの産業界での実応用は極めて限定的である。
【００２３】
１．２  組み込みアプリケーションの遠隔モニタリング
この実施形態では、実時間制約付きのパターンマッチング、もしくは実時間制約なしのパターンマッチングのためのフィルタリングを提案する。これは、入力文字列に適用される前処理である。
【００２４】
この研究の動機は、組み込みアプリケーションに由来する。組み込みシステム（これは物理情報システム（ＣＰＳ）の重要な一面である）では、センサと（モニタリングの計算を行なう）プロセッサが物理的に別々の場所に置かれることが普通である。さらに、それらの通信路は限られた容量しかないことがしばしばである（図１参照）。
【００２５】
図１は実施形態に係る物理情報システム（ＣＰＳ）の構成例を示すブロック図である。
【００２６】
図１において、物理情報システム（ＣＰＳ）は、センサ装置１と、モニタ装置２とを備えて構成され、これらが例えばＣＡＮバス、無線ネットワークなどの制限された通信容量を有する通信回線１０を介して接続される。ここで、センサ装置１は、センサ３と、より低速のプロセッサを有する前置情報処理回路４とを備えて構成され、モニタ装置２は、より高速のプロセッサを有する後置情報処理回路５と、表示部６とを備えて構成される。
【００２７】
そのような状況の例を例えば現代的な自動車に見ることができる。そこでは、エンジンの中にあるセンサ装置１はデータを集めて、例えばエンジンの熱と振動を避けるために、遠隔に載置されたプロセッサを有するモニタ装置２に送信している。センサ装置１とモニタ装置２とは例えばコントローラーエリアネットワーク（ＣＡＮ）等の通信回線１０を介して相互に接続されている。この通信回線１０は、コスト削減のための厳しい性能制限のもとにある。別の例をネットワーク等の通信回線１０に接続された家庭電化製品や自動車のようなＩｏＴ（Ｉｎｔｅｒｎｅｔ  ｏｆ  Ｔｈｉｎｇｓ）デバイスに見ることができる。ＩｏＴデバイスは自身の状態を絶え間なくサーバ装置に送信し、クラウドに設置されたそのサーバ装置はそのデバイスを監視する。なお、その無線通信回線は、例えばデバイスの電池の容量などにより限られている。
【００２８】
本実施形態では、前置情報処理回路４は、入力される実時間のタイムスタンプ付きイベントのシーケンスデータに関する所定のマッチング条件を記述したオートマトン（実時間制約付き又は実時間制約なしのオートマトンである）に基づいてムーアマシンを生成し、生成されたムーアマシンを用いて、前記シーケンスデータから前記マッチング条件に一致しないデータを実質的に除去するようにフィルタリングしてフィルタリング結果のシーケンスデータを出力し、出力されるシリアルデジタルデータは通信回線１０を介してモニタ装置２の後置情報処理回路５に送信される。これに応答して、後置情報処理回路５は、前記フィルタリング結果のシーケンスデータから前記マッチング条件に一致するシーケンスデータを抽出して表示部６に出力する。
【００２９】
１．３  実時間制約付きパターンマッチングのためのフィルタリング
このような遠隔モニタリングの状況で、モニタリングの結果に影響しないようにセンサからプロセッサに送られるデータの量を削減しようというのは自然な考えである。多くのセンサはプロセッサを内蔵しているので、それらを前処理に利用することができる。ここで、（センサ内蔵の、図１）プリプロセッサは実際のモニタリングを行うプロセッサよりもずっと遅いということを仮定する。つまり、前処理は計算量的な意味で安上りでなければいけない。
【００３０】
図２は、図１に示された物理情報システム（ＣＰＳ）において行われるパターンマッチング処理と、フィルタリング処理との関係を概念的に表したものである。図２において、フィルタ部（ＭＮ，Ａ）７は、センサ装置１が有する機能ブロックで、たとえば前置情報処理回路４によって実現される機能ブロックである。パターンマッチング部８はモニタ装置２に設けられる機能ブロックで、たとえば後置情報処理回路５によって実現される機能ブロックである。つまり、図２に示すように、本発明者らの提案するワークフローにおいては、フィルタ部（ＭＮ，Ａ）７を用いて、入力文字列に対して計算量的に安上りなフィルタリングを適用することによって、前置情報処理回路４から後置情報処理回路５のプロセッサへデータを送信するための通信回線１０の負荷を軽減し、さらに当該プロセッサへの負荷も軽減する。
【００３１】
１．４  フィルタとしてのムーアマシン
【００３２】
この実施形態では、モニタリングの次の２つの設定に取り組む：
（１）実時間制約なしの設定：実行結果列は文字列ｗ∈Σ＊であり、パターンはΣ上の非決定的有限オートマトン（ＮＦＡ）Ａで与えられる。
（２）実時間制約ありの設定：実行結果列は実時間制約つき文字列であり、パターンは実時間制約付きオートマトン（Ｔｉｍｅｄ  Ａｕｔｏｍａｔｏｎ；ＴＡ）で与えられる。本発明者らの技術的な貢献は、パターンオートマトンＡとバッファサイズＮ（自然数）にもとづいて、ムーアマシンとして実現されるフィルタＭＡ，Ｎの構成を与えることにある。ムーアマシンは状態つき計算のよく知られたモデルであり、状態に依存した出力関数を追加に持つオートマトンである。これはシーケンシャルかつ同期的に良く動作し、入力１文字を読み、次の状態に移動し、１文字を出力するという風に動作する。この特性は特にデジタル回路の論理合成に適しており、ＦＰＧＡ（Ｆｉｅｌｄ  Ｐｒｏｇｒａｍｍａｂｌｅ  Ｇａｔｅ  Ａｒｒａｙ）やＡＳＩＣ（Ａｐｐｌｉｃａｔｉｏｎ  Ｓｐｅｃｉｆｉｃ  Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔｓ）によるハードウェアアクセラレーションを利用することができる。
【００３３】
このようなムーアマシンのシーケンシャルな動作は、パターンマッチングの動作と極めて対照的である。本発明者らの設定ではパターンはオートマトンＡで与えられるので、マッチングの長さ（例えば、ｗ｜［ｉ，ｊ］∈Ｌ（Ａ）となるような｜ｗ｜［ｉ，ｊ］｜＝ｊ−ｉ＋１）は固定されていない。従って、入力文字列ｗについて、マッチングの窓を異なる大きさと異なる位置で前後に動かしながら試してみる必要がある（図３Ａ参照）。図３Ａは実施形態で用いるパターンマッチングにおける前後の移動処理を示すタイミングチャートである。
【００３４】
このことは、比較的低速のプリプロセッサを有する前置情報処理回路４による（シーケンシャルな）フィルタリング作業と、比較的高速のメインプロセッサを有する後置情報処理回路５による、図３Ａに示すように、前後に動かしながらのパターンマッチング作業との間には質的な差があることを示している。本発明者らの構成は、実時間制約付きの設定であっても実時間制約なしのムーアマシンをフィルタＭＡ，Ｎとして生成する。
【００３５】
ムーアマシンフィルタＭＡ，Ｎの出力は、いくらかの文字が未使用の文字⊥でマスクされることを除けば入力（実時間制約付き）文字列と同じである（なお、本明細書において、文字⊥は、ムーアマシンフィルタＭＡ，Ｎに入力される文字列（入力文字列）を構成する文字のセットの中に含まれ得ない文字を意味する）。例えば、パターンＡ＝ａａ＊ｂの下ではｗ＝ａｂｂｂｂｂａａｂはａｂ⊥⊥⊥⊥ａａｂに加工される。連続した⊥の長さをバイナリ表示することにより、データのサイズは指数的に減少する。さらに、もしマッチングした部分文字列ｗ｜［ｉ，ｊ］にだけ興味があるなら（つまり添字ｉ，ｊに興味がないなら）、さらに連続した⊥を１つの⊥に潰すことができる。フィルタリングの段階ですべての⊥を除いてしまうことは、パターンマッチングの段階で偽物のマッチングを起こすかもしれないことに注意する（図２参照）。
【００３６】
本発明者らのムーアマシンフィルタＭＡ，Ｎは、パターンオートマトンＡとバッファサイズを表わす正整数Ｎから構成される。パラメータＮによって、利用者はフィルタリングのコスト（Ｎを大きくすると、ムーアマシンフィルタＭＡ，Ｎの状態数は増える）とフィルタをかけた文字列のサイズ（Ｎを大きくすると⊥が増え、つまりフィルタをかけた文字列は小さくなる）とのバランスを選ぶことができる。この柔軟性は、このアルゴリズムを様々なハードウェアの設定に適したものにしている。
【００３７】
本発明者らはこの構成を実装し、実時間制約付きの設定（こちらのほうが難しい）についての実験結果を示す。例は自動車の分野から選んだものである。その結果、実際の問題に即したパターン（実時間制約付きオートマトン（ＴＡ））Ａと入力のタイムスタンプ付き文字列ｗについて、フィルタされた文字列は元の文字列ｗに比べて２〜１００倍短くなりうることを見る。さらに、ムーアマシンフィルタＭＡ，Ｎを実行するのは計算量的に軽いことを実験的に確認する。さらに、図２のフィルタ部７を使うことで、実時間制約付きパターンマッチング自身も１．２〜２倍加速することを見る。
【００３８】
この構成の理論的な解析について、本発明者らは健全性、すなわち元の入力文字列の全てのマッチングがフィルタによって保たれることを証明する。この健全性は、実時間制約付き、なしの両方について証明される。しかしながら、健全性は自明な恒等のフィルタによって満足されることに注意されたい。よって、健全性そのものからはフィルタリングの恩恵はあまり分からない。実験に加えて、本発明者らは実時間制約なしの設定でのフィルタリングの性能についてのいくらかの理論的な結果について述べる。これは次のようなものである。
【００３９】
言語Ｌ（Ａ）が有限のとき（複数文字列マッチングの設定）の完全性（全ての不要な文字列がマスクされるという意味）と、単調性（Ｎを大きくするとフィルタリングの結果が良くなる）とは、実時間制約付きの設定は実時間制約なしの設定と基本的な考えは共通しているので、これらの結果もまた実時間制約付きの構成の性能上の優位性を示している。
【００４０】
本発明者らのフィルタの構成はオートマトン理論的であり、次の２つの基本的なステップからなる。（１）（サイズＮの）バッファを用意し、（２）決定化する。実時間制約付きの設定での２番目のステップのために、所与の実時間制約付きオートマトン（Ｔｉｍｅｄ  Ａｕｔｏｍａｔｏｎ：ＴＡ）を１クロック決定的ＴＡで過大評価する、ＴＡの１クロック決定化（例えば、非特許文献２の５．３節参照）を利用する。
【００４１】
１．５  貢献
本発明者らの貢献（実施形態の特徴であるＳＴＦ（Ｓｐｅｃｉａｌ  Ｔｅｃｈｎｉｃａｌ  Ｆｅａｔｕｒｅｓ））は次のようにまとめられる。
（１）オートマトンＡに対する実時間制約なしパターンマッチングのためのフィルタＭＡ，Ｎの構成。フィルタはムーアマシンで与えられ、従って単純かつシーケンシャルで同期的に動作する。さらに、論理回路によるハードウェアアクセラレーションと相性が良い。パラメータＮによって、利用者は計算コストとフィルタリングの効果のトレードオフを調整することができる。
（２）実時間制約付きパターンマッチングのためのムーアマシンフィルタＭＡ，Ｎの構成。パターンとしての実時間制約付きオートマトンＡとバッファサイズが与えられたとき、（実時間制約なし）ムーアマシンフィルタＭＡ，Ｎを構成する。この構成は実時間制約なしのものの拡張なのでより一般的であり、パターン実時間制約付きオートマトンのゾーンにもとづく構成を利用している。実用性も考慮すると、本発明者らはこの実時間制約付きの構成がこの実施形態の主な貢献であると考える。
（３）健全性（全てのマッチングの保存）が実時間制約付き、実時間制約なしの設定で証明される。
（４）実時間制約付きの設定で、さらに本発明者らのフィルタの性能についての理論的な結果を証明する。
（５）実時間制約付きの構成の実装、及び本発明者らのフィルタの構成の利益を示す実験。
【００４２】
１．６  パターンマッチング対パターン検索
モニタリングのもう１つの数学的な定式化（つまりパターンマッチングのもう１つの選択肢）は、本発明者らの言うところのパターン検索問題である。これは、マッチング集合（１．２節参照）が空かそうでないかを問うものである。パターン検索は簡単に所属判定問題に帰着されるため魅力的である。大雑把に言うと、パターンオートマトンＡが与えられたとき、まず初期状態に自己ループを付け足して入力文字列の接頭辞を無視できるようにし、あとは受理状態がアクティブになるかどうかを監視すればよい。パターン検索はモニタリングの文脈ですでに十分に研究されている。
【００４３】
パターンマッチングは添字を覚えておく必要があり（図３Ａ）、パターン検索よりも計算量的に高くつく。しかしながら、実世界のモニタリングアプリケーションと強い関係がある（特に下記の例１．３にあるような遠隔モニタリングにおいて）。遠隔モニタリングはしばしば単に準オンラインであることに注意されたい。というのは、ログはかなりの大きさの塊で途切れ途切れにモニタに届くかもしれない。従って、受け取ったログのどの部分が警告を出しているのかを取り出すことができるというのが必須である。
【００４４】
パターンマッチングのモニタリングアプリケーションへの適用可能性はコミュニティでよく認知されており、近年文献は急増している（例えば、非特許文献４，５参照）。
【００４５】
（例１．３）（準オンライン遠隔モニタリング）：遠隔モニタリング（図１）の具体例として、準ネットワーク接続自動車を考えよう。これは運転ログをメモリに保持し、既知の無線ネットワークの範囲に停車したらそのログをインターネット経由でセンターに送信する。ログの解析はセンターで行なわれる。運転ログは自動車の位置、速度とアクセルについての情報を含むタイムスタンプ付き文字列である。そのようなタイムスタンプ付き文字列ｗの１つ（ＲＯＳＢＡＧＳＴＯＲＥ，ｒｏｓｂａｇ．ｔｉｅｒ４．ｊｐから取られたもの）は、自動車の位置をプロットすると図３Ｂのように見える。
【００４６】
図３Ｂは従来文献でのパターンマッチングにおける位置プロットの一例を示す平面図であり、図３Ｃは図３Ｂの位置プロットでの区間の特定を示す平面図である。
【００４７】
ここで、「プロットは不連続である。」というのは、例えばＧＰＳ信号の喪失などによりデータがなくなるかもしれない。このような道の区間のうち、アクセルが１０秒以上ある閾値を超えるものに興味があるとする。適切なパターンオートマトンＡで文字列ｗに実時間制約付きパターンマッチングを実行する。特定した時間区間を位置のプロットにマッピングすると、知りたかった道の区間を特定することができる（図３Ｃ参照、ハッチング部分はツールＭＯＮＡＡによって生成）。
【００４８】
（実施形態の構成）２章で用語を定義する。３章で実時間制約なしパターンマッチングのためのムーアマシンフィルタを構成する。さらに、健全性といった性質も証明する。４章でも同じ考えが、より複雑な問題である実時間制約つきパターンマッチングのためのフィルタリングに使われる。ここで健全性を証明する。５章では実時間制約つきの場合の実装と実験結果が示される。関連研究については６章で議論する。
【００４９】
２．準備
【００５０】
集合
【００５１】
【数３】
2020057362.tif 000005
はΣ上の文字列の集合である。文字列ｗ＝ａ１ａ２…ａｎ（ここで、ａｉ∈Σ）の長さｎは｜ｗ｜と書かれる。
【００５２】
非決定的有限オートマトン（ＮＦＡ）Ａ＝（Σ，Ｓ，ｓ０，ＳＦ，Ｅ）と、共通したアルファベットΣ上の文字列ｗ∈Σ＊について、文字列ｗ上のオートマトンＡのラン（ＲＵＮ）
【００５３】
【数４】
2020057362.tif 000006
は列
【００５４】
【数５】
2020057362.tif 000007
であって、任意のｉ∈［１，｜ｗ｜］について（ｓｉ−１，ｗｉ，ｓｉ）∈Ｅが成り立つもののことである。ラン
【００５５】
【数６】
2020057362.tif 000008
はｓ｜ｗ｜∈ＳＦが成り立つとき受理する（受理状態となる）という。
【００５６】
Ｘの冪集合はＰ（Ｘ）と書かれる。ＸとＹの非交和はＸ凵Ｙである。アルファベットΣについて、未使用の記号⊥で拡張された集合Σ凵｛⊥｝はΣ⊥と書かれる。
【００５７】
集合｛１，２，…，Ｎ｝をカウンタの値域として用いる。その代数的構造（例えばモジュロＮでの足し算）を利用するので、これはＺ／ＮＺと書かれる。
【００５８】
ムーアマシンはＭ＝（Σｉｎ，Σｏｕｔ，Ｑ，ｑ０，Δ，Λ）である。ただし、ΣｉｎとΣｏｕｔは入力と出力のアルファベットであり、Ｑは状態の有限集合、ｑ０∈Ｑは初期状態、Δ：Ｑ×Σｉｎ→Ｑは遷移関数、Λ：Ｑ→Σｏｕｔは出力関数である。ムーアマシンＭと入力文字列ｗ＝ａ１ａ２…ａｎ∈Σ＊ｉｎ（ただしａｉ∈Σｉｎ）について、文字列ｗ上のムーアマシンＭのラン
【００５９】
【数７】
2020057362.tif 000009
は列
【００６０】
【数８】
2020057362.tif 000010
であって、任意のｉ∈［１，｜ｗ｜］についてｑｉ＝Δ（ｑｉ−１，ａｉ）を満足するものである。このとき、文字列ｗ上のムーアマシンＭの出力文字列ｗ'∈Σ＊ｏｕｔは、ｗ'＝Λ（ｑ０）Λ（ｑ１）…Λ（ｑｎ−１）∈Σ＊ｏｕｔである。
【００６１】
３．パターンマッチングのためのムーアマシンフィルタリング１：実時間制約なし
【００６２】
３．１  問題の定式化
（定義３．１）（実時間制約なしパターンマッチング）：アルファベットΣ上の非決定的有限オートマトン（ＮＦＡ）Ａと文字列ａ１ａ２…ａｎ∈Σ＊について、パターンマッチング問題はマッチング集合
【００６３】
【数９】
2020057362.tif 000011
を問うものである。ただし、ｗ｜［ｉ，ｊ］＝ａｉａｉ＋１…ａｊである。
【００６４】
本発明者らの目標は図２に示されたワークフローである。フィルタ部７の入出力の型を次のような一般的な定義で定めよう。
【００６５】
（定義３．２）（実時間制約なしパターンマッチングのためのムーアマシン）：オートマトンＡをアルファベットΣ上の非決定的有限オートマトン（ＮＦＡ）とし、Ｎを正整数とする。オートマトンＡのバッファサイズＮのフィルタとは、ムーアマシンフィルタＭ＝（Σｉｎ，Σｏｕｔ，Ｑ，ｑ０，Δ，Λ）であって、次を満足するものである。
【００６６】
（１）Σｉｎ＝Σｏｕｔ＝Σ⊥
（２）ｗ＝ａ１…ａｎ∈Σ＊を任意の文字列とし、終端に⊥を付け足した文字列ｗ⊥Ｎを考える。この文字列ｗ⊥ＮについてのムーアマシンＭの出力文字列は⊥Ｎｗ'の形でなければいけない。ただし、文字列ｗ'＝ｂ１…ｂｎであり、文字ｂｉは任意のｉについてマスク⊥か文字ａｉかのどちらかである。位置ｉにある文字ａｉはｂｉ＝ａｉが成立するとき通過したという。そうでなければ（つまりｂｉ＝⊥なら）、文字ａｉはマスクされたという。
【００６７】
ムーアマシンフィルタＭは全てのマッチング区間を保つときに健全であるという。これは、
【００６８】
【数１０】
2020057362.tif 000012
となる任意のｋ∈［１，ｎ］についてｂｋ＝ａｋが成立するという意味である。
【００６９】
図４は実施形態におけるフィルタリングのパディング処理を示す概念図である。
【００７０】
バッファサイズＮと、入出力文字列の⊥Ｎでの付け足しについて説明しよう。付け足しは、図４に図示される方法で、Ｎステップ遅れてフィルタリングがされていることを意味する。この遅れは本発明者らのムーアマシンの動作の仕方のためである。というのは、このムーアマシンは入力文字列を左から右に読み、状態空間Ｑにエンコードされる形式で、Ｎ文字をＦＩＦＯバッファに蓄え、ＦＩＦＯバッファから文字を取り出すときにそれを出力文字列として出力する。そういうわけで、Ｎステップ分の遅れが生じるのである。
【００７１】
図５は実施形態におけるムーアマシンによるフィルタリング処理を示す概念図である。
【００７２】
図５において、まず最初に、バッファは⊥で埋め尽されており（図５のステップＳ０）、これが出力文字列⊥Ｎｗ'に接頭辞⊥Ｎが現れる理由である。入力文字列ｗ⊥Ｎの末尾の付け足し⊥Ｎはバッファの内容を取り出すのに必要である（ステップＳ（ｎ＋１）からステップＳ（ｎ＋Ｎ））。図５の処理の途中で、文字列ｗ＝ａ１…ａＮの文字のいくらかがマスクされる（ｂｉ＝⊥）が、この図５の中ではそれは明示されていない。
【００７３】
３．２  ムーアマシンフィルタＭＡ，Ｎの構成
【００７４】
（定義３．３）（（実時間制約なし）パターンマッチングのためのムーアマシンフィルタＭＡ，Ｎ）：Σをアルファベットとし、Ｎを正整数とし、Ａ＝（Σ，Ｓ，ｓ０，ＳＦ，Ｅ）を非決定的有限オートマトン（ＮＦＡ）とする。ムーアマシンフィルタＭＡ，Ｎ＝（Σ⊥，Σ⊥，Ｑ，ｑ０，Δ，Λ）を次のように定義する。
【００７５】
ここで、状態空間Ｑは
【００７６】
【数１１】
2020057362.tif 000013
とする。ここで、Ｚ／ＮＺはモジュロＮでの足し算を備えたＮ元集合である。
【００７７】
初期状態は
【００７８】
【数１２】
2020057362.tif 000014
である。
【００７９】
遷移Δ：Ｑ×Σ⊥→Ｑは次のように定める。任意のａ∈Σ⊥について、
【００８０】
【数１３】
2020057362.tif 000015
【００８１】
ただし、
【００８２】
【数１４】
2020057362.tif 000016
であり、
【００８３】
【数１５】
2020057362.tif 000017
である。
【００８４】
ここで、
【００８５】
【数１６】
2020057362.tif 000018
である。
【００８６】
最後に、出力関数Λ：Ｑ→Σ⊥を次のように定める。
【００８７】
【数１７】
2020057362.tif 000019
【００８８】
直観について述べる。ムーアマシンフィルタＭＡ，Ｎの構成は次の３つのブロックを組合せたものである：それは、決定化の処理部（詳細後述する図１５のＣＰＵ２０）、カウンタ（図１５の２２ｂに含まれる）、サイズＮのバッファ（図１５の２２ａ）である。
【００８９】
（決定化）パターンＡは非決定的有限オートマトン（ＮＦＡ）であるが、本発明者らが欲
しいのは決定的ムーアマシンである。この決定化は状態空間Ｑの部品
【００９０】
【数１８】
2020057362.tif 000020
に冪集合による構成Ｐが現れる理由を説明している。例えば、この部品の元｛（ｓ１，ｎ１），…，（ｓｋ，ｎｋ）｝は「非決定的有限オートマトン（ＮＦＡ）Ａにおいて、状態ｓ１，…，ｓｋはアクティブである」ということを意味している。式（４）を見ると、これは普通の決定化をしていることがわかる。例外は式（４）で（ｓ０，０）を追加していることである。これは、入力文字列のどこからでもマッチングを始められるようにするためである。
【００９１】
（カウンタ）さらに、オートマトンＡを動き回るアクティブな状態は、初期状態から何ステップ移動したかを表わすカウンタを（図１５の２２ｂ内に）持っている。これは状態空間Ｑの部品Ｚ／ＮＺである。これらのカウンタの最大値はバッファサイズＮと同じである。最大値に達すると、カウンタは１から始まる。式（４）を見ると、アクティブな状態のカウンタがモジュロＮで１つ増加することが分かる。なお、例えばカウンタの最大値を２×Ｎとして，増加値を１でなく２に設定してもよく、増加値は１に限定されず、２又は３等の自然数の所定値であってもよい。
【００９２】
（バッファ）サイズＮのＦＩＦＯバッファ（図１５の２２ａ）は状態空間Ｑに２番目の部品
【００９３】
【数１９】
2020057362.tif 000021
が現れる理由を説明している。Ｎ個のセルそれぞれがΣ⊥の文字とラベル（ｐａｓｓ又はｍａｓｋ）を保持している。式（３）と式（５）を見ると、バッファの基本的な動作は一番左の要素を取り出し、読んだ文字を右に追加することだと分かる。
【００９４】
ある文字をマスクするかどうかを決めるのは、バッファのラベル（ｐａｓｓ又はｍａｓｋ）である。規定のラベルはｍａｓｋ（式（５）の３番目の場合）であり、Ｎステップの間そのまま変わらないなら出力の対応する文字は⊥でマスクされる（式（６）の２番目の場合）。ラベルはｍａｓｋからｐａｓｓに２つの異なる理由で変わりうる（式（５）のはじめの２つの場合）。
【００９５】
１．式（５）の２番目の場合は、バッファの終端までの複数の文字がパターンＡに対してマッチングを成し、パターンＡの受理状態ｓ∈ＳＦに導くときである。このとき、これらの複数の文字を「ｐａｓｓ」でマークし、パターンマッチングに渡さなくてはいけないことを明示する（図２）。渡される文字数ψ（Ｓ'）はアクティブな状態ｓ∈ＳＦに関連付けられたカウンタｎを用いて計算される。
２．式（５）のはじめの場合の条件
【００９６】
【数２０】
2020057362.tif 000022
は、あるアクティブな状態ｓのカウンタが最大値Ｎに達したという意味である。この場合、Ａのこのアクティブ状態ｓが最終的に受理状態に到達するのかどうかがはっきりしない。安全側に倒すために、Ｎ個の文字全てをマスクせずにパターンマッチングに引き渡す。実時間制約なしの設定では、フィルタリングの完全性が失われるかもしれない箇所はここだけである。
【００９７】
まとめると、定義３．３では図５に図示された方法で動作するムーアマシンを構成している。ムーアマシンの状態空間は次のものを組合せたものである：パターンＮＦＡ  Ａの決定化、初期状態からのステップ数を数えるカウンタ、そして、パス（ｐａｓｓ）かマスク（ｍａｒｋ）でラベル付けされたＮ文字を蓄えるＦＩＦＯ（Ｆｉｒｓｔ−Ｉｎ  Ｆｉｒｓｔ−Ｏｕｔ）バッファである。
【００９８】
（命題３．４）：ムーアマシンＭＡ，Ｎは定義３．２の意味で、ＡのバッファサイズＮのフィルタである。
【００９９】
本発明者らの実装ではフィルタを定義３．２で述べたような、状態空間
【０１００】
【数２１】
2020057362.tif 000023
を持つようなムーアマシンそのままとしては実現していない。代わりに、状態空間Ｑを「バッファ部分」
【０１０１】
【数２２】
2020057362.tif 000024
と「非バッファ部分」
【０１０２】
【数２３】
2020057362.tif 000025
に分割して、前半のバッファ部分を必要になり次第生成している。より正確に述べると、非バッファ部分ははじめに、決定的有限オートマトン（ＤＦＡ）として一度に構成され、このＤＦＡはサイズＮの配列として実現されたバッファ部分をどのように制御するかを支配している。実例を例３．６に示す。
【０１０３】
（命題３．５）：Ａ＝（Σ，Ｓ，ｓ０，ＳＦ，Ｅ）を非決定的有限オートマトン（ＮＦＡ）とする。誘導されたムーアマシンフィルタＭＡ，Ｎについて、その状態空間の非バッファ部分Ｐ（Ｓ×（Ｚ／ＮＺ））のサイズはＯ（２Ｎ・｜Ｓ｜）で押さえられる。
【０１０４】
従って、遷移を含めた非バッファ部分のメモリ使用量はＯ（２Ｎ・｜Ｓ｜・｜Σ｜）である。バッファ部分のメモリ使用量はＯ（Ｎ・ｌｏｇ｜Σ｜）である。まとめると、本発明者らのムーアマシンフィルタＭＡ，Ｎを実行するときの空間計算量はＯ（２Ｎ・｜Ｓ｜・｜Σ｜）である。
【０１０５】
空間計算量はＮについて指数的であるが、これは非バッファ部分Ｐ（Ｓ×（Ｚ／ＮＺ））のための冪集合構成に由来する。しかしながら、実験的にはメモリ消費量は必ずしもＮについて指数的には増大しない。これは、Ｐ（Ｓ×（Ｚ／ＮＺ））の全ての状態に到達可能というわけではないからである（５章のＲＱ２を参照）。
【０１０６】
図６Ａは実施形態に係る非決定的有限オートマトン（ＮＦＡ）であるパターンの一例を示す図であり、図６Ｂは実施形態に係るムーアマシンフィルタの非バッファ部分の一例を示す図である。また、図７Ａは所定の文字列に対するムーアマシンフィルタのランを示す図である。
【０１０７】
（例３．６）：パターンａａ＊ｂを考える。これは図６Ａの非決定的有限オートマトン（ＮＦＡ）Ａ０に示されている。定義３．３のムーアマシンフィルタＭＡ０，２は図６Ｂに示されており、ここでは、バッファ状態は省かれている。文字列ｗ＝ａｂｂｂａａｂでのランは図７Ａに示されている。その出力文字列は⊥⊥ａｂ⊥⊥ａａｂであり、これはフィルタリング結果がａｂ⊥⊥ａａｂであることを示している。
【０１０８】
図７Ａは、文字列ｗ＝ａｂｂｂａａｂに対するＭＡ０，２のランを示す。図７Ａにおける表はバッファの状態を表し、バッファは右から文字のデータが追加される。「上からａ、矢印、ｂの記号」は入力文字がａであり、ｂが出力であることを表わす。
【０１０９】
３．３  ムーアマシンフィルタＭＡ，Ｎの性質
この節の残りでは、ＡをパターンＮＦＡ（非決定的有限オートマトン）Ａ＝（Σ，Ｓ，Ｓ０，Ｅ，ＳＦ）、Ｎを正整数、ＭＡ，Ｎ＝（Σ⊥，Σ⊥，Ｑ，ｑ０，Δ，Λ）を定義３．３のムーアマシンフィルタとする。ｗ＝ａ１ａ２…ａｎをΣ上の文字列とし、⊥Ｎｗ'を入力文字列ｗ⊥Ｎに対するムーアマシンフィルタＭＡ，Ｎの出力文字列とする。文字列ｗ'＝ｂ１ｂ２…ｂｎとする。ただし、ｂｉ∈Σ⊥である。
【０１１０】
（定理３．７）（健全性）：ムーアマシンフィルタＭＡ，Ｎは定義３．２の意味で健全である。マッチングの長さに上界があり、バッファサイズＮがその上界以上ならば完全性が成立する。これは本質的には複数文字列マッチングと同じである。
【０１１１】
（定理３．８）（完全性）：ｍａｘ｛｜ｗ｜｜｜ｗ∈Ｌ（Ａ）｝≦Ｎ＜∞を仮定する。このとき、Ｌ（Ａ）＝Ｌ（Ａ'）となる非決定的有限オートマトン（ＮＦＡ）Ａ'であって、ムーアマシンフィルタＭＡ'，Ｎが完全であるものを構成することができる。後半は次のことを意味する：もし添字ｋがａｋ＝ｂｋを満たすなら、ｋ∈［ｉ，ｊ］とｗ｜［ｉ，ｊ］∈Ｌ（Ａ）となる区間［ｉ，ｊ］が存在する。
【０１１２】
単調性の直観は、バッファサイズＮ'を大きくすればムーアマシンフィルタＭＡ，Ｎ'はより多くの文字をマスクするけれども、状態空間も増大するということである。正確な主張はもっと込み入っていて、より大きなバッファサイズＮ"というのはより小さなものの倍数でなくてはいけない。
【０１１３】
（定理３．９）（単調性）：任意の正実数Ｎ'について、ＭＡ，Ｎ'を定義３．３のムーアマシンフィルタとし、⊥Ｎ'ｗ'（Ｎ'）を入力文字列ｗ⊥Ｎ'に対するムーアマシンフィルタＭＡＮ'の出力文字列とする。ｗ'（Ｎ'）＝ｂ１（Ｎ'）ｂ２（Ｎ'）…ｂｎ（Ｎ'）とする。ただし、ｂｉ（Ｎ'）∈Σ⊥である。任意の正実数ｎ、Ｎ'とｗの任意の添字ｋについて、ｂｋ（Ｎ'）＝⊥ならばｂｋ（ｎＮ'）＝⊥である。
【０１１４】
命題３．５で述べたように、ムーアマシンフィルタの状態空間はＡの状態空間よりも指数的に大きい。これは決定的な分岐のために必要な冪集合構成のためである。実行時間を犠牲にすることにより、非決定的有限オートマトン（ＮＦＡ）を必要になり次第決定化することもでき、こうすれば普通はより少ないメモリ領域しか必要としない。
【０１１５】
４．パターンマッチングのためのムーアマシンフィルタリング２：実時間制約付き
本発明者らの主な貢献である、実時間制約付きパターンマッチングのためのムーアマシンフィルタの構成を提案する。基本的な考えは実時間制約なしの設定（３章）と同じだが、実時間制約付きオートマトン（Ｔｉｍｅｄ  Ａｕｔｏｍａｔａ；ＴＡ）は一般には決定化ができないので、決定化が技術的な課題になる。ここで、本発明者らは１クロック決定化（例えば、非特許文献２の５．３節参照）を用いる。その構成は到達可能性を過大評価するので、フィルタリングの健全性を保つことができる。しかも、結果のＴＡの局所的な性質（そのＴＡは遷移毎にリセットされる１つのクロック変数しか持たない）によって、実時間制約なしの有限状態ムーアマシンであるフィルタを作ることができる。
【０１１６】
４．１  問題の定式化
（定義４．１）（タイムスタンプ付き文字列）：Σをアルファベットとする。アルファベットΣ上のタイムスタンプ付き文字列とは、対（ａｉ，τｉ）∈Σ×Ｒ＞０の文字列ｗで、任意のｉ∈［１，｜ｗ｜−１］についてτｉ＜τｉ＋１を満足するものである。
【０１１７】
【数２４】
2020057362.tif 000026
をタイムスタンプ付き文字列とする。アルファベットΣ上のタイムスタンプ付き文字列の集合をＴ（Σ）と書く。
【０１１８】
部分文字列（ａｉ，τｉ），（ａｉ＋１，τｉ＋１），…，（ａｊ，τｊ）をｗ（ｉ，ｊ）と書く。ｔ∈Ｒ≧０について、文字列ｗのｔシフト（時間ｔだけをシフトする）を
【０１１９】
【数２５】
2020057362.tif 000027
と定める。ただし、
【０１２０】
【数２６】
2020057362.tif 000028
である。タイムスタンプ付き文字列
【０１２１】
【数２７】
2020057362.tif 000029
と
【０１２２】
【数２８】
2020057362.tif 000030
について、これらの吸収連結とは、
【０１２３】
【数２９】
2020057362.tif 000031
であり（ただし
【０１２４】
【数３０】
2020057362.tif 000032
と
【０１２５】
【数３１】
2020057362.tif 000033
はどちらも普通の連結）、これらの非吸収連結とは
【０１２６】
【数３２】
2020057362.tif 000034
である。吸収連結ｗ○ｗ'はτ｜ｗ｜＜τ'１のときにのみ定義されることに注意する。
【０１２７】
アルファベットΣ上のタイムスタンプ付き文字列
【０１２８】
【数３３】
2020057362.tif 000035
と、時刻ｔ，ｔ'∈Ｒ＞０で、時刻ｔ＜ｔ'を満足するものについて、タイムスタンプ付き文字列区間ｗ｜（ｔ，ｔ'）は、拡張アルファベットΣ凵｛＄｝上のタイムスタンプ付き文字列（ｗ（ｉ，ｊ）−ｔ）○（＄，ｔ'−ｔ）で定義される。ここで、パラメータｉ，ｊはτｉ−１≦ｔ＜τｉとτｊ＜ｔ'≦τｊ＋１となるように選ばれている。ここで、タイムスタンプ付き文字列ｗ（ｉ，ｊ）−ｔはｗ（ｉ，ｊ）の（−ｔ）シフトであり、未使用の記号＄は終端文字とよばれる。
【０１２９】
（定義４．２）（実時間制約付きオートマトン）：Ｃはクロック変数の有限集合を表し、Φ（Ｃ）は不等式
【０１３０】
【数３４】
2020057362.tif 000036
の複数の連言の集合を表わしている。
【０１３１】
ここで、ｘ∈Ｃ，ｃ∈Ｚ≧０であり、
【０１３２】
【数３５】
2020057362.tif 000037
である。実時間制約付きオートマトンＡ＝（Σ，Ｓ，ｓ０，ＳＦ，Ｃ，Ｅ）は組であって、Σはアルファベット、Ｓは状態の有限集合、ｓ０∈Ｓは初期状態、ＳＦ⊂Ｓは受理状態の集合、Ｅ⊂Ｓ×Ｓ×Σ×Ｐ（Ｃ）×Φ（Ｃ）は遷移の集合である。遷移の複数の構成要素（ｓ，ｓ'，ａ，λ，δ）∈Ｅは、ソース、ターゲット、アクション、リセット変数、遷移のガードをそれぞれ表わしている。
【０１３３】
クロック付値νを関数ν：Ｃ→Ｒ≧０として定義する。クロック付値νのｔシフトν＋ｔを（ν＋ｔ）（ｘ）＝ν（ｘ）＋ｔで定義する。ここで、ｔ∈Ｒ≧０である。実時間制約付きオートマトンＡ＝（Σ，Ｓ，ｓ０，ＳＦ，Ｃ，Ｅ）とタイムスタンプ付き文字列
【０１３４】
【数３６】
2020057362.tif 000038
について、ｗ上のＡのランとは組（ｓｉ，ｖｉ）∈Ｓ×（Ｒ≧０）Ｃの列ｒであって、次の条件を満足するものである。
【０１３５】
（初期条件）ｓ０は初期状態であり、任意のｘ∈Ｃについてν０（ｘ）＝０である。
【０１３６】
（連続条件）任意のｉ∈［１，｜ｗ｜］についてνｉ−１＋τｉ−τｉ−１｜＝δとνｉ（ｘ）＝０（ｘ∈λは任意）となるような遷移（ｓｉ−１，ｓｉ，ａｉ，λ，δ）∈Ｅが存在し、かつνｉ（ｘ）＝νｉ−１（ｘ）＋τｉ−τｉ−１（ｘ∈λでない）。
【０１３７】
ランであって連続条件のみを満たすものをパスとよぶ。ラン
【０１３８】
【数３７】
2020057362.tif 000039
はｓの最後の要素ｓ｜ｓ｜−１がＳＦに属するとき受理するという。言語Ｌ（Ａ）はタイムスタンプ付き文字列の集合｛ｗ｜ｗ上のＡの受理するランが存在する｝と定義される。
【０１３９】
ここで、本発明者らの目標の問題を述べる。これを解くためのアルゴリズムは活発に研究されてきており（例えば、非特許文献４，５参照）、これらのアルゴリズムのためのプリプロセッサとしてのフィルタリングムーアマシンがこの実施形態の貢献である。
【０１４０】
（定義４．３）（実時間制約付きパターンマッチング）：Ａを実時間制約付きオートマトン、ｗをタイムスタンプ付き文字列とし、両方とも共通のアルファベットΣ上のものであるとする。実時間制約付きパターンマッチング問題は、区間ｗ｜（ｔ，ｔ'）が実時間制約付きオートマトン（ＴＡ）Ａに受理されるような区間（ｔ，ｔ'）を全て求めるものである。つまり、マッチング集合
【０１４１】
【数３８】
2020057362.tif 000040
を求めるものである。
【０１４２】
４．２  ＴＡの１クロック決定化
フィルタの実時間制約なしでの構成（定義３．３）で材料となった３つの主なブロックのうち、カウンタとバッファはこの実時間制約付きの設定にそのまま持ってくることができる。決定化については、定義４．５の過大評価の考えを用いる。これは（例えば、非特許文献２の５．３節参照）を参考にしたものである。
【０１４３】
まずは補助的な記号から始める。
【０１４４】
（定義４．４）（制限ν｜Ｃ，結びν凵ν'）：ν：Ｃ'→Ｒ≧０をクロック付値とする。νのＣ⊂Ｃ'への制限はν｜Ｃ：Ｃ→Ｒ≧０と書かれる。これは、任意のｘ∈Ｃについて（ν｜Ｃ）（ｘ）＝ν（ｘ）である。
【０１４５】
ν：Ｃ→Ｒ≧０とν'：Ｃ'→Ｒ≧０をクロック付値とする。これらの結びν凵ν'：Ｃ凵Ｃ'→Ｒ≧０を非交和Ｃ凵Ｃ'上のクロック付値として次のように定義する。
【０１４６】
【数３９】
2020057362.tif 000041
【０１４７】
関数でｘｉをｒｉに写す（任意のｉ∈｛１，…，ｎ｝について）ものは
【０１４８】
【数４０】
2020057362.tif 000042
と書かれる。
【０１４９】
（定義４．５）（１クロック決定化）：Ａ＝（Σ，Ｓ，ｓ０，ＳＦ，Ｃ，Ｅ）を実時間制約付きオートマトン（Ｔｉｍｅｄ  Ａｕｔｏｍａｔｏｎ；ＴＡ）とし、ｙを未使用のクロック変数とする（言い換えると、ｙ∈Ｃでない）。実時間制約付きオートマトン（ＴＡ）Ａ'＝（Σ，Ｓ'，ｓ０'，ＳＦ'，｛ｙ｝，Ｅ'）は、以下の条件が成立するときにオートマトンＡの１クロック決定化という。
【０１５０】
（１）新しい、有限の状態空間Ｓ'の任意の元
【０１５１】
【数４１】
2020057362.tif 000043
は対（ｓｉ，Ｚｉ）の有限集合
【０１５２】
【数４２】
2020057362.tif 000044
である。ここで、ｓｉ∈ＳはＡの状態であり、Ｚｉは
【０１５３】
【数４３】
2020057362.tif 000045
の部分集合でゾーンとよばれる特殊な多角形により与えられるものである。
【０１５４】
（２）オートマトンＡ'の任意の遷移
【０１５５】
【数４４】
2020057362.tif 000046
について、ガードδはクロック変数ｙについての複数の区間の有限和集合である。さらに、それは遷移ＥがオートマトンＡで有効かどうかを反映している。正確には、任意のｕ，ｕ'∈Ｒ≧０でδを満たすものについて、
【０１５６】
【数４５】
2020057362.tif 000047
が成立している。ただし、集合
【０１５７】
【数４６】
2020057362.tif 000048
は
【０１５８】
【数４７】
2020057362.tif 000049
で定義される。
【０１５９】
（３）オートマトンＡ'の任意の遷移は唯一のクロック変数ｙをリセットする。つまり、全ての遷移
【０１６０】
【数４８】
2020057362.tif 000050
について、λ＝｛ｙ｝である。
【０１６１】
（４）オートマトンＡ'の任意の遷移
【０１６２】
【数４９】
2020057362.tif 000051
はＡの遷移を模倣する。より正確には、
【０１６３】
【数５０】
2020057362.tif 000052
と
【０１６４】
【数５１】
2020057362.tif 000053
とする。ｓ'∈Ｓとν'：Ｃ→Ｒ≧０（ここで、τは経過時間）が存在して、
【０１６５】
【数５２】
2020057362.tif 000054
がオートマトンＡの（長さ１の）パスであると仮定する。このとき、ゾーン
【０１６６】
【数５３】
2020057362.tif 000055
であって、
１）
【０１６７】
【数５４】
2020057362.tif 000056
２）付値
【０１６８】
【数５５】
2020057362.tif 000057
（これはクロック集合Ｃ凵｛ｙ｝上のものである）はゾーンＺ'に属する。
【０１６９】
（５）オートマトンＡ'は決定的である：任意の状態
【０１７０】
【数５６】
2020057362.tif 000058
、任意のクロック付値
【０１７１】
【数５７】
2020057362.tif 000059
、ａ∈Σ、経過時間を表わすτ∈Ｒ≧０について、
【０１７２】
【数５８】
2020057362.tif 000060
からの長さ１のａ，τでラベル付けされたパスは一意である。つまり、もし
【０１７３】
【数５９】
2020057362.tif 000061
と
【０１７４】
【数６０】
2020057362.tif 000062
が両方ともオートマトンＡ'のパスならば、
【０１７５】
【数６１】
2020057362.tif 000063
かつν'＝ν"となる。（条件３のために
【０１７６】
【数６２】
2020057362.tif 000064
となっていることに注意する。）
【０１７７】
（６）オートマトンＡ'の初期状態ｓ０'は
【０１７８】
【数６３】
2020057362.tif 000065
で与えられる。ここで０は全てのクロック変数を０に写す付値である。
【０１７９】
（７）状態ＳがＳ'Ｆに属するのは、ｓ∈ＳＦとなる
【０１８０】
【数６４】
2020057362.tif 000066
が存在するとき、かつそのときに限る。
【０１８１】
（命題４．６）：Ａ＝（Σ，Ｓ，ｓ０，ＳＦ，Ｃ，Ｅ）を実時間制約付きオートマトン（ＴＡ）とする。オートマトンＡ'＝（Σ，Ｓ'，ｓ０'，ＳＦ'，｛ｙ｝，Ｅ'）をオートマトンＡの１クロック決定化とする。このとき、オートマトンＡ'は次の性質を満足する。
【０１８２】
（シミュレーション）ｗ∈Ｔ（Σ）をタイムスタンプ付き文字列とし、オートマトンＡで状態ｓ∈Ｓに到達するような文字列ｗ上のランが存在するとする。このとき、次を満足する
【０１８３】
【数６５】
2020057362.tif 000067
が存在する：（１）あるゾーンＺについて
【０１８４】
【数６６】
2020057362.tif 000068
となる、（２）オートマトンＡ'で状態Ｓへの文字列ｗ上のランが存在する。
【０１８５】
（言語包含）特に、Ｌ（Ａ）⊂Ｌ（Ａ'）である。
【０１８６】
定義４．５が与えているのは性質であって構成ではないことに注意する。同じ実時間制約付きオートマトン（ＴＡ）Ａについて、サイズや精度の異なる１クロック決定化は複数存在する。本発明者らの実装では例えば、非特許文献２の５．３．４項で提案されている特定の構成を用いている。
【０１８７】
４．３  本発明者らのムーアマシンフィルタＭＡ，Ｎの構成
（定義４．７）（実時間制約付きパターンマッチングのためのムーアマシンフィルタＭＡ，Ｎ）：Ａ＝（Σ，Ｓ，ｓ０，ＳＦ，Ｃ，Ｅ）を実時間制約付きオートマトン（ＴＡ）とし、Ｎ∈Ｚ＞０とする。ムーアマシンフィルタＭＡ，Ｎの構成は以下のステップに従って行なわれる。
【０１８８】
まずはじめのステップでは、もとの実時間制約付きオートマトン（ＴＡ）Ａをカウンタで拡張する。具体的には、
【０１８９】
【数６７】
2020057362.tif 000069
を次のように定義する。
【０１９０】
【数６８】
2020057362.tif 000070
、そして
【０１９１】
【数６９】
2020057362.tif 000071
【０１９２】
２つ目のステップでは、オートマトンＡＮ−ｃｔｒの１クロック決定化（定義４．５）を取る。
【０１９３】
【数７０】
2020057362.tif 000072
がその結果であるとする。
【０１９４】
最後に３つ目のステップでムーアマシンフィルタＭＡ，Ｎを次式のように定義する。
【０１９５】
【数７１】
2020057362.tif 000073
【０１９６】
ただし、ΔとΛは次のように定義される。
【０１９７】
【数７２】
2020057362.tif 000074
、ただし、状態Ｓ'はオートマトンＡＮ−ｃｔｒ−ｄでの状態Ｓの、文字ａと経過時間τのもとでの一意な後続であり（定義４．５）、
【０１９８】
【数７３】
2020057362.tif 000075
は次式のように定義される。
【０１９９】
【数７４】
2020057362.tif 000076
【０２００】
ここで、
【０２０１】
【数７５】
2020057362.tif 000077
である。
【０２０２】
【数７６】
2020057362.tif 000078
と定義する。
【０２０３】
図７Ｂは実施形態に係る前置情報処理回路の処理回路の一例を示すブロックである。図７Ｂにおいて、当該処理回路は、フィルタ部１１と、マスキング適用部１２とを備えて構成される。
【０２０４】
得られるムーアマシンは入力としてタイムスタンプ付き文字列を取ることに注意する。これによって、入力アルファベットは無限になってしまう（つまり、Σ⊥×Ｒ≧０）。これは実装上大きな問題にはならない。というのは、状態空間は有限のままだからである。しかも、ムーアマシンフィルタＭＡ，Ｎ（図７Ｂのフィルタ部１１）の出力アルファベットは２元集合｛ｐａｓｓ，ｍａｓｋ｝であり、ムーアマシンフィルタのオートマトンはマスクの情報しか出力しない。有限状態ムーアマシンでは確かに実時間制約付き複数の文字をバッファしておくことはできないが、もとのタイムスタンプ付き文字列をコピーしておいて、あとで適当なマスキングをマスキング適用部１２により適用することはできる（図７Ｂ参照）。
【０２０５】
（定理４．８）（健全性）：オートマトンＡをパターンＴＡ  Ａ＝（Σ，Ｓ，ｓ０，ＳＦ，Ｃ，Ｅ）とし、Ｎを正整数とし、ＭＡ，Ｎを定義４．７のムーアマシンフィルタとする。ｗ＝（ａ１，τ１）（ａ２，τ２）…（ａｎ，τｎ）をΣ上のタイムスタンプ付き文字列とし、ｍａｓｋＮｗ'を入力文字列ｗ（⊥，τｎ）Ｎに対するムーアマシンフィルタＭＡ，Ｎの出力文字列とする（ここで、入出力文字列はｍａｓｋＮと（⊥，τｎ）Ｎが図４のように付け足されているとする）。文字列ｗ'＝ｂ１ｂ２…ｂｎとする。ここで、ｂｋ∈｛ｐａｓｓ，ｍａｓｋ｝である。
【０２０６】
任意の文字列ｗの添字の対（ｉ，ｊ）でｗ（ｉ，ｊ）−τｉ−１∈Ｌ（Ａ）を満足するものと、文字列ｗの添字ｋ∈［ｉ，ｊ］について、ｂｋ＝ｐａｓｓとなる。
【実施例１】
【０２０７】
５．実施例１（実装と実験）
本発明者らは実時間制約付きパターンマッチングのためのムーアマシンフィルタの構成を実装した（実施例１）。本発明者らの実装は連続する⊥を２つの⊥でつぶし、はじめと最後の⊥のタイムスタンプを保つようになっている。状態空間Ｑのバッファ部分は必要になり次第生成するようになっており（定義４．７の｛ｐａｓｓ，ｍａｓｋ｝Ｎ）、これは命題３．５で述べた通りである。本発明者らは次の研究の疑問（ＲＱ）に答えるための実験を行なった。
【０２０８】
ＲＱ１：本発明者らのムーアマシンフィルタは沢山のイベントをマスクするか？
ＲＱ２：本発明者らのムーアマシンフィルタはオンラインで動作するか？
つまり、入力のタイムスタンプ付き文字列の長さに対して線形時間と定数空間で動作するか？
ＲＱ３：本発明者らのムーアマシンは実時間制約付きパターンマッチングのタスク全体を加速するか？
ＲＱ４：本発明者らのフィルタは高精度か？
つまり、マスクされなかったイベントの多くが実際のマッチングに寄与するか？
ＲＱ５：本発明者らのフィルタの反応は早いか？
つまり、大きな遅れが生じはしないか？
【０２０９】
フィルタ構成の実装はＣ＋＋言語で行い、ｃｌａｎｇ−９００．０．３９．２でコンパイルした。ツールの入力はパターンＴＡ  ＡとバッファサイズＮ、そしてタイムスタンプ付き文字列ｗからなり、フィルタされた文字列を出力する。実験はパーソナルコンピュータ（ＭａｃＢｏｏｋ  Ｐｒｏ  Ｅａｒｌｙ  ２０１３  ｗｉｔｈ  ２．６  ＧＨｚ  Ｉｎｔｅｌ  Ｃｏｒｅ  ｉ５  ｐｒｏｃｅｓｓｏｒ  ａｎｄ  ８ＧＢ  １６００ＭＨｚ  ＤＤＲ）のＲＡＭ上のＭａｃ  ＯＳ  １０．１３．４で行なった。用いたベンチマーク問題は図８〜図１０にある。これらは全て自動車のシナリオから取られたものである。
【０２１０】
図８は実施例１に係る自動車のトルクセンサのデータのためのムーアマシンフィルタの一例を示す図である。
【０２１１】
図８において、入力文字列の集合Ｗ（長さは２４２，８０８から４，８７３，２０７）はランダムな入力により自動車エンジンのモデルであるｓｌｄｅｍｏ＿ｅｎｇｉｎｅｗｃ．ｓｌｘから生成された。このパターンは１秒以内にｈｉｇｈの発生が４回以上あることを記述している。バッファサイズＮ＝１０については、ムーアマシンフィルタＭＡ，１０のサイズ（ＳＮ−ｃｔｒ−ｄの非バッファ部分の到達可能状態の数ではかった）は１６であった。
【０２１２】
図９は実施例１に係る自動車のギアセンサのデータのためのムーアマシンフィルタの一例を示す図である。
【０２１３】
図９において、入力文字列の集合Ｗ（長さは３０６から１，０１１，４２６）は自動変速装置のモデルから生成された。当該モデルのφＡＴ５から取ったこのパターンは、ギアシフトを（１速から２速に）過度に頻繁に行なうというイベントを表している。バッファサイズＮ＝１０のとき、図８と同じ方法でムーアマシンフィルタＭＡ，１０のサイズを測定すると、３であった。
【０２１４】
図１０は実施例１に係る自動車のアクセルセンサのデータのためのムーアマシンフィルタの一例を示す図である。
【０２１５】
図１０において、入力文字列の集合Ｗ（長さは７０８から１，７３９，５３５）はギアと同じモデルで生成された。パターンはφＡＴ８と同じである：ギアは１速から４速までシフトし、ＲＰＭも高くなるが、速度は低い（言い換えると、ｖ≧１００というイベントがおこらない）。バッファサイズＮ＝１０について、ムーアマシンフィルタＭＡ，１０のサイズを図８と同じ方法で測定すると、７１であった。
【０２１６】
実行時間とメモリ使用量の計測のために、本発明者らはＧＮＵのｔｉｍｅを用い、２０回の実行の平均を取った。それぞれの実験で、本発明者らはワークフロー全体を計測した。ＲＱ２では、フィルタの構成を含めた時間とメモリ使用を、ＲＱ３ではフィルタの構成、フィルタリング、プロセス間通信とパターンマッチングの時間とメモリ使用量を計測している。ＲＱ３の実験では、実時間制約付きパターンマッチングのための最新のツールであるＭＯＮＡＡを使用した。
【０２１７】
ＲＱ１：フィルタリング率
【０２１８】
図１１Ａは実施例１に係る自動車のトルクセンサのデータに対するムーアマシンフィルタのシミュレーション結果であって、入力された実時間付き文字列長に対するフィルタされた実時間付き文字列長を示すグラフである。図１１Ｂは実施例１に係る自動車のギアセンサのデータに対するムーアマシンフィルタのシミュレーション結果であって、入力された実時間付き文字列長に対するフィルタされた実時間付き文字列長を示すグラフである。図１１Ｃは実施例１に係る自動車のアクセルセンサのデータに対するムーアマシンフィルタのシミュレーション結果であって、入力された実時間付き文字列長に対するフィルタされた実時間付き文字列長を示すグラフである。すなわち、図１１Ａ〜図１１Ｃはそれぞれの実時間制約付きオートマトンＡ、バッファサイズＮ、タイムスタンプ付き文字列ｗ∈Ｗについてのフィルタされたタイムスタンプ付き文字列長を示している。
【０２１９】
図１１Ａ〜図１１Ｃから明らかなように、バッファサイズＮが大きくなるほどフィルタされた文字列は短くなることがわかる。このことは、（その結果は実時間制約なしの設定だったものの）定理３．９での理論的な考察と符合する。ピーク性能は、バッファサイズＮ＝１０といった割合小さいＮで実現されているように見える。バッファサイズＮ＝１０のときには、トルク、ギア、アクセルでのもとのタイムスタンプ付き文字列の長さはそれぞれ１／３，１／２，１／１００程度になっている。アクセルについては、本発明者らのフィルタは多くの文字をフィルタしている。これは、アルファベットのサイズとパターン実時間制約付きオートマトンのサイズが比較的大きいためである。この劇的なデータの削減は本発明者らのフィルタリング手法が組み込みのシナリオで実用できることを示している（図１参照）。
【０２２０】
ＲＱ２：速度とメモリ使用量
【０２２１】
図１２Ａは実施例１に係る自動車のトルクセンサのデータに対するムーアマシンフィルタのシミュレーション結果であって、入力された実時間付き文字列長に対する実行時間を示すグラフである。図１２Ｂは実施例１に係る自動車のギアセンサのデータに対するムーアマシンフィルタのシミュレーション結果であって、入力された実時間付き文字列長に対する実行時間を示すグラフである。図１２Ｃは実施例１に係る自動車のアクセルセンサのデータに対するムーアマシンフィルタのシミュレーション結果であって、入力された実時間付き文字列長に対する実行時間を示すグラフである。
【０２２２】
図１３Ａは実施例１に係る自動車のトルクセンサのデータに対するムーアマシンフィルタのシミュレーション結果であって、入力された実時間付き文字列長に対するメモリ使用量を示すグラフである。図１３Ｂは実施例１に係る自動車のギアセンサのデータに対するムーアマシンフィルタのシミュレーション結果であって、入力された実時間付き文字列長に対するメモリ使用量を示すグラフである。図１３Ｃは実施例１に係る自動車のアクセルセンサのデータに対するムーアマシンフィルタのシミュレーション結果であって、入力された実時間付き文字列長に対するメモリ使用量を示すグラフである。
【０２２３】
すなわち、図１２と図１３はそれぞれのパターン実時間制約付きオートマトンＡ、バッファサイズＮ、タイムスタンプ付き文字列ｗ∈Ｗについての、本発明者らのムーアマシンフィルタの実行時間とメモリ使用量を示している。
【０２２４】
図１２では、実行時間は入力文字列に対して線形であることがわかる。図１３では、メモリ使用量は入力文字列の長さに対して大体定数であることがわかる。これら２つの結果は、本発明者らのフィルタリング手法がオンラインで利用できることを示唆している。
【０２２５】
ムーアマシンフィルタの構成にかかる時間は無視できると考えられる。ここで図１２の短い入力文字列に対する実行時間を参照せよ。
【０２２６】
バッファサイズＮを様々に変化させることの影響については、小さなバッファサイズＮについて実行時間は比較的大きくなっていることがわかる。これはより少ない文字がマスクされ、より多くの文字が出力され、そのことが入出力装置（Ｉ／Ｏ）のコストを悪化させたためだと考えられる。メモリ使用量については、命題３．５での最悪の場合の結果（Ｎについて指数的）に反して、大きなバッファサイズＮに対する増大は穏やかであった。これは冪集合構成の全ての状態に到達可能なわけではないためである。
【０２２７】
ＲＱ３：実時間制約付きパターンマッチングの加速
【０２２８】
図１４Ａは自動車のトルクセンサのデータに対する、比較例に係るツールのシミュレーション結果であって、入力された実時間付き文字列長に対する実行時間を示すグラフである。図１４Ｂは自動車のギアセンサのデータに対する、比較例に係るツールのシミュレーション結果であって、入力された実時間付き文字列長に対する実行時間を示すグラフである。図１４Ｃは自動車のアクセルセンサのデータに対する、比較例に係るツールのシミュレーション結果であって、入力された実時間付き文字列長に対する実行時間を示すグラフである。
【０２２９】
すなわち、図１４は図２のワークフローの実行時間を示している。ここで、フィルタは本発明者らのアルゴリズムで与えられ、パターンマッチングは最新のツールＭＯＮＡＡで行なわれている。より具体的には、ムーアマシンフィルタの標準出力をＭＯＮＡＡの標準入力にＵｎｉｘのパイプラインで接続している。このようにすることで、フィルタとＭＯＮＡＡは異なるコアで並列に実行される。
【０２３０】
バッファサイズＮが十分大きければ（例えばＮ＝１０）、フィルタリングによって実時間制約付きパターンマッチングの全体の性能は向上することがわかった。トルクとギアについては１．２倍高速化され、アクセルについてはおおよそ２倍高速化された。この加速は本発明者らのフィルタリング手法が図１に示された構成の仮定とは独立に有益かもしれないということを示唆している。ログが膨大でモニタリングが何時間、あるいは何日もかかってしまうときに、フィルタと並列に実行することによって時間が削減できるかもしれない。
【０２３１】
ＲＱ４：精度
【０２３２】
３つの例トルク、ギア、アクセルと、バッファサイズＮ＝１０について、マスクされなかったイベントで実際のマッチングに貢献したものの比はそれぞれ、０．３４％、９９％、９２％であった。従って、正確性はパターンによって劇的に異なることがわかる。精度の低い例（トルク）であっても、本発明者らのフィルタは確かにログのサイズをおおよそ３倍削減していることには注意されたい（図１１Ａ〜図１１Ｃ）。
【０２３３】
この実時間制約付きの設定での正確性のなさのほとんどは１クロック決定化（定義４．５）のゆるさに起因する。例えば、トルクの実時間制約付きオートマトン（ＴＡ）（図８）は同じクロックｘを使った１秒以内の４回連続のｈｉｇｈの発生を要求している。この１クロック決定化による最良の過大評価（遷移毎にすべての時計をリセットしなくてはいけない）は、長さ１以下の連続した４つの区間のそれぞれにｈｉｇｈが表われるという要求である。これは元の要求よりもかなり緩くなっており、トルクの例で比較的低精度になったことを説明している。
【０２３４】
ＲＱ５：反応性
【０２３５】
３つの例トルク、ギア、アクセルとバッファサイズＮ＝１０について、本発明者らのフィルタによる平均の遅延（実行時間）／｜ｗ｜×Ｎを計算した。結果はそれぞれ２．２マイクロ秒、３．１マイクロ秒、０．９１マイクロ秒であった。これらの遅延はプロセッサの計算能力に大きく依存するとはいえ、これらの遅延は小さいフィルタは十分高速に動作すると結論する。
【０２３６】
６．関連研究
パターンマッチングの効率性はデータベースやネットワークの分野で活発に研究されてきた。これらの分野での、ハードウェア構成の問題（Ｌ１／Ｌ２キャッシュとメインメモリの間の速度の差）は本発明者らがこれまで議論してきた組み込みモニタ問題と類似している。
【０２３７】
これらの適用領域での研究は（複数かもしれない）文字列をパターンとして扱ってきた。ここで主な発想の源となってきたのは、Ｂｏｙｅｒ−Ｍｏｏｒｅ、Ｃｏｍｍｅｎｔｚ−Ｗａｌｔｅｒ、Ａｈｏ−Ｃｏｒａｓｉｃｋといった古典的なアルゴリズムである。文字列の代わりに正規表現やオートマトンで与えられるパターンに対するアルゴリズムの多くはこれらの文字列マッチングの技法に依っている。
【０２３８】
データベースとネットワークにおいて、正規表現に対するパターンマッチングは主にマシン構成を考慮に入れた応用特化のヒューリスティクスにより行なわれてきた。
【０２３９】
実際のパターンマッチングの前の前置フィルタリングは上記の研究で考えられてきた（例えば、非特許文献３参照）。これらの研究と本発明者らの研究との主な違いは、彼らのフィルタはマッチング候補、すなわちマッチングするかもしれないものの添字を明示的に含んでいる点にある。このために、ワークフロー（本発明者らのよぶところのパターンマッチング）の２ステップ目は彼らの実施形態では検査とよばれている。これに対して、本発明者らのフィルタは入力文字列をマスクするだけである。これは本発明者らの（組み込みアプリケーションを見据えた）目的がマッチングの高速化だけでなく、センサからパターンマッチングの装置に送られるデータの量を削減することにもあるからである。この選択によってムーアマシンが使えるようになり、さらに、ＦＰＧＡ（Ｆｉｅｌｄ  Ｐｒｏｇｒａｍｍａｂｌｅ  Ｇａｔｅ  Ａｒｒａｙ）又はＡＳＩＣ（Ａｐｐｌｉｃａｔｉｏｎ  Ｓｐｅｃｉｆｉｃ  Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔｓ）によって容易に実装できるようになった。
【０２４０】
実時間時相論理や実時間制約付きパターンマッチング（例えば、非特許文献４参照）に対するモニタリングは比較的新しい話題である。このような研究は主に物理情報システムの文脈で研究されてきたが、データベースやネットワークへの応用の見込みも十分にある。実時間制約付きパターンマッチングでは、仕様は（この研究で用いた）実時間制約付きオートマトン、実時間制約付き正規表現や距離つき時相論理式で記述することができる。これらの定式化での仕様の実時間制約付きパターンマッチングのアルゴリズムは例えば、非特許文献１等で活発に研究されてきた。加えて、Ｂｏｙｅｒ−ＭｏｏｒｅやＦｒａｎｅｋ−Ｊｅｎｎｉｎｇｓ−Ｓｍｙｔｈのようなシフト表の技法と実時間制約付きオートマトン（例えば、非特許文献５参照）を組み合わせることにより実時間制約付きパターンマッチングを加速するものである。
【０２４１】
７．結論
近年の組み込みアプリケーションでのモニタリングの需要の高まりを受けて、本発明者らは（実時間制約なし、実時間制約付き）パターンマッチングのためのフィルタリングムーアマシンの構成を提案した。その構成はオートマトン理論的であり、ムーアマシンとしてフィルタを実現するものである。
【実施例２】
【０２４２】
図１５は実施例２に係る前置情報処理回路４の構成例を示すブロック図である。図１５において、前置情報処理回路４はムーアマシンフィルタの機能を有するプロセッサ回路であって、ＣＰＵ２０と、ＲＯＭ２１と、ＲＡＭ２２と、操作部２３と、表示部２４と、入力インターフェース２５と、出力インターフェース２６とがバス２７を介して接続され構成される。
【０２４３】
図１５において、ＣＰＵ２０はムーアマシンフィルタの処理を制御しながら実行するプロセッサである。ＲＯＭ２１は前置情報処理回路４を動作させるために必要なプログラム及びデータを格納する。ＲＡＭ２２はムーアマシンフィルタの処理（フィルタリング処理）を実行するときに用いるメモリ領域であって、例えばＦＩＦＯメモリであるバッファ部２２ａ、及び非バッファ部２２ｂが設けられている。なお、バッファ部２２ａは「バッファ２２ａ」と呼ばれることもあり、非バッファ部２２ｂは「非バッファ２２ｂ」と呼ばれることもある。またＲＡＭ２２には、ＣＰＵ２０が実行する各種プログラム（生成プログラム２２ｐ１、メインプログラム２２ｐ２、サブプログラム２２ｐ３）がＲＯＭ２１からロードされる。これらのプログラムの詳細は後述する。入力インターフェース２５は、入力されるシーケンスデータを受信して所定のデータ形式に変換した後、ＣＰＵ２０等に出力する。出力インターフェース２６はＣＰＵ２０によるムーアマシンフィルタの処理結果のシーケンスデータを所定のデータ形式に変換した後、外部回路又は外部回線に出力する。操作部２３は例えばキーボード、マウスなどを含み、実行、停止、必要なデータの入力のために用いる。
【０２４４】
操作部２３はまた、入力されるシーケンスデータの中から検索したいパターンの条件（マッチング条件と呼ぶ）を前置情報処理回路４に入力するために用いられる。マッチング条件は、文字列や正規表現の形式で入力されるとよい。あるいは、オートマトンとして前置情報処理回路４に与えられてもよい。また別の実施形態として、マッチング条件は、シーケンスデータとともに、入力インターフェース２５を介して（たとえば外部の装置から）入力されてもよい。表示部２４は例えば液晶ディスプレイであって、入力されるシーケンスデータ、出力されるシーケンスデータ等を表示する。
【０２４５】
図１６に、バッファ部２２ａの構成例を示す。バッファ部２２ａは、前置情報処理回路４で動作する有限状態機械（具体的にはムーアマシン）の構成要素の一つである。詳細は後述するが、前置情報処理回路４で動作するムーアマシンは、本明細書の３．２節で説明したムーアマシンのように、状態空間をバッファ部分と非バッファ部分に分けて定義する。バッファ部２２ａは、状態空間のバッファ部分に相当する。
【０２４６】
バッファ部２２ａはＮ個のメモリブロック（２２ａ−１，２２ａ−２，...２２ａ−Ｎ）を有するＦＩＦＯバッファである。各メモリブロック（２２ａ−１，２２ａ−２，...２２ａ−Ｎ）はそれぞれ、入力されるシーケンスデータの一単位分のデータを格納するデータ領域と、フラグ領域を有する。図１６において、行２２１ａがデータ領域を表し、行２２１ｂがフラグ領域を表す。各データ領域は、シーケンスデータの一単位分のデータと同じサイズ（あるいはそれより大きいサイズ）の記憶領域である。たとえばシーケンスデータが文字列で、文字列を構成する各文字は１バイトキャラクターで、シーケンスデータが１文字ずつ（１バイトずつ）前置情報処理回路４に入力される場合、データ領域の大きさは１バイトでよい。
【０２４７】
各フラグ領域は一例として、１ビットの記憶領域で、０（ｍａｓｋ）または１（ｐａｓｓ）が格納される。以下では、フラグ領域に格納されるデータ（０または１）のことを「フラグ」と呼ぶ。またフラグ領域に格納される値０のことを"ｍａｓｋ"と表記し、フラグ領域に格納される値１は"ｐａｓｓ"と表記する。
【０２４８】
なお、実施例２に係る前置情報処理回路４では、バッファ部２２ａにシーケンスデータを入力する際、データは一番右のメモリブロック（２２ａ−１）に格納される。メモリブロック（２２ａ−１）にデータが格納される前に、一番左のメモリブロック（２２ａ−Ｎ）のデータ（及びフラグ）はバッファ部２２ａから出力され、残りのメモリブロック（２２ａ−１，２２ａ−２，...２２ａ−（Ｎ−１））のデータ及びフラグはそれぞれ、左隣のメモリブロック（２２ａ−２，２２ａ−３，...２２ａ−Ｎ）に移される。以下の説明では、一番右のメモリブロック（２２ａ−１）を「バッファ部２２ａの先頭」と呼び、一番左のメモリブロック（２２ａ−Ｎ）を「バッファ部２２ａの末尾」と呼ぶ。
【０２４９】
なお、ここでは、各メモリブロック（２２ａ−１，２２ａ−２，...２２ａ−Ｎ）がデータ領域とフラグ領域を有する例を説明したが、データ領域は無くてもよい。たとえば本明細書の４．３節で説明した定義に従うムーアマシンでは、４．３節に記載されているように、状態空間のバッファ部分には、データ（入力されるシーケンスデータ）は格納されずフラグのみが格納される。そのため、たとえば前置情報処理回路４で動作するムーアマシンが、本明細書の４．３節で説明した定義に従うムーアマシンである場合、バッファ部２２ａにデータ領域は不要である。
【０２５０】
続いて、実施例２に係る前置情報処理回路４で動作するムーアマシンの例を説明する。ここでは主に、前置情報処理回路４は入力されるシーケンスデータとしてタイムスタンプの付与されていない文字列を受け取り、受け取った文字列のフィルタリングを行うムーアマシンを生成するケースを説明する。この場合、前置情報処理回路４で動作するムーアマシンは、本明細書の３．２節で説明したものと同様のものになる。
【０２５１】
前置情報処理回路４で動作するムーアマシンは、入力されるシーケンスデータのマッチング条件に基づいて生成される。そのため、ムーアマシンの説明の前に、マッチング条件の例を説明する。以下の説明では、マッチング条件が(正規表現で表記した場合に)"ａ（ａ＊）ｂ"と表記される場合の例を説明する。
【０２５２】
正規表現"ａ（ａ＊）ｂ"は、図１７に示す状態遷移図に従った動作をするオートマトンＡ＝（Σ，Ｓ，ｓ０，ＳＦ，Ｅ）と等価である。なお、オートマトンＡ＝（Σ，Ｓ，ｓ０，ＳＦ，Ｅ）の各記号の意味は以下の通りである。Σは入力文字セットを表し、Ｓは状態の集合を表し、ｓ０，は初期状態（Ｓの要素でもある）を表し、ＳＦは最終状態（受理状態とも呼ばれる）を表し（Ｓの部分集合でもある）、Ｅは遷移の集合である。
【０２５３】
ここで説明する例では、オートマトンＡは３つの状態{ｓ０，ｓ１，ｓ２}を有し、ｓ０が初期状態で、ｓ２が最終状態（受理状態）である。またΣは文字ａ，ｂから構成される。図１７において、各状態{ｓ０，ｓ１，ｓ２}は円で表現され、また二重円は受理状態を表す。さらに、各状態を結ぶ矢印（エッジ）の上に付されている文字（ａ，ｂ）はオートマトンＡへの入力を意味する。たとえば図１７では、状態ｓ０と状態ｓ１を結ぶ矢印の上に文字"ａ"が記されているが、これは「オートマトンＡが状態ｓ０の時に文字"ａ"が入力されると、オートマトンＡはが状態ｓ１に遷移する」ことを表す。
【０２５４】
前置情報処理回路４は、本明細書の３．２節で説明した定義に従ってムーアマシンを生成する。ここで生成されるムーアマシンをＭＡ，Ｎ＝（Σ⊥，Σ⊥，Ｑ，ｑ０，Δ，Λ）と表記する。なお、ＭＡ，Ｎ＝（Σ⊥，Σ⊥，Ｑ，ｑ０，Δ，Λ）の各記号の意味は以下の通りである。一番目のΣ⊥は入力文字セットを表し、二番目のΣ⊥は出力文字セットを表す。Σは先に述べた通り、オートマトンＡの入力文字セットであり、Σ⊥はオートマトンＡの入力文字セットに対して、文字⊥を追加した文字セットである（ただし文字⊥は、オートマトンＡの入力文字セットΣには含まれていない文字である。本明細書では⊥を「ブロック文字」と呼ぶ）。Ｑはムーアマシンの状態空間を表し、ｑ０は初期状態を表し、Δは遷移関数を表し、Λは出力関数を表す。また、ＭＡ，Ｎの添え字Ａは、ムーアマシンの元となるオートマトン（つまり前置情報処理回路４が受け付けたオートマトンＡ）を意味し、Ｎはバッファサイズ（図１６を用いて説明したバッファ２２ａの有するメモリブロックの数）を意味する。
【０２５５】
ムーアマシンを生成する際、前置情報処理回路４はまずオートマトンＡがとり得る各状態をもとに、拡張された状態を定義する。実施例２では、オートマトンＡがとり得る状態（仮にこれをｓｋと表記する）と、オートマトンＡが初期状態（ｓ０）から状態ｓｋに遷移するまでに要する遷移回数の組を、新たな（拡張された）状態として定義する。初期状態（ｓ０）から状態ｓｋに遷移するまでに要する遷移回数がｃ回の場合、この新たな状態は（ｓｋ，ｃ）と表記される。実施例２では、この新たな状態のことを「カウンタ付き状態」と呼ぶこともあり、また初期状態（ｓ０）から状態ｓｋに遷移するまでに要する遷移回数のことを「カウンタ」と呼ぶこともある。ただし実施例２において、カウンタは、０以上の整数だが、上限値がバッファサイズＮの整数であり、カウンタは正確には、以下の式（７）を計算することで求められる値である（つまりカウンタは法Ｎに関する剰余類に属する）。
【０２５６】
（（遷移回数−１）  ｍｏｄ  Ｎ）＋１  ...（７）
そのため正確には遷移回数とカウンタの値は一致しないこともあるが、実施例２においては（ｓｋ，ｃ）のｃを、状態ｓｋのカウンタと呼ぶ場合もあるし、遷移回数と呼ぶこともある。
【０２５７】
カウンタと、カウンタ付き状態について、カウンタ付き状態を用いて記述されるオートマトンの状態遷移図（図１８）を用いて説明する。なお、以下の説明では特に断りのない限り、バッファサイズ（Ｎ）は２のケースを説明する。
【０２５８】
図１７のオートマトンＡにおいて、初期状態ｓ０から状態ｓ１に遷移するまでに要する遷移回数は１回なので、状態ｓ１のカウンタは上の式（７）に基づくと１である。そのため前置情報処理回路４はカウンタ付状態として（ｓ１，１）を定義する。
【０２５９】
加えて、図１７から分かる通り、オートマトンＡにおいて、状態がｓ１の時にシーケンスデータとして文字"ａ"が入力されると、状態は再びｓ１に遷移する（これはたとえば、状態がｓ０の時に文字"ａ"が２回連続して入力されたケースである）。この場合、２回の遷移の結果、状態ｓ１に遷移することを意味するので、遷移回数は２で、カウンタの値も２である。そのため前置情報処理回路４は、カウンタ付状態として（ｓ１，２）を定義する。
【０２６０】
さらに、オートマトンＡにおいて、状態がｓ０の時に文字"ａ"が３回連続して入力された場合、状態は再びｓ１に遷移する。この場合遷移回数は３回だが、バッファサイズが２であるため、カウンタの値は上の式（７）に基づくと１［（（３−１）  ｍｏｄ  ２）＋１＝１］である。そのため、オートマトンＡがとり得る状態ｓ１にカウンタを付して生成される新たな状態（カウンタ付き状態）としては、（ｓ１，１）と（ｓ１，２）の２つがある。
【０２６１】
同様に、オートマトンＡがとり得る状態ｓ２にカウンタを付して生成される新たな状態としては、（ｓ２，１）と（ｓ２，２）の２つがある。そのため、バッファサイズＮが２の時、前置情報処理回路４は図１７に示されたオートマトンＡに基づいて、５つのカウンタ付き状態（ｓ0，０）、（ｓ１，１）、（ｓ１，２）、（ｓ２，１）、（ｓ２，２）を定義する。カウンタ付き状態を定義した後、前置情報処理回路４は図１８に示すように、カウンタ付き状態を用いたオートマトンを定義する（ここで定義されるカウンタ付き状態を用いたオートマトンをＡ'と表記する）。
【０２６２】
図１８に示されたオートマトンＡ'は、各状態がカウンタ付状態である点が、図１７に示すオートマトンＡと異なるが、図１８に示されたオートマトンＡ'の状態遷移のルールは原則として、図１７に示すオートマトンＡと同じである。つまり前置情報処理回路４は図１７に示すオートマトンＡに基づいてオートマトンＡ'を定義する。たとえば図１７に示すオートマトンＡでは、状態ｓ１（（ｓ１，１）または（ｓ１，２））の時に文字"ｂ"が入力されると、状態はｓ２（（ｓ２，２）または（ｓ２，１））に遷移する。そのため前置情報処理回路４はオートマトンＡ'を定義する際、状態（ｓ１，１）または（ｓ１，２）の時に文字"ｂ"が入力されると、状態は（ｓ２，２）または（ｓ２，１）に遷移するように、オートマトンＡ'を定義する。
【０２６３】
次に前置情報処理回路４は図１８のオートマトンＡ'をもとにして、ムーアマシンを定義（生成）する。まず、ムーアマシンの取りうる状態（状態空間）の定義、遷移関数の定義方法について説明する。前置情報処理回路４によるムーアマシンの生成処理では、公知のサブセット構成法（パワーセット構成法とも呼ばれる）と類似した処理が行われる。サブセット構成法はたとえば特開２００９−５８９８９号公報などに示されているように公知の手法であるため、詳細な説明は略す。ここでは前置情報処理回路４が実行するムーアマシンの生成に関連する処理のみを説明する。
【０２６４】
サブセット構成法は、非決定的有限オートマトン（ＮＦＡ）を決定的有限オートマトン（ＤＦＡ）に変換（決定化と呼ばれる）する際に用いられる処理である。そのため前置情報処理回路４の生成するムーアマシンはＤＦＡである。よく知られているように、決定化では、非決定的有限オートマトン（ＮＦＡ）のある状態（またはある状態の集合）に対して入力文字ｘが与えられたときの遷移先の状態をすべて特定し、特定された状態の集合を決定的有限オートマトンの状態にする。前置情報処理回路４もこの決定化と同様の処理を行う。
【０２６５】
ただし前置情報処理回路４が行う決定化では、さきに述べた「特定された状態の集合」に、初期状態（ｓ０，０）を追加したものを、前置情報処理回路４の生成するムーアマシンＭＡ，Ｎの状態と定義する。また、入力文字セットはオートマトンＡ'の入力文字セットΣではなくΣ⊥を用いる。以下では、図１８と図１９を参照しながら、前置情報処理回路４によるムーアマシンＭＡ，Ｎの生成処理を説明する。
【０２６６】
図１８のオートマトンＡ'が初期状態（ｓ０，０）にあるときに入力文字ａが与えられると、カウンタ付き状態（ｓ１，１）に遷移し、それ以外の状態には遷移しない。そのため前置情報処理回路４は、初期状態（ｓ０，０）から（入力文字ａが与えられたときの）遷移先の状態の集合を｛（ｓ１，１），（ｓ０，０）｝と決定する（つまり、特定された遷移先状態（ｓ１，１）に（ｓ０，０）を加えたものが、遷移先の状態の集合になる）。以下ではこの状態の集合をｑ１'と表記する。また初期状態（ｓ０，０）はｑ０'と表記する（つまりｑ０'はムーアマシンＭＡ，Ｎの初期状態である）。また前置情報処理回路４は同様に、初期状態（ｓ０，０）にあるオートマトンＡ'に入力文字ｂが与えられた場合の遷移先の状態の集合、及び初期状態（ｓ０，０）にあるオートマトンＡ'に入力文字⊥が与えられた場合の遷移先の状態の集合、を特定する。図１８を参照すると、これらの場合に対応した遷移先の状態は存在しない。遷移先の状態が存在しない場合、先に述べた「特定された状態の集合」が空集合であることと等価である。この場合前置情報処理回路４は、空集合に初期状態（ｓ０，０）を追加して形成される状態の集合｛（ｓ０，０）｝（つまりｑ０'）を遷移先と決定する。そのため前置情報処理回路４は、初期状態（ｓ０，０）から（入力文字bが与えられたとき、及び入力文字⊥が与えられたときの）遷移先の状態の集合を｛（ｓ０，０）｝（＝ｑ０'）と決定する。
【０２６７】
続いて前置情報処理回路４は、状態の集合ｑ１'（＝｛（ｓ１，１），（ｓ０，０）｝）からの遷移先状態の集合を特定する。図１８の状態遷移図から分かるとおり、状態（ｓ１，１）にあるオートマトンＡ'に入力文字ａが与えられたときの遷移先状態は（ｓ１，２）で、状態（ｓ０，０）にあるオートマトンＡ'に入力文字ａが与えられたときの遷移先状態は（ｓ１，１）である。そのため前置情報処理回路４は、状態（ｓ１，１），（ｓ１，２）に状態（ｓ０，０）を加えてなる集合｛（ｓ１，１），（ｓ１，２），（ｓ０，０）｝を、状態の集合ｑ１'に入力文字ａが与えられたときの遷移先状態の集合と決定する。以下ではこの状態の集合｛（ｓ１，１），（ｓ１，２），（ｓ０，０）｝をｑ２'と表記する。同様に前置情報処理回路４は。状態の集合ｑ１'に入力文字ｂが与えられたときの遷移先状態の集合（これは図１９に示されたｑ3'である。なおｑ3'の要素は｛（ｓ２，２），（ｓ０，０）｝である）、入力文字⊥が与えられたときの遷移先状態の集合（これはｑ０'になる）を決定する。
【０２６８】
前置情報処理回路４はこれらの処理を繰り返すことで、ムーアマシンＭＡ，Ｎの各状態及び状態遷移を決定する。決定されたムーアマシンＭＡ，Ｎの各状態及び状態遷移を図に表したものが図１９である。そして前置情報処理回路４は、決定された各状態及び状態遷移をＲＡＭ２２に記憶する。ＲＡＭ２２に記憶された、ムーアマシンＭＡ，Ｎの各状態及び状態遷移の例を図２０、図２１に示す。図２０は図１８のオートマトンＡ'に基づいて前置情報処理回路４が生成したムーアマシンＭＡ，Ｎの状態遷移表（図１９の状態遷移図と等価なものである）を示し、図２１はムーアマシンＭＡ，Ｎの状態管理テーブルである。
【０２６９】
図２１に示すように、状態管理テーブルは、「状態」、「部分集合」、「Ｃｕｒｒｅｎｔ」のカラムを有する。カラム「状態」には、ムーアマシンＭＡ，Ｎの取り得る状態の一覧が格納される。カラム「部分集合」の各行には、ムーアマシンＭＡ，Ｎの状態に含まれる要素（具体的には、オートマトンＡ'の１または複数の状態（カウンタ付き状態）である）が格納される。カラム「Ｃｕｒｒｅｎｔ」は、ムーアマシンの現時点の状態を記憶するための領域であり、詳細は後述するが、カラム「Ｃｕｒｒｅｎｔ」に"１"が格納されている行に対応する状態が、ムーアマシンの現時点の状態である。
【０２７０】
図２０の状態遷移表は、ムーアマシンＭＡ，Ｎの状態遷移のルール（遷移関数）を表す。状態遷移表は複数の行を有し、各行（δ０〜δ１１と表記する）はムーアマシンＭＡ，Ｎの遷移の仕様を表す。図２０に示されるように、状態遷移表の各行は、「遷移前状態」、「遷移後状態」、「入力」の欄を有する。たとえば状態遷移表の一番上の行（遷移δ０の仕様を記述した行）について、「遷移前状態」、「遷移後状態」、「入力」にはそれぞれ、"ｑ０'"、"ｑ１'"、"ａ"が格納されている。これは遷移前の状態がｑ０'の場合、入力文字列"ａ"が与えられると遷移後の状態がｑ１'になることを表す。
【０２７１】
ムーアマシンＭＡ，Ｎの状態遷移表と状態管理テーブルは、ＲＡＭ２２の非バッファ２２ｂに格納される。なお、前置情報処理回路４が生成する状態遷移表と状態管理テーブルは、ここで説明した情報以外の情報を含んでいてもよい。また、図２０、図２１に示された状態遷移表と状態管理テーブルは一例であり、前置情報処理回路４は必ずしも図２０、図２１に示されたフォーマットで情報を作成しなければならないわけではない。前置情報処理回路４はムーアマシンＭＡ，Ｎの動作（状態遷移）に必要な情報を、図２０、図２１に示されたフォーマットとは異なるフォーマットで記憶領域（ＲＡＭ２２など）に記憶してもよい。
【０２７２】
ムーアマシンＭＡ，Ｎの動作には、状態の定義、遷移関数の定義の他、出力関数の定義が必要だが、出力関数の詳細は後述する。また、実施例２に係るムーアマシンＭＡ，Ｎが動作する際、バッファ２２ａの内容の操作も行われるが、これについても後述する。
【０２７３】
続いて、前置情報処理回路４の有する各機能ブロックの説明を行う。図２２は、前置情報処理回路４の有する各機能ブロックを表した図である。図２２に示されているように、前置情報処理回路４は、生成モジュール２２ｍ１、フィルタモジュール２２ｍ２、ムーアマシンモジュール２２ｍ３の処理モジュール（機能ブロック）を有する。これらの機能ブロックは、ＣＰＵ２０が前置情報処理回路４の有する各プログラムを実行することによって実現される。具体的には、生成モジュール２２ｍ１は、ＣＰＵ２０が生成プログラム２２ｐ１を実行することによって実現される機能ブロックである。フィルタモジュール２２ｍ２は、ＣＰＵ２０がメインプログラム２２ｐ２を実行することによって実現される機能ブロックである。ムーアマシンモジュール２２ｍ３は、ＣＰＵ２０がサブプログラム２２ｐ３を実行することによって実現される機能ブロックである。
【０２７４】
フィルタモジュール２２ｍ２とムーアマシンモジュール２２ｍ３が、データ加工処理（フィルタリング処理）を実行する機能ブロックで、生成モジュール２２ｍ１はムーアマシンモジュール２２ｍ３（サブプログラム２２ｐ３）を生成するための機能ブロックである。生成モジュール２２ｍ１は、フィルタモジュール２２ｍ２からの指示を受け付けることによって、ムーアマシンモジュール２２ｍ３を生成する。ムーアマシンモジュール２２ｍ３は、フィルタモジュール２２ｍ２からの指示に基づいて、上で説明した有限状態機械(ムーアマシン)としての動作を行う。具体的には、フィルタモジュール２２ｍ２からシーケンスデータ（文字列）を一単位ずつ（１文字ずつ）受信し、それに応じて状態の遷移と情報の出力を行う。生成モジュール２２ｍ１、フィルタモジュール２２ｍ２、ムーアマシンモジュール２２ｍ３の処理の詳細は、以下で説明する。
【０２７５】
続いて、前置情報処理回路４によって行われるフィルタリング処理の流れを説明する。以下では、前置情報処理回路４はシーケンスデータとして、タイムスタンプの付与されていない１バイト文字のシーケンス（文字列）を１バイトずつ受信する受け取る例を説明する。
【０２７６】
図２３、図２４は、前置情報処理回路４が実行するデータ加工処理（フィルタリング処理）のフローチャートである。図２３のフローチャートは、フィルタリング処理の全体の流れを示している。図２４は、図２３のフローチャートの一部（ステップＳ１０３）の処理を詳述したフローチャートである。
【０２７７】
まず図２３を参照しながら、フィルタリング処理の全体の流れを説明する。フィルタリング処理はたとえば、前置情報処理回路４が操作部２３を介してユーザからの処理開始指示を受け付けた場合、または前置情報処理回路４が入力インターフェース２５を介して外部の装置からの処理開始指示を受け付けた場合に実行される。フィルタリング処理が開始されると、フィルタモジュール２２ｍ２は、マッチング条件を操作部２３または入力インターフェース２５を介して受け取り、受け取ったマッチング条件からムーアマシンを生成する（図２３  ステップＳ１０１）。なお、ステップＳ１０１において、フィルタモジュール２２ｍ２は生成モジュール２２ｍ１に、ムーアマシンモジュール２２ｍ３の生成を行わせる。生成モジュール２２ｍ１は、上で述べたようなムーアマシンの状態の定義、遷移関数の定義を行う（つまり生成モジュール２２ｍ１は、ＣＰＵ２０が実行するプログラムコードだけでなく、上で説明した状態管理テーブルなどの情報（ムーアマシンの動作に必要な情報）も生成する）。
【０２７８】
ムーアマシンの状態の定義、遷移関数の定義は、上で図１７〜図２１を用いて説明したとおりである。生成モジュール２２ｍ１は状態の定義結果として図２１に示されるような状態管理テーブルを生成し、非バッファ２２ｂに格納する（状態管理テーブルの生成直後は、ムーアマシン（ムーアマシンモジュール２２ｍ３）は初期状態にあるので、生成モジュール２２ｍ１はカラム「Ｃｕｒｒｅｎｔ」の要素のうち、初期状態（ｑ０'）に対応する行（図２１の一番上の行）の「Ｃｕｒｒｅｎｔ」の値が１で、それ以外の行については「Ｃｕｒｒｅｎｔ」の値を０に設定した状態管理テーブルを生成する）。生成モジュール２２ｍ１は遷移関数の定義の結果として、図２０に示されるような状態遷移表を生成し、非バッファ２２ｂに格納する。また、生成モジュール２２ｍ１はバッファ２２ａを作成する。具体的には生成モジュール２２ｍ１は、ＲＡＭ２２上に、図１６に示すようなＮ個のメモリブロックを有する領域を確保し、そしてこのＮ個のメモリブロックのデータ領域とフラグ領域を初期化する（すべてのメモリブロックのフラグ領域にフラグ"ｍａｓｋ"、つまり０が格納され、また全てのメモリブロックのデータ領域にはブロック文字⊥が格納される）。また、出力関数の定義については後述する。
【０２７９】
なお、フィルタモジュール２２ｍ２は、必ずしもステップＳ１０１でマッチング条件を受け取らなくてもよい。たとえば、前置情報処理回路４に、所定のマッチング条件に基づいて生成されたムーアマシン（ムーアマシンモジュール２２ｍ３）があらかじめ実装されていてもよい。その場合、フィルタモジュール２２ｍ２はフィルタリング処理を実行するときには、この予め実装されているムーアマシンを実行するとよい。ムーアマシンがあらかじめ実装されている場合、前置情報処理回路４はステップＳ１０１を実行する必要はなく、また前置情報処理回路４は生成モジュール２２ｍ１を有していなくてよい。
【０２８０】
続いて、ステップＳ１０２において、フィルタモジュール２２ｍ２は入力インターフェース２５を介してシーケンスデータを受信する。ステップＳ１０２が１回実行されるたびに、前置情報処理回路４はシーケンスデータの一単位分のデータ（ここでは１バイトの文字）を受領する。
【０２８１】
続いてフィルタモジュール２２ｍ２はムーアマシンモジュール２２ｍ３を呼び出し、ステップＳ１０２で受領したデータ（１バイトの文字）をムーアマシンモジュール２２ｍ３に渡すことで、ムーアマシンＭＡ，Ｎを用いた処理を行わせる（ステップＳ１０３）。ステップＳ１０３の処理の詳細は後述するが、ステップＳ１０３が一回実行されるとムーアマシンモジュール２２ｍ３はバッファ２２ａの末尾のメモリブロックに格納されているデータを出力する。フィルタモジュール２２ｍ２はムーアマシンモジュール２２ｍ３から出力されたデータを、出力インターフェース２６を介して外部の装置に出力する。
【０２８２】
続いてフィルタモジュール２２ｍ２は、シーケンスデータの入力が終了したか（文字列の終端文字まで受け付けが完了したか）判定する（ステップＳ１０４）。シーケンスデータの入力が終了したか否かは、たとえば入力インターフェース２５から通知される。ただしフィルタモジュール２２ｍ２はこれ以外の方法で、シーケンスデータの入力が終了したか否かを検出してもよい。シーケンスデータの入力が終了していないと判断された場合（ステップＳ１０４：ＮＯ）、フィルタリング処理はステップＳ１０２に戻る。シーケンスデータの入力が終了したと判断された場合（ステップＳ１０４：ＹＥＳ）、フィルタモジュール２２ｍ２はブロック文字⊥をムーアマシンモジュール２２ｍ３に渡す処理をＮ回行う（ステップＳ１０５）。先に述べた通り、Ｎはバッファサイズである。そのため、バッファサイズ（Ｎ）が２の場合、ステップＳ１０５では実質的にステップＳ１０３が２回行われる。ステップＳ１０５の後、フィルタリング処理は終了する。
【０２８３】
先にも述べたが、ステップＳ１０３が実行されると、ムーアマシンモジュール２２ｍ３に渡されたデータ（１バイトの文字）がバッファ２２ａのメモリブロック（のデータ領域）に入力されるとともに、バッファ２２ａの末尾のメモリブロックに格納されていたデータが出力される。そのため、ステップＳ１０５が実行されると、バッファ２２ａのＮ個のメモリブロックに格納されていたデータがすべて出力される。つまりステップＳ１０５は、ステップＳ１０５の実行前にバッファ２２ａのメモリブロックに格納されていた（残留している）データをすべて出力させるために行われる。
【０２８４】
続いてステップＳ１０３で行われる処理の詳細を、図２４を用いて説明する。図２４の処理は、ムーアマシンモジュール２２ｍ３によって実行される。ムーアマシンモジュール２２ｍ３は、フィルタモジュール２２ｍ２からデータを受け取るたびにムーアマシン（ムーアマシンモジュール２２ｍ３）の状態の遷移、バッファ２２ａの内容の更新を行う。なお、以下の説明では、バッファサイズＮは２（バッファ２２ａが有するメモリブロックの数は２）とする。
【０２８５】
ムーアマシンモジュール２２ｍ３はフィルタモジュール２２ｍ２からデータ（１バイトの文字）を受け取ると、バッファ２２ａの末尾のメモリブロック（２２ａ−Ｎ）のデータ領域に格納されていたデータを取り出すとともに、バッファ２２ａの末尾のメモリブロック（２２ａ−Ｎ）のフラグ領域に格納されているフラグがｍａｓｋか否か判定する（ステップＳ２０１）。メモリブロック（２２ａ−Ｎ）のフラグがｍａｓｋでない場合、つまりフラグがｐａｓｓの場合には（ステップＳ２０１：ＮＯ）、ムーアマシンモジュール２２ｍ３はメモリブロック（２２ａ−Ｎ）のデータ領域に格納されているデータを、（変更することなしに）フィルタモジュール２２ｍ２に出力する（ステップＳ２０２）。ムーアマシンモジュール２２ｍ３からデータを受領したフィルタモジュール２２ｍ２は、出力インターフェース２６を介してそのデータを外部に出力する。逆にメモリブロック（２２ａ−Ｎ）のフラグがｍａｓｋであった場合（ステップＳ２０１：ＹＥＳ）、ムーアマシンモジュール２２ｍ３は取り出されたデータをブロック文字⊥に変更し、変更されたデータ（ブロック文字⊥）をフィルタモジュール２２ｍ２に出力する（ステップＳ２０３）。フィルタモジュール２２ｍ２はムーアマシンモジュール２２ｍ３から受領したブロック文字⊥を、出力インターフェース２６を介して外部に出力する。
【０２８６】
ステップＳ２０４ではムーアマシンモジュール２２ｍ３は、フィルタモジュール２２ｍ２から受け取ったデータをバッファ２２ａの先頭のデータ領域に格納する。なお、先に述べた通り、バッファ２２ａの先頭にデータが格納される前に、バッファ２２ａの各メモリブロック（２２ａ−１，２２ａ−２，...２２ａ−（Ｎ−１））内のデータ及びフラグはそれぞれ、左隣のメモリブロック（２２ａ−２，２２ａ−３，...２２ａ−Ｎ）に移される。つまりバッファ２２ａはＦＩＦＯとして動作する。
【０２８７】
続いてムーアマシンモジュール２２ｍ３は、非バッファ２２ｂに格納されている状態遷移表や状態管理テーブルを用いて、ムーアマシン（ムーアマシンモジュール２２ｍ３）の状態遷移を実行する（ステップＳ２０５）。以下では、図２０に示した状態遷移表と図２１に示した状態管理テーブルが、非バッファ２２ｂに格納されている場合の例を説明する。
【０２８８】
図２１の状態管理テーブルにおいて、カラム「Ｃｕｒｒｅｎｔ」には、現在のムーアマシンモジュール２２ｍ３の状態が記録される。カラム「Ｃｕｒｒｅｎｔ」の各要素には、０または１のいずれかの値が格納される。カラム「Ｃｕｒｒｅｎｔ」の値が"１"の行に対応する状態が現在の状態である。図２１ではカラム「状態」がｑ１'の行について、カラム「Ｃｕｒｒｅｎｔ」の値が"１"であるので、図２１の状態管理テーブルは現在の状態がｑ１'であることを表している。
【０２８９】
ムーアマシンモジュール２２ｍ３は、上に述べたような要領で現在のムーアマシンモジュール２２ｍ３の状態を特定すると、次に図２０の状態遷移表と、フィルタモジュール２２ｍ２から受け取ったデータ（以下ではこれを「入力文字」と呼ぶ）とに基づいて、遷移先の状態を決定する。現在の状態が図２１の状態管理テーブルに示されるようにｑ１'で、入力文字が"ｂ"であった場合、図２０の状態遷移表を参照することで、遷移後の状態はｑ３'になることが分かる。そこで、ムーアマシンモジュール２２ｍ３は、図２１の状態管理テーブルのカラム「Ｃｕｒｒｅｎｔ」を書き換えることで、現在の状態をｑ３'に変更する。具体的にはムーアマシンモジュール２２ｍ３は、「状態」がｑ１'の行のカラム「Ｃｕｒｒｅｎｔ」の値を"０"に変更し、「状態」がｑ３'の行のカラム「Ｃｕｒｒｅｎｔ」の値を"１"に変更する。
【０２９０】
ステップＳ２０６ではムーアマシンモジュール２２ｍ３は、バッファ２２ａの先頭のメモリブロック（図１６の２２ａ−１）のフラグ領域を"ｍａｓｋ"に変更する。
【０２９１】
ステップＳ２０７ではムーアマシンモジュール２２ｍ３は、ムーアマシンモジュール２２ｍ３の現在の状態に含まれるオートマトンＡ（またはオートマトンＡ'）の１または複数の状態（以下ではこれを「状態部分集合」と呼ぶ）の中に、カウンタの値がＮ（バッファサイズ）と等しい状態があるか判定する。「状態部分集合」とは、図２１の状態管理テーブルのカラム「部分集合」に格納されている要素（オートマトンＡ'の１または複数のカウンタ付き状態）のことである。たとえば、現在のムーアマシンモジュール２２ｍ３の状態（ステップＳ２０５実行後の状態）がｑ３'である場合について説明する。図２１の状態管理テーブルのカラム「状態」がｑ３'の行について、カラム「部分集合」の内容は｛（ｓ０，０），（ｓ２，２）｝であるから、現在のムーアマシンモジュール２２ｍ３の状態ｑ３'の状態部分集合は｛（ｓ０，０），（ｓ２，２）｝である。この状態部分集合に含まれる状態（カウンタ付き状態）のうち、状態（ｓ２，２）のカウンタの値は２である（つまりバッファサイズＮと等しい）。このような場合（ステップＳ２０７：ＹＥＳ）には、ムーアマシンモジュール２２ｍ３はバッファ２２ａの全メモリブロックのフラグ領域を"ｐａｓｓ"に変更する（ステップＳ２０８）。逆に、状態部分集合の中に、カウンタの値がＮである状態が無い場合（ステップＳ２０７：ＮＯ）、ステップＳ２０８は実行されない。たとえば現在のムーアマシンモジュール２２ｍ３の状態がｑ１'の場合、状態ｑ１'の状態部分集合は｛（ｓ０，０），（ｓ１，１）｝であるから、カウンタの値がＮである状態は存在しない。このような場合にはステップＳ２０８は実行されない。
【０２９２】
ステップＳ２０９ではムーアマシンモジュール２２ｍ３は、ムーアマシンモジュール２２ｍ３の現在の状態の状態部分集合が、ムーアマシンモジュール２２ｍ３の元となるオートマトン（本実施例の場合にはオートマトンＡ）の受理状態を要素として有しているか判定する（つまり状態部分集合の中に、受理状態（図２０、図２１の例ではｓ２（（ｓ２，１）または（ｓ２，２））が受理状態である）が含まれているか判定する）。ムーアマシンモジュール２２ｍ３の現在の状態の状態部分集合が、（ムーアマシンモジュール２２ｍ３の元となるオートマトンの）受理状態を要素として有する場合には（ステップＳ２０９：ＹＥＳ）、処理はステップＳ２１０に進む。受理状態が状態部分集合に含まれていない場合には（ステップＳ２０９：ＮＯ）、ムーアマシンモジュール２２ｍ３はステップＳ２１０を実行せずに、ムーアマシンモジュール２２ｍ３の処理を終了する。
【０２９３】
ステップＳ２１０でムーアマシンモジュール２２ｍ３は、状態部分集合の中に含まれる受理状態に対応するカウンタの値をすべて特定し、それらのカウンタ値の最大値（以下ではこの最大値をＭと表記する）を求める。そしてムーアマシンモジュール２２ｍ３は、バッファ２２ａの全メモリブロックのうち、先頭からＭ個のメモリブロックのフラグ領域を"ｐａｓｓ"に変更する。たとえば、現在のムーアマシンモジュール２２ｍ３の状態（ステップＳ２０５実行後の状態）がｑ４'である場合、ｑ４'の状態部分集合の中には、状態（ｓ２，１）、（ｓ２，２）が含まれている。そのため、受理状態に対応するカウンタ値の最大値Ｍは２と決定される。この場合ムーアマシンモジュール２２ｍ３は、バッファ２２ａの全メモリブロックのうち、先頭から２個のメモリブロックのフラグ領域を"ｐａｓｓ"に変更する。
【０２９４】
ステップＳ２１０の後、ムーアマシンモジュール２２ｍ３は処理を終了し、フィルタモジュール２２ｍ２はステップＳ１０３の直後から処理を再開する。
【０２９５】
図２４のフローチャートにおいて、ステップＳ２０１〜ステップＳ２０３が、ムーアマシンＭＡ，Ｎの出力関数の動作である。ステップＳ２０１〜ステップＳ２０３は、先に述べた３．２節の式（６）に示された動作が行われている。式（６）においてａ１とｌ１はそれぞれ、バッファ部２２ａの末尾のメモリブロック２２ａ−Ｎが有するデータ領域の内容とフラグ領域の内容を表している。式（６）によれば、ｌ１が"ｐａｓｓ"であれば（図２４のステップＳ２０１の判定がＮＯの場合）、ａ１が出力される（図２４のステップＳ２０２）。逆にｌ１が"ｍａｓｋ"であれば（図２４のステップＳ２０１の判定がＹＥＳの場合）、ブロック文字が出力される（図２４のステップＳ２０３）。
【０２９６】
また、図２４のフローチャートにおいて、ステップＳ２０６〜ステップＳ２１０が実行されることで、先に述べた３．２節の式（５）に相当する処理が行われる。
【０２９７】
以上説明したように、図２４のサブプログラム２２ｐ３（または図２２のムーアマシンモジュール２２ｍ３と言ってもよい）が実行されることによって、ムーアマシンの動作（状態遷移）が実現されるとともに、バッファ部２２ａの内容のデータを書き換えが行われる。また同時に、入力されるシーケンスデータの中で、マッチング条件に適合しないことが明らかなデータをマスクした（ブロック文字に置き換えた）データを出力することができる。
【０２９８】
なお、上では前置情報処理回路４が、タイムスタンプの付与されていない文字列（シーケンスデータ）を受け取り、受け取った文字列のフィルタリングを行う例を説明した。つまり、前置情報処理回路４で動作するムーアマシン（ムーアマシンモジュール２２ｍ３）は、本明細書の３．２節で説明したものと同様のものであった。しかし、前置情報処理回路４で動作するムーアマシンはこれに限られない。たとえば本明細書の４．３節で説明した定義に従うムーアマシンも前置情報処理回路４で動作可能である。具体的には、タイムスタンプの付与された文字列（シーケンスデータ）についてパターンマッチングを行う場合には、前置情報処理回路４は本明細書の４．３節で説明した定義に従うムーアマシン（以下ではこれを「実時間制約付きムーアマシン」と呼ぶ）を動作させることで、パターンマッチングを行う。
【０２９９】
実時間制約付きムーアマシンによるフィルタリング処理は、上で説明したフィルタリング処理と概ね同様である。以下では実時間制約付きムーアマシンによるフィルタリング処理と、上で説明したフィルタリング処理の違いを主に説明し、両者に共通する説明は略す。
【０３００】
本明細書の４．３節で説明したように、実時間制約付きムーアマシンでは状態空間のバッファ部分にフラグのみが格納される。そのため、前置情報処理回路４が実時間制約付きムーアマシンを動作させる場合には、前置情報処理回路はデータ領域を持たないバッファ２２ａを定義する（図１６に示すバッファ２２ａから行２２１ａが除去されたバッファが定義される）。
【０３０１】
また実時間制約付きムーアマシンが動作する場合には、バッファ２２ａにデータが格納されないため、上で説明したムーアマシンモジュール２２ｍ３の処理と若干異なる処理が実行される。図２５、図２６に示すフローチャートを用いて、前置情報処理回路４が実時間制約付きムーアマシンを動作させる場合の処理の流れを説明する。
【０３０２】
まず、実時間制約付きムーアマシン（以下では単に「ムーアマシン」と呼ぶこともある）の処理の流れを図２６を用いて説明する。図２６の処理の多くは図２４と共通しているので、以下では図２６の各ステップのうち図２４と異なる点を主に説明する。
【０３０３】
図２６に示されているとおり、実時間制約付きムーアマシンは図２４のステップＳ２０１〜Ｓ２０３に代えて、ステップＳ２０２０を実行する。つまり、ムーアマシンはフィルタモジュール２２ｍ２からデータ（１バイトの文字）を受け取ると、図２４に示されているような処理（たとえばＳ２０１のフラグの内容の判定処理）は行わず、バッファ２２ａの末尾のメモリブロック（２２ａ−Ｎ）のフラグ領域に格納されているフラグを出力する（ステップＳ２０２０）。ステップＳ２０５以降の処理は、図２４の処理と同じであるので、説明を略す。
【０３０４】
実時間制約付きムーアマシンはバッファ２２ａにデータ領域を持たないため、図２４に示した処理とは異なり、データ領域に含まれているデータの変換、データの出力は行わない。データの変換や出力は、前置情報処理回路４のフィルタモジュール２２ｍ２が行う。
【０３０５】
図２５を用いて、実時間制約付きムーアマシンによるフィルタリング処理が実行されるときのフィルタモジュール２２ｍ２の処理を説明する。まず最初に、フィルタモジュール２２ｍ２は生成モジュール２２ｍ１に、ムーアマシンを生成させる（ステップＳ１０１０）。この処理は図２３のステップＳ１０１と同様であるが、生成されるムーアマシンが実時間制約付きムーアマシンである点が、図２３のステップＳ１０１と異なる。またステップＳ１０１０でフィルタモジュール２２ｍ２は、入力インターフェース２５を介して受信するデータを一時的に保存するための記憶領域を、ＲＡＭ２２上に確保する。フィルタモジュール２２ｍ２が確保する記憶領域はＦＩＦＯバッファであり、またこのＦＩＦＯバッファは（Ｎ＋１）個のメモリブロックを有し、各メモリブロックは１文字分のデータ（入力インターフェース２５を介して受信されるデータ）を格納可能なサイズである。
【０３０６】
続いてフィルタモジュール２２ｍ２は入力インターフェース２５を介してシーケンスデータを受信する(ステップＳ１０２０)。ステップＳ１０２０は図２３のステップＳ１０２と同様の処理である。ただしステップＳ１０２０では、フィルタモジュール２２ｍ２は受信したシーケンスデータをステップＳ１０１０で確保したＦＩＦＯバッファに格納する処理も行う。
【０３０７】
次に、フィルタモジュール２２ｍ２はステップＳ１０２０で受領したデータ（１バイトの文字）をムーアマシン（実時間制約付きムーアマシン）に渡す。実時間制約付きムーアマシンはこれに応じて図２６に示す処理を実行する（ステップＳ１０３０）。先に述べたとおり、実時間制約付きムーアマシンが図２６に示す処理を実行すると、バッファ２２ａの末尾のメモリブロック（２２ａ−Ｎ）のフラグ領域に格納されているフラグ（ｐａｓｓまたはｍａｓｋ）を出力する。
【０３０８】
次に、フィルタモジュール２２ｍ２はステップＳ１０２０及びステップＳ１０３０の処理がＮ回実行されたか判定する。先に述べた通り、Ｎはバッファサイズである。ステップＳ１０２０、ステップＳ１０３０の処理がまだＮ回実行されていない場合（ステップＳ１０４０：ＮＯ）、処理はステップＳ１０２０に戻る。ステップＳ１０２０、ステップＳ１０３０の処理がＮ回実行された場合には（ステップＳ１０４０：ＹＥＳ）、フィルタモジュール２２ｍ２はステップＳ１０５０以降の処理を実行する。
【０３０９】
ステップＳ１０５０ではフィルタモジュール２２ｍ２は、入力インターフェース２５を介してシーケンスデータを受信する。これはステップＳ１０２０と同様の処理である。ステップＳ１０５０ではフィルタモジュール２２ｍ２は、ステップＳ１０５０で受領したデータ（１バイトの文字）をムーアマシンに渡す。つまりステップＳ１０５０はステップＳ１０３０と同様の処理である。
【０３１０】
先に述べた通り、ステップＳ１０６０が実行されることによりムーアマシンはフラグ（ｐａｓｓまたはｍａｓｋ）を出力する。ステップＳ１０７０でフィルタモジュール２２ｍ２は、ムーアマシンの出力がｐａｓｓか否か判定する。ムーアマシンの出力がｐａｓｓの場合（ステップＳ１０７０：ＹＥＳ）、フィルタモジュール２２ｍ２はＦＩＦＯバッファの末尾に格納された１文字分のデータを、出力インターフェース２６を介して外部の装置に出力する（ステップＳ１０８０）。ステップＳ１０８０では（Ｎ＋１）個の要素（メモリブロック）を有するＦＩＦＯバッファの末尾に格納されたデータが出力されるので、たとえばステップＳ１０５０が（Ｎ＋１）回目のデータ受信処理であった場合、ステップＳ１０８０では１回目に受信したデータが出力される。一方、ステップＳ１０７０でムーアマシンの出力がｍａｓｋの場合（ステップＳ１０７０：ＮＯ）、フィルタモジュール２２ｍ２はブロック文字⊥を出力インターフェース２６を介して外部の装置に出力する（ステップＳ１０９０）。
【０３１１】
続いてフィルタモジュール２２ｍ２は、シーケンスデータの入力が終了したか（文字列の終端文字まで受け付けが完了したか）判定する（ステップＳ１１００）。ステップＳ１１００の処理は、図２３のステップＳ１０４と同様である。シーケンスデータの入力が終了していないと判断された場合（ステップＳ１１００：ＮＯ）、処理はステップＳ１０５０に戻る。シーケンスデータの入力が終了したと判断された場合（ステップＳ１１００：ＹＥＳ）、次にステップＳ１１００が行われる。
【０３１２】
ステップＳ１１１０では、フィルタモジュール２２ｍ２はブロック文字⊥をムーアマシンに渡す。これによりムーアマシンのバッファ２２ａからフラグが出力される。続いてステップＳ１１２０では、ステップＳ１１００でムーアマシンから出力されたフラグの状態（ｐａｓｓあるいはｍａｓｋ）に基づいて、ステップＳ１０７０〜ステップＳ１０９０の処理を行う。
【０３１３】
続いてフィルタモジュール２２ｍ２は、ステップＳ１１１０及びＳ１１２０の処理がＮ回行われたか判定し（ステップＳ１１３０）、ステップＳ１１１０及びＳ１１２０の処理がＮ回行われた場合には（ステップＳ１１３０：ＹＥＳ）、処理を終了する。ステップＳ１１１０及びＳ１１２０の処理がまだＮ回行われていない場合には（ステップＳ１１３０：ＮＯ）、フィルタモジュール２２ｍ２は再びステップＳ１１１０を実行する。
【０３１４】
ステップＳ１１１０〜Ｓ１１３０の処理は、図２３のステップＳ１０５と同様の目的で行われる。つまり、ステップＳ１１１０実行直前の時点では、バッファ２２ａのメモリブロックにＮ個の（未出力の）フラグが残されているので、フィルタモジュール２２ｍ２はステップＳ１１１０〜Ｓ１１３０の処理をＮ回実行することで、バッファ２２ａのメモリブロックに残留しているフラグを出力させ、出力されたフラグに基づいて、フィルタモジュール２２ｍ２が外部装置に出力すべきデータを決定する。
【０３１５】
上で説明した通り、実施例２に係る前置情報処理回路４は、入力されるシーケンスデータの中で、マッチング条件に明らかに一致しないデータを除去するように加工されたデータを出力することができる。ただし実施例２に係る前置情報処理回路４では、入力されるシーケンスデータ中のあるデータ列（たとえば文字列）が実際にはマッチング条件に一致しないが、そのデータ列（文字列）マッチング条件に一致するかしないか不確かである場合には、そのデータ列を除去せずに（何の加工も施さずに）出力する。
【０３１６】
このケースは、たとえば図２４のステップＳ２０７の判定がＹＥＳの場合に発生し得る。図１７〜図２１、図２４を用いて例を説明する。たとえば図１７に示されたオートマトンＡに基づいて生成されたムーアマシン（図２１に示されたｑ０'〜ｑ４'の５状態を有し、図２０（または図１９）に示されたルールで状態遷移するムーアマシン）で、かつバッファサイズが２のムーアマシンを想定する。このようなムーアマシンの現在の状態がｑ２'の時、状態ｑ２'の状態部分集合は｛（ｓ０，０），（ｓ１，１），（ｓ１，２）｝である。この場合、図２４（とくにステップＳ２０７，Ｓ２０８）から分かるとおり、この時点でバッファ２２ａ内に格納されているデータはそのまま（ブロック文字に変換されることなく）出力される。ステップＳ２０８で、バッファ２２ａの全メモリブロックのフラグ領域を"ｐａｓｓ"に変更されるからである。しかしながらこの時の状態部分集合は、受理状態（ｓ２）を要素として含んでいないため、バッファ２２ａ内に格納されているデータ列は、図１７に示されたオートマトンＡとして記述されているマッチング条件の一部に合致しているが、必ずしもこのマッチング条件の全体に合致しているか否か、確かではない。このような場合、実施例２に係る前置情報処理回路４はバッファ２２ａ内に格納されているデータをそのまま（ブロック文字に変換されることなく）出力するので、マッチング条件に合致する可能性があるデータを除去してしまうことがない。
【０３１７】
また、上では前置情報処理回路４が、マッチング条件に明らかに一致しないデータを除去するために、マッチング条件に明らかに一致しないデータをブロック文字⊥に変換する例を説明したが、マッチング条件に明らかに一致しないデータを除去する方法はこれに限定されない。たとえば前置情報処理回路４が、入力されるシーケンスデータのうち、マッチング条件に明らかに一致しないデータをブロック文字⊥に変換した結果、変換後のデータ列のなかにブロック文字⊥が複数回連続して出現する文字列が含まれていた場合には、たとえば前置情報処理回路４はこの文字列を「ブロック文字⊥とその出現回数」の組に変換してから外部の装置に出力してもよい。具体的には、前置情報処理回路４が、上で説明した処理（図２３，図２４）を行うことにより、文字列"ａｂｂｂｂｂｂ"を"ａｂ⊥⊥⊥⊥⊥"に変換した後、"ａｂ⊥⊥⊥⊥⊥"を"ａｂ⊥５"と変換して、外部の装置に出力してもよい（つまり、"⊥５"は、ブロック文字⊥が５文字連続していることを表す）。このような変換を行うことで、データサイズが実質的に圧縮されるため、外部の装置に出力されるデータ量を削減することができる。
【０３１８】
図２７は実施例２に係る前置情報処理回路４を構成するときの、リアルタイムオートマトンの決定化処理を示すフローチャートである。
【０３１９】
図２７のステップＳ６１〜Ｓ６３において、オートマトンにおける状態ｓ０ｄから状態空間Ｓ０への定義、現在の状態空間Ｓｃｕｒｒｄ及び状態空間Ｓｄの初期化、並びに出力関数Λｒｄの初期化の処理を行う。ステップＳ６４〜Ｓ７５において、現在の状態空間Ｓｃｕｒｒｄが空でないときにステップＳ６７〜Ｓ７４の処理を実行する。また、ステップＳ６５〜Ｓ７２において、各状態ｓｄ∈ＳｃｕｒｒｄについてステップＳ６７〜Ｓ６９の処理を実行する。さらに、ステップＳ６６〜Ｓ７１において、各文字ａ∈Σについて、ステップＳ６７〜Ｓ６９の処理を実行する。またさらに、ステップＳ６８〜Ｓ７０において、各区間Ｉ'∈Ｊについて（なお、ＪはステップＳ６７に示すように、区間の集合の最疎分割である）ステップＳ６９の処理を実行する。ステップＳ７６において、フィルタリング結果の状態空間ＳＦｄを状態空間Ｓｄの部分集合であって、フィルタリング結果の状態空間ＳＦとの交叉が非空であるものと定義して当該決定化処理を終了する。
【０３２０】
以上説明したように、図２７の決定化処理を実行することで、非決定的リアルタイムタイムを、決定的オートマトンに変換することができる。
【０３２１】
図２８は実施例２に係る前置情報処理回路４を構成するときの、実時間制約付きオートマトンをリアルタイムオートマトンに近似させる近似処理を示すフローチャートである。なお、パラメータの上付き文字のｒｔリアルタイムタイムのパラメータを表す。
【０３２２】
図２８のステップＳ８１〜Ｓ８２において、オートマトンにおける状態ｓ０ｒｔの定義、状態空間Ｓｒｔ，Ｓｒｔｃｕｒｒの初期化処理を行う。ステップＳ８３〜Ｓ９９において、現在の状態空間Ｓｒｔｃｕｒｒが空でないときにステップＳ８４〜Ｓ９８の処理を実行する。また、ステップＳ８５〜Ｓ９６において、各（ｓ，Ｚ）∈ＳｒｔｃｕｒｒについてステップＳ８７〜Ｓ９４の処理を実行する。さらに、ステップＳ８６〜Ｓ９５において、各（ｓ；ａ；δ，λ，ｓ'）∈Σについて、ステップＳ８７〜Ｓ９４の処理を実行する。なお、ステップＳ８７におけるｕｐ（Ｚ）は時間経過を表す。また、ステップＳ８９におけるｒｅｓｅｔ（Ｚ'，λ）はλに含まれるクロック変数の初期化を表す。さらに、ステップＳ９４等におけるＳｒｔｎｅｘｔはリアルタイムの状態空間Ｓｒｔの次に追加すべき次の状態空間を表す。またさらに、ステップＳ９０におけるＤＢＭのゾーンは公知のＤｉｆｆｅｒｅｎｃｅ  Ｂｏｕｎｄ  Ｍａｔｒｉｘで定義されたゾーンである。ステップＳ１００では、フィルタリング結果の状態空間ＳｒｔＦを｛（ｓ，Ｚ）∈Ｓｒｔ｜ｓ∈ＳＦ｝とすることで、当該近似処理を終了する。
【０３２３】
以上説明したように、図２８の近似処理を実行することで、実時間制約付きオートマトンをリアルタイムオートマトンに近似させることができる。
【実施例３】
【０３２４】
異常時の自動停止機構．
図２９は実施例３に係る異常時の自動停止機構を有する自動車制御システムの構成例を示すブロック図である。
【０３２５】
図２９において、自動車制御システムは、センサ装置１Ａ及び１Ｂがそれぞれ通信回線１０ａ，１０ｂを介して自動車コントローラ３０に接続されて構成される。
【０３２６】
センサ装置１Ａにおいて、車速センサ３ａにより検出された車速と、加速度センサ３ｂにより検出された角速度とが前置情報処理回路４ａに入力される。前置情報処理回路４ａは実施例２に係る前置情報処理回路４と同様の構成を有する。また前置情報処理回路４ａは、入力される車速及び加速度の実時間付きシーケンスデータについて、上記マッチング条件にマッチングしないことが容易に分かるデータを除去するように加工し、加工後の実時間付きシーケンスデータを通信回線１０ａを介して後置情報処理回路５に送信する。
【０３２７】
センサ装置１Ｂにおいて、勾配センサ３ｃにより検出された勾配と、質量センサ３ｄにより検出された質量と、アクチュエータへの入力データ部３ｅに入力された入力データ（緊急停止指示データ）とが前置情報処理回路４ｂに入力される。前置情報処理回路４ｂも、実施例２に係る前置情報処理回路４と同様の構成を有する。前置情報処理回路４ｂは、入力される勾配、質量及び入力データの実時間付きシーケンスデータについて、上記マッチング条件にマッチングしないことが容易に分かるデータを除去するように加工し、加工後の実時間付きシーケンスデータを通信回線１０ｂを介して後置情報処理回路５に送信する。
【０３２８】
自動車コントローラ３０において、後置情報処理回路５は前置情報処理回路４ａによって加工されたシーケンスデータと前置情報処理回路４ｂによって加工されたシーケンスデータとを受信する。そして後置情報処理回路５は、これらのシーケンスデータについて上述のマッチング条件（前置情報処理回路４ａと前置情報処理回路４ｂで用いられたマッチング条件）にマッチングするシーケンスデータを抽出する処理を行って、抽出したシーケンスデータを故障検出部３１に出力する。故障検出部３１は入力されるシーケンスデータに基づいて所定の故障条件にマッチングするか否かを判断し、当該故障条件にマッチングするときにその旨の情報を自動車運転制御部３２に出力することで、例えば自動車を緊急停止するなどの所定の制御処理を行う。
【０３２９】
先に述べた通り前置情報処理回路４ｂは、マッチング条件の一部に合致しているが、必ずしもマッチング条件の全体に合致しているか否か確かではないデータについては加工しない（除去しない）。そのため後置情報処理回路５が行うデータの抽出処理では、前置情報処理回路４ａや前置情報処理回路４ｂから受領した、加工されたシーケンスデータに対して、上述のマッチング条件に合致するデータをすべて抽出する処理が行われる。具体的には、たとえば前置情報処理回路４ａや前置情報処理回路４ｂが、一部の文字（マッチング条件に明らかに一致しない文字）をブロック文字⊥に書き換えた文字列（シーケンスデータ）を後置情報処理回路５に送信する場合、後置情報処理回路５は文字列中からブロック文字を取り除くだけでなく、ブロック文字⊥に書き換えられていない文字列の中にマッチング条件に合致する文字列が含まれているか判定し、マッチング条件に合致する文字列を抽出する処理も行う。
【０３３０】
なお、後置情報処理回路５がマッチング条件に合致する文字列（シーケンスデータ）を抽出するための処理負荷は、図２９のように前置情報処理回路４ａや前置情報処理回路４ｂが自動車制御システムに設けられている場合は、前置情報処理回路４ａや前置情報処理回路４ｂが設けられていない場合に比べると低くなる。前置情報処理回路４ａや前置情報処理回路４ｂによって、明らかにマッチング条件に合致しないデータ（文字列）は除去される（ブロック文字に変換される）ため、後置情報処理回路５で検索対象とするデータ量は大きく削減されるからである。
【０３３１】
以上説明したように、実施例３によれば、走行中の自動車のログデータ（車速、加速度、勾配、質量など）を、当該自動車制御システムを用いることによりモニタリングすることで故障を検知し、緊急停止する必要がある場合には自動車運転制御部３２に適切な入力を与えることで緊急停止する。特に、前置情報処理回路４ａ，４ｂをそれぞれセンサ装置１Ａ，１Ｂに取り付けることにより、通信回線１０ａ，１０ｂにおけるデータ転送量を削減し、より多くのデータを扱うことができる。
【実施例４】
【０３３２】
セミコネクテッドカーの走行経路最適化．
図３０は実施例４に係るセミコネクテッドカーの走行経路最適化機構を有する自動車制御システムの構成例を示すブロック図である。自動車制御システムは、自動車４０が通信回線１０ｃ，１０ｄを含むネットワークを介してサーバ装置５０に接続されて構成される。ここで、セミコネクテッドカーとは、自動車４０の制御部が常時サーバ装置５０に接続せずに、必要に応じて接続することで自動車４０の走行を制御するものである。
【０３３３】
自動車４０において、アクセルセンサ３ｆにより検出されたアクセルデータと、ブレーキペダルセンサ３ｇにより検出されたアクセルペダルデータは駆動トルク推定部３３に入力される。駆動トルク推定部３３は、入力されるアクセルデータとアクセルペダルデータとに基づいて公知の方法により駆動トルクを推定して推定車速算出部３４に出力する。また、勾配センサ３ｃにより検出された勾配と、質量センサ３ｄにより検出された質量とは推定車速算出部３４に入力される。推定車速算出部３４は入力される３つのデータに基づいて公知の方法により推定車速を算出して偏差量算出部３５に出力する。偏差量算出部３５は、算出された推定車速を、車速センサ３ａにより検出された車速と比較することで、車速の偏差で道路状態を推定できる偏差量を算出して前置情報処理回路４ｃに出力する。前置情報処理回路４ｃは実施例２に係る前置情報処理回路４と同様の構成を有する。また前置情報処理回路４ｃは、入力される偏差量の実時間付きシーケンスデータについて、上記マッチング条件にマッチングしないことが容易に分かるデータを除去するように加工し、加工後の実時間付きシーケンスデータを通信回線１０ｃを介してサーバ装置５０の後置情報処理回路５に送信する。
【０３３４】
サーバ装置５０において、後置情報処理回路５は前置情報処理回路４ｃによって加工されたシーケンスデータを受信し、上記のマッチング条件にマッチングするシーケンスデータを抽出して、抽出したシーケンスデータを異常な道路状態検出部５１に出力する。異常な動作状態検出部５１は入力されるシーケンスデータに基づいて所定の「異常な道路状態」（例えば、偏差量が所定のしきい値以上で異常な道路状態と判定）の条件にマッチングするか否かを判断し、当該条件にマッチングするときにその旨の情報を走行プラン制御部５２に出力する。走行プラン制御部５２は入力される情報に基づいて好ましくない道路状況を検知し、道路状況に応じて走行プランの最適化を行い、その最適化された走行プランのデータを通信回線１０ｄを介して自動車４０の走行制御部３６に出力することで、自動車４０の走行を最適化する。
【０３３５】
以上説明したように、実施例４によれば、走行中のセミコネクテッドカーの走行ログ（アクセルデータ、ブレーキペダルデータ、勾配、質量、車速と、それに基づく所定の算出データ）をサーバ装置５０に適宜通信回線１０ｃを介して送信する。ここで、異常な道路状態検出部５１によりそのデータをモニタリングすることで好ましくない道路状況を検知し、道路状況に応じて走行プランの最適化を行なう。ここで、セミコネクテッドカーである自動車４０において前置情報処理回路４ｃを設け、サーバ装置５０において後置情報処理回路５を設けることで、データ転送量を削減し、例えば無線通信の状況の良くない環境下においても適切に動作することができる。
【実施例５】
【０３３６】
サーバ装置への攻撃のモニタリングとアクセス遮断．
図３１は実施例５に係るサーバ装置への攻撃のモニタリングとアクセス遮断機構を有する通信システムの構成例を示すブロック図である。通信システムは、サーバ装置６０と、ルータ装置７０とが通信回線１０ｅを含むネットワークを介して接続されて構成される。
【０３３７】
サーバ装置６０において、アクセスログ収集部６１は、サーバ装置６０に外部からのアクセスについてのログ（アクセス元情報、時刻等）を収集し、そのシーケンスデータを前置情報処理回路６２に出力する。前置情報処理回路６２は実施例２に係る前置情報処理回路４と同様の構成を有する。前置情報処理回路６２は、入力される実時間付きシーケンスデータについて、上記マッチング条件にマッチングしないことが容易に分かるデータを除去するように加工し、加工後の実時間付きシーケンスデータを後置情報処理回路６３に送信する。後置情報処理回路６３は入力される実時間付きシーケンスデータを受信し、上記のマッチング条件にマッチングするシーケンスデータを抽出して、抽出したシーケンスデータを攻撃検出部６４に出力する。攻撃検出部６４は入力されるシーケンスデータに基づいて所定のしきい値データを参照してサーバ装置６０への攻撃的なアクセスを検出し、検出されたアクセス情報を通信回線１０ｅを介してルータ装置７０のアクセス制御部７１に送信する。これに応答して、アクセス制御部７１は入力される検出されたアクセス情報に基づいてサーバ装置６０へのアクセスを遮断するように制御する。
【０３３８】
以上説明したように、実施例５によれば、ＷＷＷなどのサーバ装置６０において外部からの通信ログを前置情報処理回路６２及び後置情報処理回路６３を含む実時間条件抽出装置を用いてモニタリングすることで外部からの攻撃を検知し、ルータに適切な入力を与えることで当該攻撃者からのアクセスを遮断する。当該実時間条件抽出装置の実時間データフィルタ部を用いることで、データ処理に必要なＣＰＵ時間を削減し、サーバ装置６０の本来の動作を損なわずにモニタリングを行なうことができる。
【０３３９】
以上の実施形態及び実施例においては、前置情報処理回路４は、入力されるイベントのシーケンスデータに関する所定のマッチング条件を記述したオートマトンに基づいてムーアマシンを生成し、生成されたムーアマシンを用いて、前記シーケンスデータから前記マッチング条件に一致しないデータを実質的に除去するようにフィルタリングしてフィルタリング結果のシーケンスデータを出力する。しかし、本発明はこれに限らず、フィルタリングのために生成するモデルはムーアマシンに限らず、ミーリマシン（Mealy Machine）などの種々の有限状態機械であってもよい。
【０３４０】
本実施形態の特徴と特許文献２及び３との相違点．
【０３４１】
（１）特許文献２
特許文献２においては、並列動作を記述可能なプログラム言語を用いて複数のデバイスを定義したプログラム記述（１）を入力し、入力されたプログラム記述を中間表現に変換し（Ｓ２）、リアルタイム制約を満たすパラメータを生成する生成されたパラメータに基づいて、ハードウェア記述言語に基づく中間表現（Ｓ３）および回路記述を合成する（Ｓ４）。中間式は、同時制御フローフラグ、同時パラメータを有する時間オートマトンなどである。パラメトリックモデル検査は、パラメータ生成のために実行される。プログラム記述は、ｒｕｎメソッドを使用してデバイスを定義し、バリア同期を使用してデバイスのクロック同期を定義します。これにより、リアルタイム制約に合ったバスシステムを設計することができる。
【０３４２】
特許文献２では、特に、ＪＡＶＡ（登録商標）等の並列動作を記述できる言語から回路設計を行う際、実時間制約を満たすようにバスシステムを効率よく設計するため、設計自動化のための検証プロセスの前処理としてモデル化を行う。その一工程として、コンカレントなコントロール・フロー・グラフ（Ｃ−ＣＦＧ）からコンカレントなパラメータ付き時間オートマトン（Ｃ−ＴＮＦＡ）へ、さらにパラメータ付き時間オートマトン（ＴＮＦＡ）へと変換する。Ｃ−ＣＦＧからＣ−ＴＮＦＡ変換時に、後段の検証プロセスにおける前提に合わない状態遷移を削除する処理を行い、Ｃ−ＴＮＦＡからＴＮＦＡへの変換時に、バス権をとる必要がない動作の並列実行で遷移時間の上限を設け、上限を満たさない状態を削除する処理を行う。
【０３４３】
特許文献２では、前処理での後段処理をふまえたマスク処理を開示するが、オートマトンでの時間制約をふまえた決定化やバッファ最適化など本発明の具体的手法の開示はない。
【０３４４】
（２）特許文献３
特許文献３の方法は、ソフトウェアのソースコードを検査コードに変換するためのソースコードをコンピュータを用いて変換する方法であって、ソフトウェアのソースコードを入力するステップと、複数の異なる変換規則を入力するステップと、プロセス性能に関する制約である非機能ルールを入力するステップと、前記ソースコードを、前記複数の異なる変換規則と前記非機能規則とによって検証ツールの入力言語で記述された非機能検査コードに変換するステップとを含む。
【０３４５】
特許文献３では、特に、ソフトウェア検査の前段の処理としてソフトウェアの振る舞いを入力言語（検査コード）に変換する際、ソフトウェアの各部品（機能）に実行環境による処理時間を付与した時間オートマトンに変換し、繰り返し実行時のみの特定の不具合がある場合にその繰り返し部分を除去し、状態数を削減しながらも他の不具合を検出可能として、計算時間が大きくなりすぎる状態爆発を回避する技術を開示している。
【０３４６】
しかしながら、特許文献３では、前処理でのマスク処理を開示するが、オートマトンでの時間制約をふまえた決定化やバッファ最適化など本発明の具体的手法の開示はない。
【産業上の利用可能性】
【０３４７】
以上詳述したように、本発明に係る情報処理装置及び方法によれば、従来例に係る時系列相関抽出装置に比較して、効率的に処理することができる。
【符号の説明】
【０３４８】
１，１Ａ，１Ｂ  センサ装置
２  モニタ装置
３  センサ
３ａ  車速センサ
３ｂ  加速度センサ
３ｃ  勾配センサ
３ｄ  質量センサ
３ｅ  アクチュエータへの入力データ部
３ｆ  アクセルセンサ
３ｇ  ブレーキペダルセンサ
４，４ａ，４ｂ，４ｃ  前置情報処理回路
５  後置情報処理回路
６  表示部
７  フィルタ部
８  パターンマッチング部
１０，１０ａ〜１０ｅ  通信回線
１１  フィルタ部
１２  マスキング適用部
２０  ＣＰＵ
２１  ＲＯＭ
２２  ＲＡＭ
２２ａ  バッファ部
２２ｂ  非バッファ部
２３  操作部
２４  表示部
２５  入力インターフェース
２６  出力インターフェース
２７  バス
３０  自動車コントローラ
３１  故障検出部
３２  自動車運転制御部
３３  駆動トルク推定部
３４  推定車速算出部
３５  偏差量算出部
３６  走行制御部
４０  自動車
５０  サーバ装置
５１  異常な道路状態検出部
５２  走行プラン制御部
６０  サーバ装置
６１  アクセスログ収集部
６２  前置情報処理回路
６３  後置情報処理回路
６４  攻撃検出部
７０  ルータ装置
７１  アクセス制御部
【図１】
2020057362.tif 000079
【図２】
2020057362.tif 000080
【図３Ａ】
2020057362.tif 000081
【図３Ｂ】
2020057362.tif 000082
【図３Ｃ】
2020057362.tif 000083
【図４】
2020057362.tif 000084
【図５】
2020057362.tif 000085
【図６Ａ】
2020057362.tif 000086
【図６Ｂ】
2020057362.tif 000087
【図７Ａ】
2020057362.tif 000088
【図７Ｂ】
2020057362.tif 000089
【図８】
2020057362.tif 000090
【図９】
2020057362.tif 000091
【図１０】
2020057362.tif 000092
【図１１Ａ】
2020057362.tif 000093
【図１１Ｂ】
2020057362.tif 000094
【図１１Ｃ】
2020057362.tif 000095
【図１２Ａ】
2020057362.tif 000096
【図１２Ｂ】
2020057362.tif 000097
【図１２Ｃ】
2020057362.tif 000098
【図１３Ａ】
2020057362.tif 000099
【図１３Ｂ】
2020057362.tif 000100
【図１３Ｃ】
2020057362.tif 000101
【図１４Ａ】
2020057362.tif 000102
【図１４Ｂ】
2020057362.tif 000103
【図１４Ｃ】
2020057362.tif 000104
【図１５】
2020057362.tif 000105
【図１６】
2020057362.tif 000106
【図１７】
2020057362.tif 000107
【図１８】
2020057362.tif 000108
【図１９】
2020057362.tif 000109
【図２０】
2020057362.tif 000110
【図２１】
2020057362.tif 000111
【図２２】
2020057362.tif 000112
【図２３】
2020057362.tif 000113
【図２４】
2020057362.tif 000114
【図２５】
2020057362.tif 000115
【図２６】
2020057362.tif 000116
【図２７】
2020057362.tif 000117
【図２８】
2020057362.tif 000118
【図２９】
2020057362.tif 000119
【図３０】
2020057362.tif 000120
【図３１】
2020057362.tif 000121