IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ 大学共同利用機関法人情報・システム研究機構の特許一覧

特許7383273情報処理装置、情報処理回路、情報処理システム及び情報処理方法
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2023-11-10
(45)【発行日】2023-11-20
(54)【発明の名称】情報処理装置、情報処理回路、情報処理システム及び情報処理方法
(51)【国際特許分類】
   G06F 16/245 20190101AFI20231113BHJP
【FI】
G06F16/245
【請求項の数】 8
(21)【出願番号】P 2019129643
(22)【出願日】2019-07-11
(65)【公開番号】P2020057362
(43)【公開日】2020-04-09
【審査請求日】2022-06-01
(31)【優先権主張番号】P 2018187340
(32)【優先日】2018-10-02
(33)【優先権主張国・地域又は機関】JP
【新規性喪失の例外の表示】特許法第30条第2項適用 https://ieeexplore.ieee.org/document/8412610/ 和賀正樹、及び蓮尾一郎が上記アドレスのウェブサイトで公開されている米国電気電子学会(IEEE)のウェブサイト「IEEE Xplore Digital Library」にて、「Moore-Machine Filtering for Timed and Untimed Pattern Matching」と題して、和賀正樹、及び蓮尾一郎が発明した「情報処理装置、情報処理システム及び情報処理方法」に関する技術について2018年7月18日に公開した。
【国等の委託研究の成果に係る記載事項】(出願人による申告)平成29年度、国立研究開発法人科学技術振興機構、戦略的創造研究推進事業・総括実施型研究(ERATO)「蓮尾メタ数理システムデザインプロジェクト」に係る委託業務、産業技術力強化法第17条の適用を受ける特許出願
(73)【特許権者】
【識別番号】504202472
【氏名又は名称】大学共同利用機関法人情報・システム研究機構
(74)【代理人】
【識別番号】100107766
【弁理士】
【氏名又は名称】伊東 忠重
(74)【代理人】
【識別番号】100070150
【弁理士】
【氏名又は名称】伊東 忠彦
(72)【発明者】
【氏名】和賀 正樹
(72)【発明者】
【氏名】蓮尾 一郎
【審査官】成瀬 博之
(56)【参考文献】
【文献】特開2003-308333(JP,A)
【文献】特開2004-110327(JP,A)
【文献】特開平10-198706(JP,A)
【文献】特開2013-008329(JP,A)
【文献】特開2006-302082(JP,A)
【文献】英国特許出願公開第02362789(GB,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 16/00-16/958
G06F 17/00-17/18
(57)【特許請求の範囲】
【請求項1】
入力されるイベントのシーケンスデータに関する所定のマッチング条件に基づいて有限状態機械を生成し、生成された有限状態機械を用いて、前記シーケンスデータのうち前記マッチング条件に一致しないイベントがマスクされたシーケンスデータを出力する情報処理回路を備え、
前記シーケンスデータは、実時間のタイムスタンプ付きイベントのシーケンスデータであり、
前記マッチング条件は、実時間制約付きオートマトンとして記述されており、
前記有限状態機械は、N個のメモリブロックを有するFIFOバッファと、前記有限状態機械の状態遷移のルールを記述した情報を有し、前記N個のメモリブロックのそれぞれは、前記マッチング条件に一致することを示す第1状態と前記マッチング条件に一致しないことを示す第2状態のいずれかを表すフラグを格納する領域を有する、
情報処理装置。
【請求項2】
前記シーケンスデータは、前記シーケンスデータの一単位のデータごとにタイムスタンプが付された、タイムスタンプ付き文字列であり、前記文字列を構成する文字は、所定の文字セット内の要素であり、
前記有限状態機械は、前記シーケンスデータの一単位のデータの入力を受け付けるたびに、
前記バッファの末尾のメモリブロックに記憶されているフラグを出力し
前記受け付けたデータと前記ルールとに基づいて、前記有限状態機械の状態を遷移させ、
前記バッファの先頭のメモリブロックに、前記受け付けたデータに対応するフラグの初期値として、第2状態を格納し、
前記有限状態機械がとり得る状態の各々は、前記オートマトンがとり得る状態sと、初期状態から前記状態sに達するまでに要する遷移回数に相当するカウンタnの組(s,n)の集合{(s ,n ),(s ,n ),...(s ,n )}からなり(kは1以上の整数)、
前記情報処理回路は、
(1)前記有限状態機械の状態を遷移させた後の状態に含まれる、前記組の集合の中に、前記カウンタの値がNである組が存在する場合、前記バッファ中のN個のメモリブロックのフラグをすべて前記第1状態に変更し、
(2)前記有限状態機械の状態が含む前記状態s ,s ,...s の中に受理状態が含まれる場合、受理状態の前記状態に対応付けられた前記カウンタの最大値Mを特定し、前記バッファの先頭からM個のメモリブロックのフラグを前記第1状態に変更し、
前記有限状態機械が出力したフラグが第1状態である場合、前記有限状態機械が出力したフラグに対応する一単位分のデータを外部に出力し、
前記有限状態機械が出力したフラグが第2状態である場合、前記有限状態機械が出力したフラグに対応する一単位分のデータを、前記文字セットに含まれない文字に変換して外部に出力する、
請求項に記載の情報処理装置。
【請求項3】
前記有限状態機械は、前記文字セットに含まれない文字が連続する場合、当該文字が連続する数のバイナリ表示又は1個の当該文字を出力する、
請求項2に記載の情報処理装置
【請求項4】
第1の情報処理装置と、前記第1の情報処理装置に所定の通信回線又はネットワークを介して接続された第2の情報処理装置とを備えた情報処理システムであって、
前記第1の情報処理装置は、入力されるイベントのシーケンスデータに関する所定のマッチング条件に基づいて有限状態機械を生成し、生成された有限状態機械を用いて、前記シーケンスデータのうち前記マッチング条件に一致しないイベントがマスクされたシーケンスデータを出力する情報処理回路を備え、
前記第2の情報処理装置は前記第1の情報処理装置が出力した、前記マスクされたシーケンスデータから前記マッチング条件に一致するデータを抽出して、前記抽出されたデータを出力する情報処理回路を備え、
前記シーケンスデータは、実時間のタイムスタンプ付きイベントのシーケンスデータであり、
前記マッチング条件は、実時間制約付きオートマトンとして記述されており、
前記有限状態機械は、N個のメモリブロックを有するFIFOバッファと、前記有限状態機械の状態遷移のルールを記述した情報を有し、前記N個のメモリブロックのそれぞれは、前記マッチング条件に一致することを示す第1状態と前記マッチング条件に一致しないことを示す第2状態のいずれかを表すフラグを格納する領域を有する、
情報処理システム。
【請求項5】
前記シーケンスデータは、前記シーケンスデータの一単位のデータごとにタイムスタンプが付された、タイムスタンプ付き文字列であり、前記文字列を構成する文字は、所定の文字セット内の要素であり、
前記有限状態機械は、前記シーケンスデータの一単位のデータの入力を受け付けるたびに、
前記バッファの末尾のメモリブロックに記憶されているフラグを出力し
前記受け付けたデータと前記ルールとに基づいて、前記有限状態機械の状態を遷移させ、
前記バッファの先頭のメモリブロックに、前記受け付けたデータに対応するフラグの初期値として、第2状態を格納し、
前記有限状態機械がとり得る状態の各々は、前記オートマトンがとり得る状態sと、初期状態から前記状態sに達するまでに要する遷移回数に相当するカウンタnの組(s,n)の集合{(s ,n ),(s ,n ),...(s ,n )}からなり(kは1以上の整数)、
前記第1の情報処理装置が備える前記情報処理回路は、
(1)前記有限状態機械の状態を遷移させた後の状態に含まれる、前記組の集合の中に、前記カウンタの値がNである組が存在する場合、前記バッファ中のN個のメモリブロックのフラグをすべて前記第1状態に変更し、
(2)前記有限状態機械の状態が含む前記状態s ,s ,...s の中に受理状態が含まれる場合、受理状態の前記状態に対応付けられた前記カウンタの最大値Mを特定し、前記バッファの先頭からM個のメモリブロックのフラグを前記第1状態に変更し、
前記有限状態機械が出力したフラグが第1状態である場合、前記有限状態機械が出力したフラグに対応する一単位分のデータを前記第2の情報処理装置に送信し、
前記有限状態機械が出力したフラグが第2状態である場合、前記有限状態機械が出力したフラグに対応する一単位分のデータを、前記文字セットに含まれない文字に変換して前記第2の情報処理装置に送信する、
請求項に記載の情報処理システム
【請求項6】
前記有限状態機械は、前記文字セットに含まれない文字が連続する場合、当該文字が連続する数のバイナリ表示又は1個の当該文字を前記第2の情報処理装置に送信する、
請求項5に記載の情報処理システム
【請求項7】
複数の記号からなるシーケンスデータに含まれる所定のパターンを検索するためのマッチング条件の入力を受け付け、
前記受け付けたマッチング条件に基づいて、前記シーケンスデータのうち前記マッチング条件に一致しないイベントをマスクするための情報を生成するように構成された有限状態機械を生成し、
前記シーケンスデータは、実時間のタイムスタンプ付きイベントのシーケンスデータであり、
前記マッチング条件は、実時間制約付きオートマトンとして記述されており、
前記有限状態機械は、N個のメモリブロックを有するFIFOバッファと、前記有限状態機械の状態遷移のルールを記述した情報を有し、前記N個のメモリブロックのそれぞれは、前記マッチング条件に一致することを示す第1状態と前記マッチング条件に一致しないことを示す第2状態のいずれかを表すフラグを格納する領域を有する、
情報処理回路。
【請求項8】
入力されるイベントのシーケンスデータに対して所定の加工を行う、情報処理装置による情報処理方法であって、
前記情報処理装置の有する情報処理回路が、
シーケンスデータに関する所定のマッチング条件を記述したオートマトンを受領する工程と、
前記オートマトンに基づいて有限状態機械を生成する工程と、
前記シーケンスデータの入力を受け付ける工程と、
前記有限状態機械を用いて、前記シーケンスデータのうち前記マッチング条件に一致しないイベントをマスクするように、前記シーケンスデータを加工する工程と、
前記マスクされたシーケンスデータを出力する工程と、
を実行し、
前記シーケンスデータは、実時間のタイムスタンプ付きイベントのシーケンスデータであり、
前記マッチング条件は、実時間制約付きオートマトンとして記述されており、
前記有限状態機械は、N個のメモリブロックを有するFIFOバッファと、前記有限状態機械の状態遷移のルールを記述した情報を有し、前記N個のメモリブロックのそれぞれは、前記マッチング条件に一致することを示す第1状態と前記マッチング条件に一致しないことを示す第2状態のいずれかを表すフラグを格納する領域を有する、
情報処理方法。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、パターンマッチングのためのフィルタリングを行う情報処理装置、上記情報処理装置を備えた情報処理システム、及び情報処理方法に関する。
【背景技術】
【0002】
例えば、特許文献1において、時系列データのフィルタリングを行う時系列相関抽出装置であって、トランザクションの数が増えても、処理に多大の時間が掛かるのを防止することができる時系列相関抽出装置が開示されている。この従来例に係る時系列相関抽出装置は、複数の属性からなるレコードの集合からレコードの組み合わせを検索する場合、レコード内の所定属性が特定の値をとることをそれぞれ定義する複数のイベントと、その属性値の順序に基づいて定義された該複数のイベントの間の順序関係とを用いて検索パターンを指定する指定手段と、レコードの集合から指定された検索パターンに対応するレコードの組み合わせを検索する検索手段と、検索結果を出力する出力手段とを有する時系列フィルタ部を備えると共に、時系列相関エンジン部により時系列相関ルールを抽出する機能を有する。
【先行技術文献】
【特許文献】
【0003】
【文献】特開2004-110327号公報
【文献】国際公開第2004/038620号パンフレット
【文献】国際公開第2012/057170号パンフレット
【非特許文献】
【0004】
【文献】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.
【発明の概要】
【発明が解決しようとする課題】
【0005】
しかしながら、従来例に係る時系列相関抽出装置では、例えばマッチング条件を記述したオートマトンに基づいてムーアマシン等の有限状態機械を生成し、生成された有限状態機械を用いてフィルタリングすることは開示も示唆もなく、効率的に処理を行うことができないという問題点があった。
【0006】
本発明の目的は以上の問題点を解決し、パターンマッチングのためのフィルタリングを行う情報処理装置、情報処理システム及び情報処理方法において、従来例に比較して、フィルタリングを用いて効率的にパターンマッチングを行うことができる情報処理装置、情報処理システム及び情報処理方法を提供することにある。
【課題を解決するための手段】
【0007】
本発明の一実施形態に係る情報処理装置は、入力されるイベントのシーケンスデータに関する所定のマッチング条件に基づいて有限状態機械を生成し、生成された有限状態機械を用いて、前記シーケンスデータから前記マッチング条件に一致しないデータを実質的に除去するように加工されたシーケンスデータを出力する情報処理回路を備えたことを特徴とする。
【発明の効果】
【0008】
従って、本発明に係る情報処理装置、情報処理システム及び情報処理方法によれば、従来例に比較して、フィルタリングを用いて効率的にパターンマッチングを行うことができる。特に、従来の(フィルタリングによる前処理を行わない)実時間制約付きパターンマッチング(例えば、非特許文献4)と比較してフィルタリングを用いることにより、効率的に処理することができ、性能を大幅に向上できる。また、フィルタリングを用いるパターンマッチングに関する従来例(例えば、非特許文献4)と比較して、実時間制約がない場合はパターンとしてより広汎なオートマトンを許すができ、実時間制約がある場合は実時間制約を扱えることができる。
【図面の簡単な説明】
【0009】
図1】実施形態に係る物理情報システム(CPS)の構成例を示すブロック図である。
図2】パターンマッチング処理とフィルタリング処理との関係を表した概念図である。
図3A】実施形態で用いるパターンマッチングにおける前後の移動処理を示すタイミングチャートである。
図3B】従来文献でのパターンマッチングにおける位置プロットの一例を示す平面図である。
図3C図3Bの位置プロットでの区間の特定を示す平面図である。
図4】実施形態におけるフィルタリングのパディング処理を示す概念図である。
図5】実施形態におけるムーアマシンによるフィルタリング処理を示す概念図である。
図6A】実施形態に係る非決定的有限オートマトン(NFA)であるパターンの一例を示す図である。
図6B】実施形態に係るムーアマシンフィルタの非バッファ部分の一例を示す図である。
図7A】所定の文字列に対するムーアマシンフィルタのランを示す図である。
図7B】実施形態に係る前置情報処理回路の処理回路の一例を示すブロックである。
図8】実施例1に係る自動車のトルクセンサのデータのためのムーアマシンフィルタの一例を示す図である。
図9】実施例1に係る自動車のギアセンサのデータのためのムーアマシンフィルタの一例を示す図である。
図10】実施例1に係る自動車のアクセルセンサのデータのためのムーアマシンフィルタの一例を示す図である。
図11A】実施例1に係る自動車のトルクセンサのデータに対するムーアマシンフィルタのシミュレーション結果であって、入力された実時間付き文字列長に対するフィルタされた実時間付き文字列長を示すグラフである。
図11B】実施例1に係る自動車のギアセンサのデータに対するムーアマシンフィルタのシミュレーション結果であって、入力された実時間付き文字列長に対するフィルタされた実時間付き文字列長を示すグラフである。
図11C】実施例1に係る自動車のアクセルセンサのデータに対するムーアマシンフィルタのシミュレーション結果であって、入力された実時間付き文字列長に対するフィルタされた実時間付き文字列長を示すグラフである。
図12A】実施例1に係る自動車のトルクセンサのデータに対するムーアマシンフィルタのシミュレーション結果であって、入力された実時間付き文字列長に対する実行時間を示すグラフである。
図12B】実施例1に係る自動車のギアセンサのデータに対するムーアマシンフィルタのシミュレーション結果であって、入力された実時間付き文字列長に対する実行時間を示すグラフである。
図12C】実施例1に係る自動車のアクセルセンサのデータに対するムーアマシンフィルタのシミュレーション結果であって、入力された実時間付き文字列長に対する実行時間を示すグラフである。
図13A】実施例1に係る自動車のトルクセンサのデータに対するムーアマシンフィルタのシミュレーション結果であって、入力された実時間付き文字列長に対するメモリ使用量を示すグラフである。
図13B】実施例1に係る自動車のギアセンサのデータに対するムーアマシンフィルタのシミュレーション結果であって、入力された実時間付き文字列長に対するメモリ使用量を示すグラフである。
図13C】実施例1に係る自動車のアクセルセンサのデータに対するムーアマシンフィルタのシミュレーション結果であって、入力された実時間付き文字列長に対するメモリ使用量を示すグラフである。
図14A】自動車のトルクセンサのデータに対する、比較例に係るツールのシミュレーション結果であって、入力された実時間付き文字列長に対する実行時間を示すグラフである。
図14B】自動車のギアセンサのデータに対する、比較例に係るツールのシミュレーション結果であって、入力された実時間付き文字列長に対する実行時間を示すグラフである。
図14C】自動車のアクセルセンサのデータに対する、比較例に係るツールのシミュレーション結果であって、入力された実時間付き文字列長に対する実行時間を示すグラフである。
図15】実施例2に係る前置情報処理回路の構成例を示すブロック図である。
図16】バッファ部の構成例を示す図である。
図17】オートマトンの状態遷移図の例を示す図である。
図18】カウンタ付き状態を用いて記述されるオートマトンの状態遷移図の例を示す図である。
図19】実施例2に係るムーアマシンの状態遷移図の例を示す図である。
図20】実施例2に係るムーアマシンの状態遷移表の例を示す図である。
図21】実施例2に係るムーアマシンの状態管理テーブルの例を示す図である。
図22】実施例2に係る前置情報処理回路の有する各機能ブロックを表した図である。
図23】実施例2に係る前置情報処理回路の処理の流れを示すフローチャートである。
図24】ムーアマシンの状態遷移時の処理の流れを示すフローチャートである。
図25】実時間制約付きムーアマシンを用いた時の前置情報処理回路の処理の流れを示すフローチャートである。
図26】実時間制約付きムーアマシンの状態遷移時の処理の流れを示すフローチャートである。
図27】リアルタイムオートマトンの決定化処理を示すフローチャートである。
図28】実時間制約付きオートマトンをリアルタイムオートマトンに近似させる近似処理を示すフローチャートである。
図29】実施例3に係る異常時の自動停止機構を有する自動車制御システムの構成例を示すブロック図である。
図30】実施例4に係るセミコネクテッドカーの走行経路最適化機構を有する自動車制御システムの構成例を示すブロック図である。
図31】実施例5に係るサーバ装置への攻撃のモニタリングとアクセス遮断機構を有する通信システムの構成例を示すブロック図である。
【発明を実施するための形態】
【0010】
以下、本発明に係る実施形態及び実施例について図面を参照して説明する。なお、以下の各実施形態において、同様の構成要素については同一の符号を付している。
【0011】
実施形態.
モニタリングは実時間性のある、組み込みの物理情報システムの実行時検証技法の根幹を成している。数学的には、モニタリング問題はパターンオートマトンに対するパターンマッチング問題として定式化される。本発明者らは組み込みアプリケーション(特にセンサとそれを監視するプロセッサとの通信路の容量が限られているもの)を動機として、モニタリングの前処理としてのフィルタリングについて研究しており、具体的には、所与のパターンオートマトンに対して、フィルタとして機能するムーアマシンを構成する手法を提案する。
【0012】
その構成はオートマトン理論的であり、また、本発明者らはムーアマシンを利用することが特に組み込みアプリケーションに適していることを発見した。これは、ムーアマシンによる順次的な計算が比較的低コストであるというだけでなく、ムーアマシンが専用回路によるハードウェアアクセラレーションと相性が良いことが理由である。本発明者らはまた、健全性(マッチングを見逃さないこと)も証明する。本発明者らは、次の状況設定でこの研究を行う。1つは、実時間制約なしの設定で、パターンは非決定的有限オートマトン(NFA)で記述される。もう1つは実時間制約付きの設定で、パターンは実時間制約付きオートマトンで記述される。時間なしの構成を時間ありの設定に拡張するのは技術的には複雑であるが、以下の実施形態及び実施例によってその実用上の恩恵が明らかになる。なお、実施形態においては、説明の便宜上、章番号及び節番号を付す。
【0013】
1.序論
1.1 モニタリングと、実時間制約付きパターンマッチング
【0014】
物理情報システム(Cyber Physical Sysytem;CPS)は日増しに複雑になっている。これは、例えば自動車の燃費などの効率化だけでなく自動運転などの新機能を実現する、急発達してきたデジタル制御のためでもある。従って、このようなシステムを正しく理解することは依然重要かつ取り組み甲斐のある課題である。
【0015】
このような物理情報システム(CPS)の複雑さや、他のサプライヤによって提供されるブラックボックスな部品といった他の理由のために、従来の意味での形式検証を実世界の物理情報システム(CPS)に適用することは困難である。このために、研究者や実務者はいわゆる軽量形式検証に注目することになった。実行時形式検証はその取り組みの1つであり、所与のシステムの実行結果列が、所与の仕様に対して検査される。この目的のためにモニタリング用の様々なアルゴリズムが提案されてきた。
【0016】
数学的に言うと、モニタリング問題の一般的な定式化の1つとしてパターンマッチング問題がある(もう1つの一般的な定式化は、本発明者らが言うところのパターン検索問題である。パターン検索はパターンマッチングよりも簡単だが、より少ない情報しかもたらさない。)。実行結果列が文字列w=a…aによって与えられているとき、期待される出力は、添字(i,j)の組で所与のパターンpatを満足させる文字列wの制限を表す複数のものの集合
【0017】
【数1】

である。パターンpatは文字列、文字列の集合、正規表現、あるいはオートマトンなどによって与えられる。また上の式(1)は、i番目からj番目までの文字列がパターンpatと一致することを意味する。
【0018】
(例1.1):文字列w1=abbbbbaabと、A1=a(a*)bで与えられる正規表現を考える。ここには3つのマッチングがあって、Match(w,A)={(1,2),(7,9),(8,9)}となる。
【0019】
物理情報システム(CPS)において、重要な課題はパターンマッチングの実時間制約時間付き版の取り扱いである。一般的な定式化の1つでは、実行結果列はタイムスタンプ付き文字列により与えられる。これは時刻記録のついた文字の列(文字列)であり、例えば文字列w=(a,0.1)(b,2.5)(a,3.5)(b,4.8)のようなものである。パターンpatは実時間制約付きオートマトン(Timed Automaton;TA)で与えられ、この下で、文字列wの制限を表す時間区間(t,t')において、その制限が実時間制約付きオートマトン(TA)Aによって受理されるようなものの集合
【0020】
【数2】

が計算される。時間なしの設定とは異なり、実時間制約付きオートマトン(TA)Aではさまざまな実時間についての制約を表現することができ、物理情報システム(CPS)の実行結果列のよりきめ細かい分析ができるようになる。
【0021】
(例1.2):タイムスタンプ付き文字列w=(a,0.1)(b,2.5)(a,3.5)(b,4.8)とパターン「bはaが現われた後2秒以内に現われる」(このパターンに対応する実時間制約付きオートマトン(TA)は本質的に図9にあるものと同じである)を考える。どんなマッチングも、2番目のaとbの連なりを含んでいる。なお、はじめの連なりは遠く離れすぎていることに注意する。そのようなマッチングは例えば文字列w(3,5)で与えられるが、このようなマッチングは非可算無限個存在する。このマッチングの集合は、記号的には{(t,t')|2.5≦t<3.5,4.8<t'}と表わされる。
【0022】
物理情報システム(CPS)の設計や展開の様々な場面への明らかな応用があるにも関わらず、実時間制約付きパターンマッチングの研究が始まったのはごく最近である(例えば、非特許文献1,4,6参照)。そのため、実時間制約付きパターンマッチングの産業界での実応用は極めて限定的である。
【0023】
1.2 組み込みアプリケーションの遠隔モニタリング
この実施形態では、実時間制約付きのパターンマッチング、もしくは実時間制約なしのパターンマッチングのためのフィルタリングを提案する。これは、入力文字列に適用される前処理である。
【0024】
この研究の動機は、組み込みアプリケーションに由来する。組み込みシステム(これは物理情報システム(CPS)の重要な一面である)では、センサと(モニタリングの計算を行なう)プロセッサが物理的に別々の場所に置かれることが普通である。さらに、それらの通信路は限られた容量しかないことがしばしばである(図1参照)。
【0025】
図1は実施形態に係る物理情報システム(CPS)の構成例を示すブロック図である。
【0026】
図1において、物理情報システム(CPS)は、センサ装置1と、モニタ装置2とを備えて構成され、これらが例えばCANバス、無線ネットワークなどの制限された通信容量を有する通信回線10を介して接続される。ここで、センサ装置1は、センサ3と、より低速のプロセッサを有する前置情報処理回路4とを備えて構成され、モニタ装置2は、より高速のプロセッサを有する後置情報処理回路5と、表示部6とを備えて構成される。
【0027】
そのような状況の例を例えば現代的な自動車に見ることができる。そこでは、エンジンの中にあるセンサ装置1はデータを集めて、例えばエンジンの熱と振動を避けるために、遠隔に載置されたプロセッサを有するモニタ装置2に送信している。センサ装置1とモニタ装置2とは例えばコントローラーエリアネットワーク(CAN)等の通信回線10を介して相互に接続されている。この通信回線10は、コスト削減のための厳しい性能制限のもとにある。別の例をネットワーク等の通信回線10に接続された家庭電化製品や自動車のようなIoT(Internet of Things)デバイスに見ることができる。IoTデバイスは自身の状態を絶え間なくサーバ装置に送信し、クラウドに設置されたそのサーバ装置はそのデバイスを監視する。なお、その無線通信回線は、例えばデバイスの電池の容量などにより限られている。
【0028】
本実施形態では、前置情報処理回路4は、入力される実時間のタイムスタンプ付きイベントのシーケンスデータに関する所定のマッチング条件を記述したオートマトン(実時間制約付き又は実時間制約なしのオートマトンである)に基づいてムーアマシンを生成し、生成されたムーアマシンを用いて、前記シーケンスデータから前記マッチング条件に一致しないデータを実質的に除去するようにフィルタリングしてフィルタリング結果のシーケンスデータを出力し、出力されるシリアルデジタルデータは通信回線10を介してモニタ装置2の後置情報処理回路5に送信される。これに応答して、後置情報処理回路5は、前記フィルタリング結果のシーケンスデータから前記マッチング条件に一致するシーケンスデータを抽出して表示部6に出力する。
【0029】
1.3 実時間制約付きパターンマッチングのためのフィルタリング
このような遠隔モニタリングの状況で、モニタリングの結果に影響しないようにセンサからプロセッサに送られるデータの量を削減しようというのは自然な考えである。多くのセンサはプロセッサを内蔵しているので、それらを前処理に利用することができる。ここで、(センサ内蔵の、図1)プリプロセッサは実際のモニタリングを行うプロセッサよりもずっと遅いということを仮定する。つまり、前処理は計算量的な意味で安上りでなければいけない。
【0030】
図2は、図1に示された物理情報システム(CPS)において行われるパターンマッチング処理と、フィルタリング処理との関係を概念的に表したものである。図2において、フィルタ部(MN,A)7は、センサ装置1が有する機能ブロックで、たとえば前置情報処理回路4によって実現される機能ブロックである。パターンマッチング部8はモニタ装置2に設けられる機能ブロックで、たとえば後置情報処理回路5によって実現される機能ブロックである。つまり、図2に示すように、本発明者らの提案するワークフローにおいては、フィルタ部(MN,A)7を用いて、入力文字列に対して計算量的に安上りなフィルタリングを適用することによって、前置情報処理回路4から後置情報処理回路5のプロセッサへデータを送信するための通信回線10の負荷を軽減し、さらに当該プロセッサへの負荷も軽減する。
【0031】
1.4 フィルタとしてのムーアマシン
【0032】
この実施形態では、モニタリングの次の2つの設定に取り組む:
(1)実時間制約なしの設定:実行結果列は文字列w∈Σ*であり、パターンはΣ上の非決定的有限オートマトン(NFA)Aで与えられる。
(2)実時間制約ありの設定:実行結果列は実時間制約つき文字列であり、パターンは実時間制約付きオートマトン(Timed Automaton;TA)で与えられる。本発明者らの技術的な貢献は、パターンオートマトンAとバッファサイズN(自然数)にもとづいて、ムーアマシンとして実現されるフィルタMA,Nの構成を与えることにある。ムーアマシンは状態つき計算のよく知られたモデルであり、状態に依存した出力関数を追加に持つオートマトンである。これはシーケンシャルかつ同期的に良く動作し、入力1文字を読み、次の状態に移動し、1文字を出力するという風に動作する。この特性は特にデジタル回路の論理合成に適しており、FPGA(Field Programmable Gate Array)やASIC(Application Specific Integrated Circuits)によるハードウェアアクセラレーションを利用することができる。
【0033】
このようなムーアマシンのシーケンシャルな動作は、パターンマッチングの動作と極めて対照的である。本発明者らの設定ではパターンはオートマトンAで与えられるので、マッチングの長さ(例えば、w|[i,j]∈L(A)となるような|w|[i,j]|=j-i+1)は固定されていない。従って、入力文字列wについて、マッチングの窓を異なる大きさと異なる位置で前後に動かしながら試してみる必要がある(図3A参照)。図3Aは実施形態で用いるパターンマッチングにおける前後の移動処理を示すタイミングチャートである。
【0034】
このことは、比較的低速のプリプロセッサを有する前置情報処理回路4による(シーケンシャルな)フィルタリング作業と、比較的高速のメインプロセッサを有する後置情報処理回路5による、図3Aに示すように、前後に動かしながらのパターンマッチング作業との間には質的な差があることを示している。本発明者らの構成は、実時間制約付きの設定であっても実時間制約なしのムーアマシンをフィルタMA,Nとして生成する。
【0035】
ムーアマシンフィルタMA,Nの出力は、いくらかの文字が未使用の文字⊥でマスクされることを除けば入力(実時間制約付き)文字列と同じである(なお、本明細書において、文字⊥は、ムーアマシンフィルタMA,Nに入力される文字列(入力文字列)を構成する文字のセットの中に含まれ得ない文字を意味する)。例えば、パターンA=aa*bの下ではw=abbbbbaabはab⊥⊥⊥⊥aabに加工される。連続した⊥の長さをバイナリ表示することにより、データのサイズは指数的に減少する。さらに、もしマッチングした部分文字列w|[i,j]にだけ興味があるなら(つまり添字i,jに興味がないなら)、さらに連続した⊥を1つの⊥に潰すことができる。フィルタリングの段階ですべての⊥を除いてしまうことは、パターンマッチングの段階で偽物のマッチングを起こすかもしれないことに注意する(図2参照)。
【0036】
本発明者らのムーアマシンフィルタMA,Nは、パターンオートマトンAとバッファサイズを表わす正整数Nから構成される。パラメータNによって、利用者はフィルタリングのコスト(Nを大きくすると、ムーアマシンフィルタMA,Nの状態数は増える)とフィルタをかけた文字列のサイズ(Nを大きくすると⊥が増え、つまりフィルタをかけた文字列は小さくなる)とのバランスを選ぶことができる。この柔軟性は、このアルゴリズムを様々なハードウェアの設定に適したものにしている。
【0037】
本発明者らはこの構成を実装し、実時間制約付きの設定(こちらのほうが難しい)についての実験結果を示す。例は自動車の分野から選んだものである。その結果、実際の問題に即したパターン(実時間制約付きオートマトン(TA))Aと入力のタイムスタンプ付き文字列wについて、フィルタされた文字列は元の文字列wに比べて2~100倍短くなりうることを見る。さらに、ムーアマシンフィルタMA,Nを実行するのは計算量的に軽いことを実験的に確認する。さらに、図2のフィルタ部7を使うことで、実時間制約付きパターンマッチング自身も1.2~2倍加速することを見る。
【0038】
この構成の理論的な解析について、本発明者らは健全性、すなわち元の入力文字列の全てのマッチングがフィルタによって保たれることを証明する。この健全性は、実時間制約付き、なしの両方について証明される。しかしながら、健全性は自明な恒等のフィルタによって満足されることに注意されたい。よって、健全性そのものからはフィルタリングの恩恵はあまり分からない。実験に加えて、本発明者らは実時間制約なしの設定でのフィルタリングの性能についてのいくらかの理論的な結果について述べる。これは次のようなものである。
【0039】
言語L(A)が有限のとき(複数文字列マッチングの設定)の完全性(全ての不要な文字列がマスクされるという意味)と、単調性(Nを大きくするとフィルタリングの結果が良くなる)とは、実時間制約付きの設定は実時間制約なしの設定と基本的な考えは共通しているので、これらの結果もまた実時間制約付きの構成の性能上の優位性を示している。
【0040】
本発明者らのフィルタの構成はオートマトン理論的であり、次の2つの基本的なステップからなる。(1)(サイズNの)バッファを用意し、(2)決定化する。実時間制約付きの設定での2番目のステップのために、所与の実時間制約付きオートマトン(Timed Automaton:TA)を1クロック決定的TAで過大評価する、TAの1クロック決定化(例えば、非特許文献2の5.3節参照)を利用する。
【0041】
1.5 貢献
本発明者らの貢献(実施形態の特徴であるSTF(Special Technical Features))は次のようにまとめられる。
(1)オートマトンAに対する実時間制約なしパターンマッチングのためのフィルタMA,Nの構成。フィルタはムーアマシンで与えられ、従って単純かつシーケンシャルで同期的に動作する。さらに、論理回路によるハードウェアアクセラレーションと相性が良い。パラメータNによって、利用者は計算コストとフィルタリングの効果のトレードオフを調整することができる。
(2)実時間制約付きパターンマッチングのためのムーアマシンフィルタMA,Nの構成。パターンとしての実時間制約付きオートマトンAとバッファサイズが与えられたとき、(実時間制約なし)ムーアマシンフィルタMA,Nを構成する。この構成は実時間制約なしのものの拡張なのでより一般的であり、パターン実時間制約付きオートマトンのゾーンにもとづく構成を利用している。実用性も考慮すると、本発明者らはこの実時間制約付きの構成がこの実施形態の主な貢献であると考える。
(3)健全性(全てのマッチングの保存)が実時間制約付き、実時間制約なしの設定で証明される。
(4)実時間制約付きの設定で、さらに本発明者らのフィルタの性能についての理論的な結果を証明する。
(5)実時間制約付きの構成の実装、及び本発明者らのフィルタの構成の利益を示す実験。
【0042】
1.6 パターンマッチング対パターン検索
モニタリングのもう1つの数学的な定式化(つまりパターンマッチングのもう1つの選択肢)は、本発明者らの言うところのパターン検索問題である。これは、マッチング集合(1.2節参照)が空かそうでないかを問うものである。パターン検索は簡単に所属判定問題に帰着されるため魅力的である。大雑把に言うと、パターンオートマトンAが与えられたとき、まず初期状態に自己ループを付け足して入力文字列の接頭辞を無視できるようにし、あとは受理状態がアクティブになるかどうかを監視すればよい。パターン検索はモニタリングの文脈ですでに十分に研究されている。
【0043】
パターンマッチングは添字を覚えておく必要があり(図3A)、パターン検索よりも計算量的に高くつく。しかしながら、実世界のモニタリングアプリケーションと強い関係がある(特に下記の例1.3にあるような遠隔モニタリングにおいて)。遠隔モニタリングはしばしば単に準オンラインであることに注意されたい。というのは、ログはかなりの大きさの塊で途切れ途切れにモニタに届くかもしれない。従って、受け取ったログのどの部分が警告を出しているのかを取り出すことができるというのが必須である。
【0044】
パターンマッチングのモニタリングアプリケーションへの適用可能性はコミュニティでよく認知されており、近年文献は急増している(例えば、非特許文献4,5参照)。
【0045】
(例1.3)(準オンライン遠隔モニタリング):遠隔モニタリング(図1)の具体例として、準ネットワーク接続自動車を考えよう。これは運転ログをメモリに保持し、既知の無線ネットワークの範囲に停車したらそのログをインターネット経由でセンターに送信する。ログの解析はセンターで行なわれる。運転ログは自動車の位置、速度とアクセルについての情報を含むタイムスタンプ付き文字列である。そのようなタイムスタンプ付き文字列wの1つ(ROSBAGSTORE,rosbag.tier4.jpから取られたもの)は、自動車の位置をプロットすると図3Bのように見える。
【0046】
図3Bは従来文献でのパターンマッチングにおける位置プロットの一例を示す平面図であり、図3C図3Bの位置プロットでの区間の特定を示す平面図である。
【0047】
ここで、「プロットは不連続である。」というのは、例えばGPS信号の喪失などによりデータがなくなるかもしれない。このような道の区間のうち、アクセルが10秒以上ある閾値を超えるものに興味があるとする。適切なパターンオートマトンAで文字列wに実時間制約付きパターンマッチングを実行する。特定した時間区間を位置のプロットにマッピングすると、知りたかった道の区間を特定することができる(図3C参照、ハッチング部分はツールMONAAによって生成)。
【0048】
(実施形態の構成)2章で用語を定義する。3章で実時間制約なしパターンマッチングのためのムーアマシンフィルタを構成する。さらに、健全性といった性質も証明する。4章でも同じ考えが、より複雑な問題である実時間制約つきパターンマッチングのためのフィルタリングに使われる。ここで健全性を証明する。5章では実時間制約つきの場合の実装と実験結果が示される。関連研究については6章で議論する。
【0049】
2.準備
【0050】
集合
【0051】
【数3】

はΣ上の文字列の集合である。文字列w=a…a(ここで、a∈Σ)の長さnは|w|と書かれる。
【0052】
非決定的有限オートマトン(NFA)A=(Σ,S,s,S,E)と、共通したアルファベットΣ上の文字列w∈Σ*について、文字列w上のオートマトンAのラン(RUN)
【0053】
【数4】

は列
【0054】
【数5】

であって、任意のi∈[1,|w|]について(si-1,w,s)∈Eが成り立つもののことである。ラン
【0055】
【数6】

はs|w|∈Sが成り立つとき受理する(受理状態となる)という。
【0056】
Xの冪集合はP(X)と書かれる。XとYの非交和はX凵Yである。アルファベットΣについて、未使用の記号⊥で拡張された集合Σ凵{⊥}はΣと書かれる。
【0057】
集合{1,2,…,N}をカウンタの値域として用いる。その代数的構造(例えばモジュロNでの足し算)を利用するので、これはZ/NZと書かれる。
【0058】
ムーアマシンはM=(Σin,Σout,Q,q,Δ,Λ)である。ただし、ΣinとΣoutは入力と出力のアルファベットであり、Qは状態の有限集合、q∈Qは初期状態、Δ:Q×Σin→Qは遷移関数、Λ:Q→Σoutは出力関数である。ムーアマシンMと入力文字列w=a…a∈Σ*in(ただしa∈Σin)について、文字列w上のムーアマシンMのラン
【0059】
【数7】

は列
【0060】
【数8】

であって、任意のi∈[1,|w|]についてq=Δ(qi-1,a)を満足するものである。このとき、文字列w上のムーアマシンMの出力文字列w'∈Σ*outは、w'=Λ(q)Λ(q)…Λ(qn-1)∈Σ*outである。
【0061】
3.パターンマッチングのためのムーアマシンフィルタリング1:実時間制約なし
【0062】
3.1 問題の定式化
(定義3.1)(実時間制約なしパターンマッチング):アルファベットΣ上の非決定的有限オートマトン(NFA)Aと文字列a…a∈Σ*について、パターンマッチング問題はマッチング集合
【0063】
【数9】

を問うものである。ただし、w|[i,j]=ai+1…aである。
【0064】
本発明者らの目標は図2に示されたワークフローである。フィルタ部7の入出力の型を次のような一般的な定義で定めよう。
【0065】
(定義3.2)(実時間制約なしパターンマッチングのためのムーアマシン):オートマトンAをアルファベットΣ上の非決定的有限オートマトン(NFA)とし、Nを正整数とする。オートマトンAのバッファサイズNのフィルタとは、ムーアマシンフィルタM=(Σin,Σout,Q,q,Δ,Λ)であって、次を満足するものである。
【0066】
(1)Σin=Σout=Σ
(2)w=a…a∈Σ*を任意の文字列とし、終端に⊥を付け足した文字列w⊥を考える。この文字列w⊥についてのムーアマシンMの出力文字列は⊥w'の形でなければいけない。ただし、文字列w'=b…bであり、文字bは任意のiについてマスク⊥か文字aかのどちらかである。位置iにある文字aはb=aが成立するとき通過したという。そうでなければ(つまりb=⊥なら)、文字aはマスクされたという。
【0067】
ムーアマシンフィルタMは全てのマッチング区間を保つときに健全であるという。これは、
【0068】
【数10】

となる任意のk∈[1,n]についてb=aが成立するという意味である。
【0069】
図4は実施形態におけるフィルタリングのパディング処理を示す概念図である。
【0070】
バッファサイズNと、入出力文字列の⊥での付け足しについて説明しよう。付け足しは、図4に図示される方法で、Nステップ遅れてフィルタリングがされていることを意味する。この遅れは本発明者らのムーアマシンの動作の仕方のためである。というのは、このムーアマシンは入力文字列を左から右に読み、状態空間Qにエンコードされる形式で、N文字をFIFOバッファに蓄え、FIFOバッファから文字を取り出すときにそれを出力文字列として出力する。そういうわけで、Nステップ分の遅れが生じるのである。
【0071】
図5は実施形態におけるムーアマシンによるフィルタリング処理を示す概念図である。
【0072】
図5において、まず最初に、バッファは⊥で埋め尽されており(図5のステップS0)、これが出力文字列⊥w'に接頭辞⊥が現れる理由である。入力文字列w⊥の末尾の付け足し⊥はバッファの内容を取り出すのに必要である(ステップS(n+1)からステップS(n+N))。図5の処理の途中で、文字列w=a…aの文字のいくらかがマスクされる(b=⊥)が、この図5の中ではそれは明示されていない。
【0073】
3.2 ムーアマシンフィルタMA,Nの構成
【0074】
(定義3.3)((実時間制約なし)パターンマッチングのためのムーアマシンフィルタMA,N):Σをアルファベットとし、Nを正整数とし、A=(Σ,S,s,S,E)を非決定的有限オートマトン(NFA)とする。ムーアマシンフィルタMA,N=(Σ,Σ,Q,q,Δ,Λ)を次のように定義する。
【0075】
ここで、状態空間Qは
【0076】
【数11】

とする。ここで、Z/NZはモジュロNでの足し算を備えたN元集合である。
【0077】
初期状態は
【0078】
【数12】

である。
【0079】
遷移Δ:Q×Σ→Qは次のように定める。任意のa∈Σについて、
【0080】
【数13】
【0081】
ただし、
【0082】
【数14】

であり、
【0083】
【数15】

である。
【0084】
ここで、
【0085】
【数16】

である。
【0086】
最後に、出力関数Λ:Q→Σを次のように定める。
【0087】
【数17】
【0088】
直観について述べる。ムーアマシンフィルタMA,Nの構成は次の3つのブロックを組合せたものである:それは、決定化の処理部(詳細後述する図15のCPU20)、カウンタ(図15の22bに含まれる)、サイズNのバッファ(図15の22a)である。
【0089】
(決定化)パターンAは非決定的有限オートマトン(NFA)であるが、本発明者らが欲
しいのは決定的ムーアマシンである。この決定化は状態空間Qの部品
【0090】
【数18】

に冪集合による構成Pが現れる理由を説明している。例えば、この部品の元{(s,n),…,(s,n)}は「非決定的有限オートマトン(NFA)Aにおいて、状態s,…,sはアクティブである」ということを意味している。式(4)を見ると、これは普通の決定化をしていることがわかる。例外は式(4)で(s,0)を追加していることである。これは、入力文字列のどこからでもマッチングを始められるようにするためである。
【0091】
(カウンタ)さらに、オートマトンAを動き回るアクティブな状態は、初期状態から何ステップ移動したかを表わすカウンタを(図15の22b内に)持っている。これは状態空間Qの部品Z/NZである。これらのカウンタの最大値はバッファサイズNと同じである。最大値に達すると、カウンタは1から始まる。式(4)を見ると、アクティブな状態のカウンタがモジュロNで1つ増加することが分かる。なお、例えばカウンタの最大値を2×Nとして,増加値を1でなく2に設定してもよく、増加値は1に限定されず、2又は3等の自然数の所定値であってもよい。
【0092】
(バッファ)サイズNのFIFOバッファ(図15の22a)は状態空間Qに2番目の部品
【0093】
【数19】

が現れる理由を説明している。N個のセルそれぞれがΣの文字とラベル(pass又はmask)を保持している。式(3)と式(5)を見ると、バッファの基本的な動作は一番左の要素を取り出し、読んだ文字を右に追加することだと分かる。
【0094】
ある文字をマスクするかどうかを決めるのは、バッファのラベル(pass又はmask)である。規定のラベルはmask(式(5)の3番目の場合)であり、Nステップの間そのまま変わらないなら出力の対応する文字は⊥でマスクされる(式(6)の2番目の場合)。ラベルはmaskからpassに2つの異なる理由で変わりうる(式(5)のはじめの2つの場合)。
【0095】
1.式(5)の2番目の場合は、バッファの終端までの複数の文字がパターンAに対してマッチングを成し、パターンAの受理状態s∈Sに導くときである。このとき、これらの複数の文字を「pass」でマークし、パターンマッチングに渡さなくてはいけないことを明示する(図2)。渡される文字数ψ(S')はアクティブな状態s∈Sに関連付けられたカウンタnを用いて計算される。
2.式(5)のはじめの場合の条件
【0096】
【数20】

は、あるアクティブな状態sのカウンタが最大値Nに達したという意味である。この場合、Aのこのアクティブ状態sが最終的に受理状態に到達するのかどうかがはっきりしない。安全側に倒すために、N個の文字全てをマスクせずにパターンマッチングに引き渡す。実時間制約なしの設定では、フィルタリングの完全性が失われるかもしれない箇所はここだけである。
【0097】
まとめると、定義3.3では図5に図示された方法で動作するムーアマシンを構成している。ムーアマシンの状態空間は次のものを組合せたものである:パターンNFA Aの決定化、初期状態からのステップ数を数えるカウンタ、そして、パス(pass)かマスク(mark)でラベル付けされたN文字を蓄えるFIFO(First-In First-Out)バッファである。
【0098】
(命題3.4):ムーアマシンMA,Nは定義3.2の意味で、AのバッファサイズNのフィルタである。
【0099】
本発明者らの実装ではフィルタを定義3.2で述べたような、状態空間
【0100】
【数21】

を持つようなムーアマシンそのままとしては実現していない。代わりに、状態空間Qを「バッファ部分」
【0101】
【数22】

と「非バッファ部分」
【0102】
【数23】

に分割して、前半のバッファ部分を必要になり次第生成している。より正確に述べると、非バッファ部分ははじめに、決定的有限オートマトン(DFA)として一度に構成され、このDFAはサイズNの配列として実現されたバッファ部分をどのように制御するかを支配している。実例を例3.6に示す。
【0103】
(命題3.5):A=(Σ,S,s,S,E)を非決定的有限オートマトン(NFA)とする。誘導されたムーアマシンフィルタMA,Nについて、その状態空間の非バッファ部分P(S×(Z/NZ))のサイズはO(2N・|S|)で押さえられる。
【0104】
従って、遷移を含めた非バッファ部分のメモリ使用量はO(2N・|S|・|Σ|)である。バッファ部分のメモリ使用量はO(N・log|Σ|)である。まとめると、本発明者らのムーアマシンフィルタMA,Nを実行するときの空間計算量はO(2N・|S|・|Σ|)である。
【0105】
空間計算量はNについて指数的であるが、これは非バッファ部分P(S×(Z/NZ))のための冪集合構成に由来する。しかしながら、実験的にはメモリ消費量は必ずしもNについて指数的には増大しない。これは、P(S×(Z/NZ))の全ての状態に到達可能というわけではないからである(5章のRQ2を参照)。
【0106】
図6Aは実施形態に係る非決定的有限オートマトン(NFA)であるパターンの一例を示す図であり、図6Bは実施形態に係るムーアマシンフィルタの非バッファ部分の一例を示す図である。また、図7Aは所定の文字列に対するムーアマシンフィルタのランを示す図である。
【0107】
(例3.6):パターンaa*bを考える。これは図6Aの非決定的有限オートマトン(NFA)Aに示されている。定義3.3のムーアマシンフィルタMA0,2図6Bに示されており、ここでは、バッファ状態は省かれている。文字列w=abbbaabでのランは図7Aに示されている。その出力文字列は⊥⊥ab⊥⊥aabであり、これはフィルタリング結果がab⊥⊥aabであることを示している。
【0108】
図7Aは、文字列w=abbbaabに対するMA0,2のランを示す。図7Aにおける表はバッファの状態を表し、バッファは右から文字のデータが追加される。「上からa、矢印、bの記号」は入力文字がaであり、bが出力であることを表わす。
【0109】
3.3 ムーアマシンフィルタMA,Nの性質
この節の残りでは、AをパターンNFA(非決定的有限オートマトン)A=(Σ,S,S,E,S)、Nを正整数、MA,N=(Σ,Σ,Q,q,Δ,Λ)を定義3.3のムーアマシンフィルタとする。w=a…aをΣ上の文字列とし、⊥w'を入力文字列w⊥に対するムーアマシンフィルタMA,Nの出力文字列とする。文字列w'=b…bとする。ただし、b∈Σである。
【0110】
(定理3.7)(健全性):ムーアマシンフィルタMA,Nは定義3.2の意味で健全である。マッチングの長さに上界があり、バッファサイズNがその上界以上ならば完全性が成立する。これは本質的には複数文字列マッチングと同じである。
【0111】
(定理3.8)(完全性):max{|w|||w∈L(A)}≦N<∞を仮定する。このとき、L(A)=L(A')となる非決定的有限オートマトン(NFA)A'であって、ムーアマシンフィルタMA',Nが完全であるものを構成することができる。後半は次のことを意味する:もし添字kがa=bを満たすなら、k∈[i,j]とw|[i,j]∈L(A)となる区間[i,j]が存在する。
【0112】
単調性の直観は、バッファサイズN'を大きくすればムーアマシンフィルタMA,N'はより多くの文字をマスクするけれども、状態空間も増大するということである。正確な主張はもっと込み入っていて、より大きなバッファサイズN"というのはより小さなものの倍数でなくてはいけない。
【0113】
(定理3.9)(単調性):任意の正実数N'について、MA,N'を定義3.3のムーアマシンフィルタとし、⊥N'w'(N')を入力文字列w⊥N'に対するムーアマシンフィルタMAN'の出力文字列とする。w'(N')=b (N') (N')…b (N')とする。ただし、b (N')∈Σである。任意の正実数n、N'とwの任意の添字kについて、b (N')=⊥ならばb (nN')=⊥である。
【0114】
命題3.5で述べたように、ムーアマシンフィルタの状態空間はAの状態空間よりも指数的に大きい。これは決定的な分岐のために必要な冪集合構成のためである。実行時間を犠牲にすることにより、非決定的有限オートマトン(NFA)を必要になり次第決定化することもでき、こうすれば普通はより少ないメモリ領域しか必要としない。
【0115】
4.パターンマッチングのためのムーアマシンフィルタリング2:実時間制約付き
本発明者らの主な貢献である、実時間制約付きパターンマッチングのためのムーアマシンフィルタの構成を提案する。基本的な考えは実時間制約なしの設定(3章)と同じだが、実時間制約付きオートマトン(Timed Automata;TA)は一般には決定化ができないので、決定化が技術的な課題になる。ここで、本発明者らは1クロック決定化(例えば、非特許文献2の5.3節参照)を用いる。その構成は到達可能性を過大評価するので、フィルタリングの健全性を保つことができる。しかも、結果のTAの局所的な性質(そのTAは遷移毎にリセットされる1つのクロック変数しか持たない)によって、実時間制約なしの有限状態ムーアマシンであるフィルタを作ることができる。
【0116】
4.1 問題の定式化
(定義4.1)(タイムスタンプ付き文字列):Σをアルファベットとする。アルファベットΣ上のタイムスタンプ付き文字列とは、対(a,τ)∈Σ×R>0の文字列wで、任意のi∈[1,|w|-1]についてτ<τi+1を満足するものである。
【0117】
【数24】

をタイムスタンプ付き文字列とする。アルファベットΣ上のタイムスタンプ付き文字列の集合をT(Σ)と書く。
【0118】
部分文字列(a,τ),(ai+1,τi+1),…,(a,τ)をw(i,j)と書く。t∈R≧0について、文字列wのtシフト(時間tだけをシフトする)を
【0119】
【数25】

と定める。ただし、
【0120】
【数26】

である。タイムスタンプ付き文字列
【0121】
【数27】

【0122】
【数28】

について、これらの吸収連結とは、
【0123】
【数29】

であり(ただし
【0124】
【数30】

【0125】
【数31】

はどちらも普通の連結)、これらの非吸収連結とは
【0126】
【数32】

である。吸収連結w○w'はτ|w|<τ'のときにのみ定義されることに注意する。
【0127】
アルファベットΣ上のタイムスタンプ付き文字列
【0128】
【数33】

と、時刻t,t'∈R>0で、時刻t<t'を満足するものについて、タイムスタンプ付き文字列区間w|(t,t')は、拡張アルファベットΣ凵{$}上のタイムスタンプ付き文字列(w(i,j)-t)○($,t'-t)で定義される。ここで、パラメータi,jはτi-1≦t<τとτ<t'≦τj+1となるように選ばれている。ここで、タイムスタンプ付き文字列w(i,j)-tはw(i,j)の(-t)シフトであり、未使用の記号$は終端文字とよばれる。
【0129】
(定義4.2)(実時間制約付きオートマトン):Cはクロック変数の有限集合を表し、Φ(C)は不等式
【0130】
【数34】

の複数の連言の集合を表わしている。
【0131】
ここで、x∈C,c∈Z≧0であり、
【0132】
【数35】

である。実時間制約付きオートマトンA=(Σ,S,s,S,C,E)は組であって、Σはアルファベット、Sは状態の有限集合、s∈Sは初期状態、S⊂Sは受理状態の集合、E⊂S×S×Σ×P(C)×Φ(C)は遷移の集合である。遷移の複数の構成要素(s,s',a,λ,δ)∈Eは、ソース、ターゲット、アクション、リセット変数、遷移のガードをそれぞれ表わしている。
【0133】
クロック付値νを関数ν:C→R≧0として定義する。クロック付値νのtシフトν+tを(ν+t)(x)=ν(x)+tで定義する。ここで、t∈R≧0である。実時間制約付きオートマトンA=(Σ,S,s,S,C,E)とタイムスタンプ付き文字列
【0134】
【数36】

について、w上のAのランとは組(s,v)∈S×(R≧0の列rであって、次の条件を満足するものである。
【0135】
(初期条件)sは初期状態であり、任意のx∈Cについてν(x)=0である。
【0136】
(連続条件)任意のi∈[1,|w|]についてνi-1+τ-τi-1|=δとν(x)=0(x∈λは任意)となるような遷移(si-1,s,a,λ,δ)∈Eが存在し、かつν(x)=νi-1(x)+τ-τi-1(x∈λでない)。
【0137】
ランであって連続条件のみを満たすものをパスとよぶ。ラン
【0138】
【数37】

はsの最後の要素s|s|-1がSに属するとき受理するという。言語L(A)はタイムスタンプ付き文字列の集合{w|w上のAの受理するランが存在する}と定義される。
【0139】
ここで、本発明者らの目標の問題を述べる。これを解くためのアルゴリズムは活発に研究されてきており(例えば、非特許文献4,5参照)、これらのアルゴリズムのためのプリプロセッサとしてのフィルタリングムーアマシンがこの実施形態の貢献である。
【0140】
(定義4.3)(実時間制約付きパターンマッチング):Aを実時間制約付きオートマトン、wをタイムスタンプ付き文字列とし、両方とも共通のアルファベットΣ上のものであるとする。実時間制約付きパターンマッチング問題は、区間w|(t,t')が実時間制約付きオートマトン(TA)Aに受理されるような区間(t,t')を全て求めるものである。つまり、マッチング集合
【0141】
【数38】

を求めるものである。
【0142】
4.2 TAの1クロック決定化
フィルタの実時間制約なしでの構成(定義3.3)で材料となった3つの主なブロックのうち、カウンタとバッファはこの実時間制約付きの設定にそのまま持ってくることができる。決定化については、定義4.5の過大評価の考えを用いる。これは(例えば、非特許文献2の5.3節参照)を参考にしたものである。
【0143】
まずは補助的な記号から始める。
【0144】
(定義4.4)(制限ν|,結びν凵ν'):ν:C'→R≧0をクロック付値とする。νのC⊂C'への制限はν|:C→R≧0と書かれる。これは、任意のx∈Cについて(ν|)(x)=ν(x)である。
【0145】
ν:C→R≧0とν':C'→R≧0をクロック付値とする。これらの結びν凵ν':C凵C'→R≧0を非交和C凵C'上のクロック付値として次のように定義する。
【0146】
【数39】
【0147】
関数でxをrに写す(任意のi∈{1,…,n}について)ものは
【0148】
【数40】

と書かれる。
【0149】
(定義4.5)(1クロック決定化):A=(Σ,S,s,S,C,E)を実時間制約付きオートマトン(Timed Automaton;TA)とし、yを未使用のクロック変数とする(言い換えると、y∈Cでない)。実時間制約付きオートマトン(TA)A'=(Σ,S',s',S',{y},E')は、以下の条件が成立するときにオートマトンAの1クロック決定化という。
【0150】
(1)新しい、有限の状態空間S'の任意の元
【0151】
【数41】

は対(s,Z)の有限集合
【0152】
【数42】

である。ここで、s∈SはAの状態であり、Z
【0153】
【数43】

の部分集合でゾーンとよばれる特殊な多角形により与えられるものである。
【0154】
(2)オートマトンA'の任意の遷移
【0155】
【数44】

について、ガードδはクロック変数yについての複数の区間の有限和集合である。さらに、それは遷移EがオートマトンAで有効かどうかを反映している。正確には、任意のu,u'∈R≧0でδを満たすものについて、
【0156】
【数45】

が成立している。ただし、集合
【0157】
【数46】

【0158】
【数47】

で定義される。
【0159】
(3)オートマトンA'の任意の遷移は唯一のクロック変数yをリセットする。つまり、全ての遷移
【0160】
【数48】

について、λ={y}である。
【0161】
(4)オートマトンA'の任意の遷移
【0162】
【数49】

はAの遷移を模倣する。より正確には、
【0163】
【数50】

【0164】
【数51】

とする。s'∈Sとν':C→R≧0(ここで、τは経過時間)が存在して、
【0165】
【数52】

がオートマトンAの(長さ1の)パスであると仮定する。このとき、ゾーン
【0166】
【数53】

であって、
1)
【0167】
【数54】

2)付値
【0168】
【数55】

(これはクロック集合C凵{y}上のものである)はゾーンZ'に属する。
【0169】
(5)オートマトンA'は決定的である:任意の状態
【0170】
【数56】

、任意のクロック付値
【0171】
【数57】

、a∈Σ、経過時間を表わすτ∈R≧0について、
【0172】
【数58】

からの長さ1のa,τでラベル付けされたパスは一意である。つまり、もし
【0173】
【数59】

【0174】
【数60】

が両方ともオートマトンA'のパスならば、
【0175】
【数61】

かつν'=ν"となる。(条件3のために
【0176】
【数62】

となっていることに注意する。)
【0177】
(6)オートマトンA'の初期状態s'は
【0178】
【数63】

で与えられる。ここで0は全てのクロック変数を0に写す付値である。
【0179】
(7)状態SがS'に属するのは、s∈Sとなる
【0180】
【数64】

が存在するとき、かつそのときに限る。
【0181】
(命題4.6):A=(Σ,S,s,S,C,E)を実時間制約付きオートマトン(TA)とする。オートマトンA'=(Σ,S',s',S',{y},E')をオートマトンAの1クロック決定化とする。このとき、オートマトンA'は次の性質を満足する。
【0182】
(シミュレーション)w∈T(Σ)をタイムスタンプ付き文字列とし、オートマトンAで状態s∈Sに到達するような文字列w上のランが存在するとする。このとき、次を満足する
【0183】
【数65】

が存在する:(1)あるゾーンZについて
【0184】
【数66】

となる、(2)オートマトンA'で状態Sへの文字列w上のランが存在する。
【0185】
(言語包含)特に、L(A)⊂L(A')である。
【0186】
定義4.5が与えているのは性質であって構成ではないことに注意する。同じ実時間制約付きオートマトン(TA)Aについて、サイズや精度の異なる1クロック決定化は複数存在する。本発明者らの実装では例えば、非特許文献2の5.3.4項で提案されている特定の構成を用いている。
【0187】
4.3 本発明者らのムーアマシンフィルタMA,Nの構成
(定義4.7)(実時間制約付きパターンマッチングのためのムーアマシンフィルタMA,N):A=(Σ,S,s,S,C,E)を実時間制約付きオートマトン(TA)とし、N∈Z>0とする。ムーアマシンフィルタMA,Nの構成は以下のステップに従って行なわれる。
【0188】
まずはじめのステップでは、もとの実時間制約付きオートマトン(TA)Aをカウンタで拡張する。具体的には、
【0189】
【数67】

を次のように定義する。
【0190】
【数68】

、そして
【0191】
【数69】
【0192】
2つ目のステップでは、オートマトンAN-ctrの1クロック決定化(定義4.5)を取る。
【0193】
【数70】

がその結果であるとする。
【0194】
最後に3つ目のステップでムーアマシンフィルタMA,Nを次式のように定義する。
【0195】
【数71】
【0196】
ただし、ΔとΛは次のように定義される。
【0197】
【数72】

、ただし、状態S'はオートマトンAN-ctr-dでの状態Sの、文字aと経過時間τのもとでの一意な後続であり(定義4.5)、
【0198】
【数73】

は次式のように定義される。
【0199】
【数74】
【0200】
ここで、
【0201】
【数75】

である。
【0202】
【数76】

と定義する。
【0203】
図7Bは実施形態に係る前置情報処理回路の処理回路の一例を示すブロックである。図7Bにおいて、当該処理回路は、フィルタ部11と、マスキング適用部12とを備えて構成される。
【0204】
得られるムーアマシンは入力としてタイムスタンプ付き文字列を取ることに注意する。これによって、入力アルファベットは無限になってしまう(つまり、Σ×R≧0)。これは実装上大きな問題にはならない。というのは、状態空間は有限のままだからである。しかも、ムーアマシンフィルタMA,N図7Bのフィルタ部11)の出力アルファベットは2元集合{pass,mask}であり、ムーアマシンフィルタのオートマトンはマスクの情報しか出力しない。有限状態ムーアマシンでは確かに実時間制約付き複数の文字をバッファしておくことはできないが、もとのタイムスタンプ付き文字列をコピーしておいて、あとで適当なマスキングをマスキング適用部12により適用することはできる(図7B参照)。
【0205】
(定理4.8)(健全性):オートマトンAをパターンTA A=(Σ,S,s,S,C,E)とし、Nを正整数とし、MA,Nを定義4.7のムーアマシンフィルタとする。w=(a,τ)(a,τ)…(a,τ)をΣ上のタイムスタンプ付き文字列とし、maskw'を入力文字列w(⊥,τに対するムーアマシンフィルタMA,Nの出力文字列とする(ここで、入出力文字列はmaskと(⊥,τ図4のように付け足されているとする)。文字列w'=b…bとする。ここで、b∈{pass,mask}である。
【0206】
任意の文字列wの添字の対(i,j)でw(i,j)-τi-1∈L(A)を満足するものと、文字列wの添字k∈[i,j]について、b=passとなる。
【実施例1】
【0207】
5.実施例1(実装と実験)
本発明者らは実時間制約付きパターンマッチングのためのムーアマシンフィルタの構成を実装した(実施例1)。本発明者らの実装は連続する⊥を2つの⊥でつぶし、はじめと最後の⊥のタイムスタンプを保つようになっている。状態空間Qのバッファ部分は必要になり次第生成するようになっており(定義4.7の{pass,mask})、これは命題3.5で述べた通りである。本発明者らは次の研究の疑問(RQ)に答えるための実験を行なった。
【0208】
RQ1:本発明者らのムーアマシンフィルタは沢山のイベントをマスクするか?
RQ2:本発明者らのムーアマシンフィルタはオンラインで動作するか?
つまり、入力のタイムスタンプ付き文字列の長さに対して線形時間と定数空間で動作するか?
RQ3:本発明者らのムーアマシンは実時間制約付きパターンマッチングのタスク全体を加速するか?
RQ4:本発明者らのフィルタは高精度か?
つまり、マスクされなかったイベントの多くが実際のマッチングに寄与するか?
RQ5:本発明者らのフィルタの反応は早いか?
つまり、大きな遅れが生じはしないか?
【0209】
フィルタ構成の実装はC++言語で行い、clang-900.0.39.2でコンパイルした。ツールの入力はパターンTA AとバッファサイズN、そしてタイムスタンプ付き文字列wからなり、フィルタされた文字列を出力する。実験はパーソナルコンピュータ(MacBook Pro Early 2013 with 2.6 GHz Intel Core i5 processor and 8GB 1600MHz DDR)のRAM上のMac OS 10.13.4で行なった。用いたベンチマーク問題は図8図10にある。これらは全て自動車のシナリオから取られたものである。
【0210】
図8は実施例1に係る自動車のトルクセンサのデータのためのムーアマシンフィルタの一例を示す図である。
【0211】
図8において、入力文字列の集合W(長さは242,808から4,873,207)はランダムな入力により自動車エンジンのモデルであるsldemo_enginewc.slxから生成された。このパターンは1秒以内にhighの発生が4回以上あることを記述している。バッファサイズN=10については、ムーアマシンフィルタMA,10のサイズ(SN-ctr-dの非バッファ部分の到達可能状態の数ではかった)は16であった。
【0212】
図9は実施例1に係る自動車のギアセンサのデータのためのムーアマシンフィルタの一例を示す図である。
【0213】
図9において、入力文字列の集合W(長さは306から1,011,426)は自動変速装置のモデルから生成された。当該モデルのφAT5から取ったこのパターンは、ギアシフトを(1速から2速に)過度に頻繁に行なうというイベントを表している。バッファサイズN=10のとき、図8と同じ方法でムーアマシンフィルタMA,10のサイズを測定すると、3であった。
【0214】
図10は実施例1に係る自動車のアクセルセンサのデータのためのムーアマシンフィルタの一例を示す図である。
【0215】
図10において、入力文字列の集合W(長さは708から1,739,535)はギアと同じモデルで生成された。パターンはφAT8と同じである:ギアは1速から4速までシフトし、RPMも高くなるが、速度は低い(言い換えると、v≧100というイベントがおこらない)。バッファサイズN=10について、ムーアマシンフィルタMA,10のサイズを図8と同じ方法で測定すると、71であった。
【0216】
実行時間とメモリ使用量の計測のために、本発明者らはGNUのtimeを用い、20回の実行の平均を取った。それぞれの実験で、本発明者らはワークフロー全体を計測した。RQ2では、フィルタの構成を含めた時間とメモリ使用を、RQ3ではフィルタの構成、フィルタリング、プロセス間通信とパターンマッチングの時間とメモリ使用量を計測している。RQ3の実験では、実時間制約付きパターンマッチングのための最新のツールであるMONAAを使用した。
【0217】
RQ1:フィルタリング率
【0218】
図11Aは実施例1に係る自動車のトルクセンサのデータに対するムーアマシンフィルタのシミュレーション結果であって、入力された実時間付き文字列長に対するフィルタされた実時間付き文字列長を示すグラフである。図11Bは実施例1に係る自動車のギアセンサのデータに対するムーアマシンフィルタのシミュレーション結果であって、入力された実時間付き文字列長に対するフィルタされた実時間付き文字列長を示すグラフである。図11Cは実施例1に係る自動車のアクセルセンサのデータに対するムーアマシンフィルタのシミュレーション結果であって、入力された実時間付き文字列長に対するフィルタされた実時間付き文字列長を示すグラフである。すなわち、図11A図11Cはそれぞれの実時間制約付きオートマトンA、バッファサイズN、タイムスタンプ付き文字列w∈Wについてのフィルタされたタイムスタンプ付き文字列長を示している。
【0219】
図11A図11Cから明らかなように、バッファサイズNが大きくなるほどフィルタされた文字列は短くなることがわかる。このことは、(その結果は実時間制約なしの設定だったものの)定理3.9での理論的な考察と符合する。ピーク性能は、バッファサイズN=10といった割合小さいNで実現されているように見える。バッファサイズN=10のときには、トルク、ギア、アクセルでのもとのタイムスタンプ付き文字列の長さはそれぞれ1/3,1/2,1/100程度になっている。アクセルについては、本発明者らのフィルタは多くの文字をフィルタしている。これは、アルファベットのサイズとパターン実時間制約付きオートマトンのサイズが比較的大きいためである。この劇的なデータの削減は本発明者らのフィルタリング手法が組み込みのシナリオで実用できることを示している(図1参照)。
【0220】
RQ2:速度とメモリ使用量
【0221】
図12Aは実施例1に係る自動車のトルクセンサのデータに対するムーアマシンフィルタのシミュレーション結果であって、入力された実時間付き文字列長に対する実行時間を示すグラフである。図12Bは実施例1に係る自動車のギアセンサのデータに対するムーアマシンフィルタのシミュレーション結果であって、入力された実時間付き文字列長に対する実行時間を示すグラフである。図12Cは実施例1に係る自動車のアクセルセンサのデータに対するムーアマシンフィルタのシミュレーション結果であって、入力された実時間付き文字列長に対する実行時間を示すグラフである。
【0222】
図13Aは実施例1に係る自動車のトルクセンサのデータに対するムーアマシンフィルタのシミュレーション結果であって、入力された実時間付き文字列長に対するメモリ使用量を示すグラフである。図13Bは実施例1に係る自動車のギアセンサのデータに対するムーアマシンフィルタのシミュレーション結果であって、入力された実時間付き文字列長に対するメモリ使用量を示すグラフである。図13Cは実施例1に係る自動車のアクセルセンサのデータに対するムーアマシンフィルタのシミュレーション結果であって、入力された実時間付き文字列長に対するメモリ使用量を示すグラフである。
【0223】
すなわち、図12図13はそれぞれのパターン実時間制約付きオートマトンA、バッファサイズN、タイムスタンプ付き文字列w∈Wについての、本発明者らのムーアマシンフィルタの実行時間とメモリ使用量を示している。
【0224】
図12では、実行時間は入力文字列に対して線形であることがわかる。図13では、メモリ使用量は入力文字列の長さに対して大体定数であることがわかる。これら2つの結果は、本発明者らのフィルタリング手法がオンラインで利用できることを示唆している。
【0225】
ムーアマシンフィルタの構成にかかる時間は無視できると考えられる。ここで図12の短い入力文字列に対する実行時間を参照せよ。
【0226】
バッファサイズNを様々に変化させることの影響については、小さなバッファサイズNについて実行時間は比較的大きくなっていることがわかる。これはより少ない文字がマスクされ、より多くの文字が出力され、そのことが入出力装置(I/O)のコストを悪化させたためだと考えられる。メモリ使用量については、命題3.5での最悪の場合の結果(Nについて指数的)に反して、大きなバッファサイズNに対する増大は穏やかであった。これは冪集合構成の全ての状態に到達可能なわけではないためである。
【0227】
RQ3:実時間制約付きパターンマッチングの加速
【0228】
図14Aは自動車のトルクセンサのデータに対する、比較例に係るツールのシミュレーション結果であって、入力された実時間付き文字列長に対する実行時間を示すグラフである。図14Bは自動車のギアセンサのデータに対する、比較例に係るツールのシミュレーション結果であって、入力された実時間付き文字列長に対する実行時間を示すグラフである。図14Cは自動車のアクセルセンサのデータに対する、比較例に係るツールのシミュレーション結果であって、入力された実時間付き文字列長に対する実行時間を示すグラフである。
【0229】
すなわち、図14図2のワークフローの実行時間を示している。ここで、フィルタは本発明者らのアルゴリズムで与えられ、パターンマッチングは最新のツールMONAAで行なわれている。より具体的には、ムーアマシンフィルタの標準出力をMONAAの標準入力にUnixのパイプラインで接続している。このようにすることで、フィルタとMONAAは異なるコアで並列に実行される。
【0230】
バッファサイズNが十分大きければ(例えばN=10)、フィルタリングによって実時間制約付きパターンマッチングの全体の性能は向上することがわかった。トルクとギアについては1.2倍高速化され、アクセルについてはおおよそ2倍高速化された。この加速は本発明者らのフィルタリング手法が図1に示された構成の仮定とは独立に有益かもしれないということを示唆している。ログが膨大でモニタリングが何時間、あるいは何日もかかってしまうときに、フィルタと並列に実行することによって時間が削減できるかもしれない。
【0231】
RQ4:精度
【0232】
3つの例トルク、ギア、アクセルと、バッファサイズN=10について、マスクされなかったイベントで実際のマッチングに貢献したものの比はそれぞれ、0.34%、99%、92%であった。従って、正確性はパターンによって劇的に異なることがわかる。精度の低い例(トルク)であっても、本発明者らのフィルタは確かにログのサイズをおおよそ3倍削減していることには注意されたい(図11A図11C)。
【0233】
この実時間制約付きの設定での正確性のなさのほとんどは1クロック決定化(定義4.5)のゆるさに起因する。例えば、トルクの実時間制約付きオートマトン(TA)(図8)は同じクロックxを使った1秒以内の4回連続のhighの発生を要求している。この1クロック決定化による最良の過大評価(遷移毎にすべての時計をリセットしなくてはいけない)は、長さ1以下の連続した4つの区間のそれぞれにhighが表われるという要求である。これは元の要求よりもかなり緩くなっており、トルクの例で比較的低精度になったことを説明している。
【0234】
RQ5:反応性
【0235】
3つの例トルク、ギア、アクセルとバッファサイズN=10について、本発明者らのフィルタによる平均の遅延(実行時間)/|w|×Nを計算した。結果はそれぞれ2.2マイクロ秒、3.1マイクロ秒、0.91マイクロ秒であった。これらの遅延はプロセッサの計算能力に大きく依存するとはいえ、これらの遅延は小さいフィルタは十分高速に動作すると結論する。
【0236】
6.関連研究
パターンマッチングの効率性はデータベースやネットワークの分野で活発に研究されてきた。これらの分野での、ハードウェア構成の問題(L1/L2キャッシュとメインメモリの間の速度の差)は本発明者らがこれまで議論してきた組み込みモニタ問題と類似している。
【0237】
これらの適用領域での研究は(複数かもしれない)文字列をパターンとして扱ってきた。ここで主な発想の源となってきたのは、Boyer-Moore、Commentz-Walter、Aho-Corasickといった古典的なアルゴリズムである。文字列の代わりに正規表現やオートマトンで与えられるパターンに対するアルゴリズムの多くはこれらの文字列マッチングの技法に依っている。
【0238】
データベースとネットワークにおいて、正規表現に対するパターンマッチングは主にマシン構成を考慮に入れた応用特化のヒューリスティクスにより行なわれてきた。
【0239】
実際のパターンマッチングの前の前置フィルタリングは上記の研究で考えられてきた(例えば、非特許文献3参照)。これらの研究と本発明者らの研究との主な違いは、彼らのフィルタはマッチング候補、すなわちマッチングするかもしれないものの添字を明示的に含んでいる点にある。このために、ワークフロー(本発明者らのよぶところのパターンマッチング)の2ステップ目は彼らの実施形態では検査とよばれている。これに対して、本発明者らのフィルタは入力文字列をマスクするだけである。これは本発明者らの(組み込みアプリケーションを見据えた)目的がマッチングの高速化だけでなく、センサからパターンマッチングの装置に送られるデータの量を削減することにもあるからである。この選択によってムーアマシンが使えるようになり、さらに、FPGA(Field Programmable Gate Array)又はASIC(Application Specific Integrated Circuits)によって容易に実装できるようになった。
【0240】
実時間時相論理や実時間制約付きパターンマッチング(例えば、非特許文献4参照)に対するモニタリングは比較的新しい話題である。このような研究は主に物理情報システムの文脈で研究されてきたが、データベースやネットワークへの応用の見込みも十分にある。実時間制約付きパターンマッチングでは、仕様は(この研究で用いた)実時間制約付きオートマトン、実時間制約付き正規表現や距離つき時相論理式で記述することができる。これらの定式化での仕様の実時間制約付きパターンマッチングのアルゴリズムは例えば、非特許文献1等で活発に研究されてきた。加えて、Boyer-MooreやFranek-Jennings-Smythのようなシフト表の技法と実時間制約付きオートマトン(例えば、非特許文献5参照)を組み合わせることにより実時間制約付きパターンマッチングを加速するものである。
【0241】
7.結論
近年の組み込みアプリケーションでのモニタリングの需要の高まりを受けて、本発明者らは(実時間制約なし、実時間制約付き)パターンマッチングのためのフィルタリングムーアマシンの構成を提案した。その構成はオートマトン理論的であり、ムーアマシンとしてフィルタを実現するものである。
【実施例2】
【0242】
図15は実施例2に係る前置情報処理回路4の構成例を示すブロック図である。図15において、前置情報処理回路4はムーアマシンフィルタの機能を有するプロセッサ回路であって、CPU20と、ROM21と、RAM22と、操作部23と、表示部24と、入力インターフェース25と、出力インターフェース26とがバス27を介して接続され構成される。
【0243】
図15において、CPU20はムーアマシンフィルタの処理を制御しながら実行するプロセッサである。ROM21は前置情報処理回路4を動作させるために必要なプログラム及びデータを格納する。RAM22はムーアマシンフィルタの処理(フィルタリング処理)を実行するときに用いるメモリ領域であって、例えばFIFOメモリであるバッファ部22a、及び非バッファ部22bが設けられている。なお、バッファ部22aは「バッファ22a」と呼ばれることもあり、非バッファ部22bは「非バッファ22b」と呼ばれることもある。またRAM22には、CPU20が実行する各種プログラム(生成プログラム22p1、メインプログラム22p2、サブプログラム22p3)がROM21からロードされる。これらのプログラムの詳細は後述する。入力インターフェース25は、入力されるシーケンスデータを受信して所定のデータ形式に変換した後、CPU20等に出力する。出力インターフェース26はCPU20によるムーアマシンフィルタの処理結果のシーケンスデータを所定のデータ形式に変換した後、外部回路又は外部回線に出力する。操作部23は例えばキーボード、マウスなどを含み、実行、停止、必要なデータの入力のために用いる。
【0244】
操作部23はまた、入力されるシーケンスデータの中から検索したいパターンの条件(マッチング条件と呼ぶ)を前置情報処理回路4に入力するために用いられる。マッチング条件は、文字列や正規表現の形式で入力されるとよい。あるいは、オートマトンとして前置情報処理回路4に与えられてもよい。また別の実施形態として、マッチング条件は、シーケンスデータとともに、入力インターフェース25を介して(たとえば外部の装置から)入力されてもよい。表示部24は例えば液晶ディスプレイであって、入力されるシーケンスデータ、出力されるシーケンスデータ等を表示する。
【0245】
図16に、バッファ部22aの構成例を示す。バッファ部22aは、前置情報処理回路4で動作する有限状態機械(具体的にはムーアマシン)の構成要素の一つである。詳細は後述するが、前置情報処理回路4で動作するムーアマシンは、本明細書の3.2節で説明したムーアマシンのように、状態空間をバッファ部分と非バッファ部分に分けて定義する。バッファ部22aは、状態空間のバッファ部分に相当する。
【0246】
バッファ部22aはN個のメモリブロック(22a-1,22a-2,...22a-N)を有するFIFOバッファである。各メモリブロック(22a-1,22a-2,...22a-N)はそれぞれ、入力されるシーケンスデータの一単位分のデータを格納するデータ領域と、フラグ領域を有する。図16において、行221aがデータ領域を表し、行221bがフラグ領域を表す。各データ領域は、シーケンスデータの一単位分のデータと同じサイズ(あるいはそれより大きいサイズ)の記憶領域である。たとえばシーケンスデータが文字列で、文字列を構成する各文字は1バイトキャラクターで、シーケンスデータが1文字ずつ(1バイトずつ)前置情報処理回路4に入力される場合、データ領域の大きさは1バイトでよい。
【0247】
各フラグ領域は一例として、1ビットの記憶領域で、0(mask)または1(pass)が格納される。以下では、フラグ領域に格納されるデータ(0または1)のことを「フラグ」と呼ぶ。またフラグ領域に格納される値0のことを"mask"と表記し、フラグ領域に格納される値1は"pass"と表記する。
【0248】
なお、実施例2に係る前置情報処理回路4では、バッファ部22aにシーケンスデータを入力する際、データは一番右のメモリブロック(22a-1)に格納される。メモリブロック(22a-1)にデータが格納される前に、一番左のメモリブロック(22a-N)のデータ(及びフラグ)はバッファ部22aから出力され、残りのメモリブロック(22a-1,22a-2,...22a-(N-1))のデータ及びフラグはそれぞれ、左隣のメモリブロック(22a-2,22a-3,...22a-N)に移される。以下の説明では、一番右のメモリブロック(22a-1)を「バッファ部22aの先頭」と呼び、一番左のメモリブロック(22a-N)を「バッファ部22aの末尾」と呼ぶ。
【0249】
なお、ここでは、各メモリブロック(22a-1,22a-2,...22a-N)がデータ領域とフラグ領域を有する例を説明したが、データ領域は無くてもよい。たとえば本明細書の4.3節で説明した定義に従うムーアマシンでは、4.3節に記載されているように、状態空間のバッファ部分には、データ(入力されるシーケンスデータ)は格納されずフラグのみが格納される。そのため、たとえば前置情報処理回路4で動作するムーアマシンが、本明細書の4.3節で説明した定義に従うムーアマシンである場合、バッファ部22aにデータ領域は不要である。
【0250】
続いて、実施例2に係る前置情報処理回路4で動作するムーアマシンの例を説明する。ここでは主に、前置情報処理回路4は入力されるシーケンスデータとしてタイムスタンプの付与されていない文字列を受け取り、受け取った文字列のフィルタリングを行うムーアマシンを生成するケースを説明する。この場合、前置情報処理回路4で動作するムーアマシンは、本明細書の3.2節で説明したものと同様のものになる。
【0251】
前置情報処理回路4で動作するムーアマシンは、入力されるシーケンスデータのマッチング条件に基づいて生成される。そのため、ムーアマシンの説明の前に、マッチング条件の例を説明する。以下の説明では、マッチング条件が(正規表現で表記した場合に)"a(a*)b"と表記される場合の例を説明する。
【0252】
正規表現"a(a*)b"は、図17に示す状態遷移図に従った動作をするオートマトンA=(Σ,S,s,S,E)と等価である。なお、オートマトンA=(Σ,S,s,S,E)の各記号の意味は以下の通りである。Σは入力文字セットを表し、Sは状態の集合を表し、s,は初期状態(Sの要素でもある)を表し、Sは最終状態(受理状態とも呼ばれる)を表し(Sの部分集合でもある)、Eは遷移の集合である。
【0253】
ここで説明する例では、オートマトンAは3つの状態{s,s,s}を有し、sが初期状態で、sが最終状態(受理状態)である。またΣは文字a,bから構成される。図17において、各状態{s,s,s}は円で表現され、また二重円は受理状態を表す。さらに、各状態を結ぶ矢印(エッジ)の上に付されている文字(a,b)はオートマトンAへの入力を意味する。たとえば図17では、状態sと状態sを結ぶ矢印の上に文字"a"が記されているが、これは「オートマトンAが状態sの時に文字"a"が入力されると、オートマトンAはが状態sに遷移する」ことを表す。
【0254】
前置情報処理回路4は、本明細書の3.2節で説明した定義に従ってムーアマシンを生成する。ここで生成されるムーアマシンをMA,N=(Σ,Σ,Q,q,Δ,Λ)と表記する。なお、MA,N=(Σ,Σ,Q,q,Δ,Λ)の各記号の意味は以下の通りである。一番目のΣは入力文字セットを表し、二番目のΣは出力文字セットを表す。Σは先に述べた通り、オートマトンAの入力文字セットであり、ΣはオートマトンAの入力文字セットに対して、文字⊥を追加した文字セットである(ただし文字⊥は、オートマトンAの入力文字セットΣには含まれていない文字である。本明細書では⊥を「ブロック文字」と呼ぶ)。Qはムーアマシンの状態空間を表し、qは初期状態を表し、Δは遷移関数を表し、Λは出力関数を表す。また、MA,Nの添え字Aは、ムーアマシンの元となるオートマトン(つまり前置情報処理回路4が受け付けたオートマトンA)を意味し、Nはバッファサイズ(図16を用いて説明したバッファ22aの有するメモリブロックの数)を意味する。
【0255】
ムーアマシンを生成する際、前置情報処理回路4はまずオートマトンAがとり得る各状態をもとに、拡張された状態を定義する。実施例2では、オートマトンAがとり得る状態(仮にこれをsと表記する)と、オートマトンAが初期状態(s)から状態sに遷移するまでに要する遷移回数の組を、新たな(拡張された)状態として定義する。初期状態(s)から状態sに遷移するまでに要する遷移回数がc回の場合、この新たな状態は(s,c)と表記される。実施例2では、この新たな状態のことを「カウンタ付き状態」と呼ぶこともあり、また初期状態(s)から状態sに遷移するまでに要する遷移回数のことを「カウンタ」と呼ぶこともある。ただし実施例2において、カウンタは、0以上の整数だが、上限値がバッファサイズNの整数であり、カウンタは正確には、以下の式(7)を計算することで求められる値である(つまりカウンタは法Nに関する剰余類に属する)。
【0256】
((遷移回数-1) mod N)+1 ...(7)
そのため正確には遷移回数とカウンタの値は一致しないこともあるが、実施例2においては(s,c)のcを、状態sのカウンタと呼ぶ場合もあるし、遷移回数と呼ぶこともある。
【0257】
カウンタと、カウンタ付き状態について、カウンタ付き状態を用いて記述されるオートマトンの状態遷移図(図18)を用いて説明する。なお、以下の説明では特に断りのない限り、バッファサイズ(N)は2のケースを説明する。
【0258】
図17のオートマトンAにおいて、初期状態sから状態sに遷移するまでに要する遷移回数は1回なので、状態sのカウンタは上の式(7)に基づくと1である。そのため前置情報処理回路4はカウンタ付状態として(s,1)を定義する。
【0259】
加えて、図17から分かる通り、オートマトンAにおいて、状態がsの時にシーケンスデータとして文字"a"が入力されると、状態は再びsに遷移する(これはたとえば、状態がsの時に文字"a"が2回連続して入力されたケースである)。この場合、2回の遷移の結果、状態sに遷移することを意味するので、遷移回数は2で、カウンタの値も2である。そのため前置情報処理回路4は、カウンタ付状態として(s,2)を定義する。
【0260】
さらに、オートマトンAにおいて、状態がsの時に文字"a"が3回連続して入力された場合、状態は再びsに遷移する。この場合遷移回数は3回だが、バッファサイズが2であるため、カウンタの値は上の式(7)に基づくと1[((3-1) mod 2)+1=1]である。そのため、オートマトンAがとり得る状態sにカウンタを付して生成される新たな状態(カウンタ付き状態)としては、(s,1)と(s,2)の2つがある。
【0261】
同様に、オートマトンAがとり得る状態sにカウンタを付して生成される新たな状態としては、(s,1)と(s,2)の2つがある。そのため、バッファサイズNが2の時、前置情報処理回路4は図17に示されたオートマトンAに基づいて、5つのカウンタ付き状態(s0,0)、(s,1)、(s,2)、(s,1)、(s,2)を定義する。カウンタ付き状態を定義した後、前置情報処理回路4は図18に示すように、カウンタ付き状態を用いたオートマトンを定義する(ここで定義されるカウンタ付き状態を用いたオートマトンをA'と表記する)。
【0262】
図18に示されたオートマトンA'は、各状態がカウンタ付状態である点が、図17に示すオートマトンAと異なるが、図18に示されたオートマトンA'の状態遷移のルールは原則として、図17に示すオートマトンAと同じである。つまり前置情報処理回路4は図17に示すオートマトンAに基づいてオートマトンA'を定義する。たとえば図17に示すオートマトンAでは、状態s((s,1)または(s,2))の時に文字"b"が入力されると、状態はs((s,2)または(s,1))に遷移する。そのため前置情報処理回路4はオートマトンA'を定義する際、状態(s,1)または(s,2)の時に文字"b"が入力されると、状態は(s,2)または(s,1)に遷移するように、オートマトンA'を定義する。
【0263】
次に前置情報処理回路4は図18のオートマトンA'をもとにして、ムーアマシンを定義(生成)する。まず、ムーアマシンの取りうる状態(状態空間)の定義、遷移関数の定義方法について説明する。前置情報処理回路4によるムーアマシンの生成処理では、公知のサブセット構成法(パワーセット構成法とも呼ばれる)と類似した処理が行われる。サブセット構成法はたとえば特開2009-58989号公報などに示されているように公知の手法であるため、詳細な説明は略す。ここでは前置情報処理回路4が実行するムーアマシンの生成に関連する処理のみを説明する。
【0264】
サブセット構成法は、非決定的有限オートマトン(NFA)を決定的有限オートマトン(DFA)に変換(決定化と呼ばれる)する際に用いられる処理である。そのため前置情報処理回路4の生成するムーアマシンはDFAである。よく知られているように、決定化では、非決定的有限オートマトン(NFA)のある状態(またはある状態の集合)に対して入力文字xが与えられたときの遷移先の状態をすべて特定し、特定された状態の集合を決定的有限オートマトンの状態にする。前置情報処理回路4もこの決定化と同様の処理を行う。
【0265】
ただし前置情報処理回路4が行う決定化では、さきに述べた「特定された状態の集合」に、初期状態(s,0)を追加したものを、前置情報処理回路4の生成するムーアマシンMA,Nの状態と定義する。また、入力文字セットはオートマトンA'の入力文字セットΣではなくΣを用いる。以下では、図18図19を参照しながら、前置情報処理回路4によるムーアマシンMA,Nの生成処理を説明する。
【0266】
図18のオートマトンA'が初期状態(s,0)にあるときに入力文字aが与えられると、カウンタ付き状態(s,1)に遷移し、それ以外の状態には遷移しない。そのため前置情報処理回路4は、初期状態(s,0)から(入力文字aが与えられたときの)遷移先の状態の集合を{(s,1),(s,0)}と決定する(つまり、特定された遷移先状態(s,1)に(s,0)を加えたものが、遷移先の状態の集合になる)。以下ではこの状態の集合をq'と表記する。また初期状態(s,0)はq'と表記する(つまりq'はムーアマシンMA,Nの初期状態である)。また前置情報処理回路4は同様に、初期状態(s,0)にあるオートマトンA'に入力文字bが与えられた場合の遷移先の状態の集合、及び初期状態(s,0)にあるオートマトンA'に入力文字⊥が与えられた場合の遷移先の状態の集合、を特定する。図18を参照すると、これらの場合に対応した遷移先の状態は存在しない。遷移先の状態が存在しない場合、先に述べた「特定された状態の集合」が空集合であることと等価である。この場合前置情報処理回路4は、空集合に初期状態(s,0)を追加して形成される状態の集合{(s,0)}(つまりq')を遷移先と決定する。そのため前置情報処理回路4は、初期状態(s,0)から(入力文字bが与えられたとき、及び入力文字⊥が与えられたときの)遷移先の状態の集合を{(s,0)}(=q')と決定する。
【0267】
続いて前置情報処理回路4は、状態の集合q'(={(s,1),(s,0)})からの遷移先状態の集合を特定する。図18の状態遷移図から分かるとおり、状態(s,1)にあるオートマトンA'に入力文字aが与えられたときの遷移先状態は(s,2)で、状態(s,0)にあるオートマトンA'に入力文字aが与えられたときの遷移先状態は(s,1)である。そのため前置情報処理回路4は、状態(s,1),(s,2)に状態(s,0)を加えてなる集合{(s,1),(s,2),(s,0)}を、状態の集合q'に入力文字aが与えられたときの遷移先状態の集合と決定する。以下ではこの状態の集合{(s,1),(s,2),(s,0)}をq'と表記する。同様に前置情報処理回路4は。状態の集合q'に入力文字bが与えられたときの遷移先状態の集合(これは図19に示されたq3'である。なおq3'の要素は{(s,2),(s,0)}である)、入力文字⊥が与えられたときの遷移先状態の集合(これはq'になる)を決定する。
【0268】
前置情報処理回路4はこれらの処理を繰り返すことで、ムーアマシンMA,Nの各状態及び状態遷移を決定する。決定されたムーアマシンMA,Nの各状態及び状態遷移を図に表したものが図19である。そして前置情報処理回路4は、決定された各状態及び状態遷移をRAM22に記憶する。RAM22に記憶された、ムーアマシンMA,Nの各状態及び状態遷移の例を図20図21に示す。図20図18のオートマトンA'に基づいて前置情報処理回路4が生成したムーアマシンMA,Nの状態遷移表(図19の状態遷移図と等価なものである)を示し、図21はムーアマシンMA,Nの状態管理テーブルである。
【0269】
図21に示すように、状態管理テーブルは、「状態」、「部分集合」、「Current」のカラムを有する。カラム「状態」には、ムーアマシンMA,Nの取り得る状態の一覧が格納される。カラム「部分集合」の各行には、ムーアマシンMA,Nの状態に含まれる要素(具体的には、オートマトンA'の1または複数の状態(カウンタ付き状態)である)が格納される。カラム「Current」は、ムーアマシンの現時点の状態を記憶するための領域であり、詳細は後述するが、カラム「Current」に"1"が格納されている行に対応する状態が、ムーアマシンの現時点の状態である。
【0270】
図20の状態遷移表は、ムーアマシンMA,Nの状態遷移のルール(遷移関数)を表す。状態遷移表は複数の行を有し、各行(δ~δ11と表記する)はムーアマシンMA,Nの遷移の仕様を表す。図20に示されるように、状態遷移表の各行は、「遷移前状態」、「遷移後状態」、「入力」の欄を有する。たとえば状態遷移表の一番上の行(遷移δの仕様を記述した行)について、「遷移前状態」、「遷移後状態」、「入力」にはそれぞれ、"q'"、"q'"、"a"が格納されている。これは遷移前の状態がq'の場合、入力文字列"a"が与えられると遷移後の状態がq'になることを表す。
【0271】
ムーアマシンMA,Nの状態遷移表と状態管理テーブルは、RAM22の非バッファ22bに格納される。なお、前置情報処理回路4が生成する状態遷移表と状態管理テーブルは、ここで説明した情報以外の情報を含んでいてもよい。また、図20図21に示された状態遷移表と状態管理テーブルは一例であり、前置情報処理回路4は必ずしも図20図21に示されたフォーマットで情報を作成しなければならないわけではない。前置情報処理回路4はムーアマシンMA,Nの動作(状態遷移)に必要な情報を、図20図21に示されたフォーマットとは異なるフォーマットで記憶領域(RAM22など)に記憶してもよい。
【0272】
ムーアマシンMA,Nの動作には、状態の定義、遷移関数の定義の他、出力関数の定義が必要だが、出力関数の詳細は後述する。また、実施例2に係るムーアマシンMA,Nが動作する際、バッファ22aの内容の操作も行われるが、これについても後述する。
【0273】
続いて、前置情報処理回路4の有する各機能ブロックの説明を行う。図22は、前置情報処理回路4の有する各機能ブロックを表した図である。図22に示されているように、前置情報処理回路4は、生成モジュール22m1、フィルタモジュール22m2、ムーアマシンモジュール22m3の処理モジュール(機能ブロック)を有する。これらの機能ブロックは、CPU20が前置情報処理回路4の有する各プログラムを実行することによって実現される。具体的には、生成モジュール22m1は、CPU20が生成プログラム22p1を実行することによって実現される機能ブロックである。フィルタモジュール22m2は、CPU20がメインプログラム22p2を実行することによって実現される機能ブロックである。ムーアマシンモジュール22m3は、CPU20がサブプログラム22p3を実行することによって実現される機能ブロックである。
【0274】
フィルタモジュール22m2とムーアマシンモジュール22m3が、データ加工処理(フィルタリング処理)を実行する機能ブロックで、生成モジュール22m1はムーアマシンモジュール22m3(サブプログラム22p3)を生成するための機能ブロックである。生成モジュール22m1は、フィルタモジュール22m2からの指示を受け付けることによって、ムーアマシンモジュール22m3を生成する。ムーアマシンモジュール22m3は、フィルタモジュール22m2からの指示に基づいて、上で説明した有限状態機械(ムーアマシン)としての動作を行う。具体的には、フィルタモジュール22m2からシーケンスデータ(文字列)を一単位ずつ(1文字ずつ)受信し、それに応じて状態の遷移と情報の出力を行う。生成モジュール22m1、フィルタモジュール22m2、ムーアマシンモジュール22m3の処理の詳細は、以下で説明する。
【0275】
続いて、前置情報処理回路4によって行われるフィルタリング処理の流れを説明する。以下では、前置情報処理回路4はシーケンスデータとして、タイムスタンプの付与されていない1バイト文字のシーケンス(文字列)を1バイトずつ受信する受け取る例を説明する。
【0276】
図23図24は、前置情報処理回路4が実行するデータ加工処理(フィルタリング処理)のフローチャートである。図23のフローチャートは、フィルタリング処理の全体の流れを示している。図24は、図23のフローチャートの一部(ステップS103)の処理を詳述したフローチャートである。
【0277】
まず図23を参照しながら、フィルタリング処理の全体の流れを説明する。フィルタリング処理はたとえば、前置情報処理回路4が操作部23を介してユーザからの処理開始指示を受け付けた場合、または前置情報処理回路4が入力インターフェース25を介して外部の装置からの処理開始指示を受け付けた場合に実行される。フィルタリング処理が開始されると、フィルタモジュール22m2は、マッチング条件を操作部23または入力インターフェース25を介して受け取り、受け取ったマッチング条件からムーアマシンを生成する(図23 ステップS101)。なお、ステップS101において、フィルタモジュール22m2は生成モジュール22m1に、ムーアマシンモジュール22m3の生成を行わせる。生成モジュール22m1は、上で述べたようなムーアマシンの状態の定義、遷移関数の定義を行う(つまり生成モジュール22m1は、CPU20が実行するプログラムコードだけでなく、上で説明した状態管理テーブルなどの情報(ムーアマシンの動作に必要な情報)も生成する)。
【0278】
ムーアマシンの状態の定義、遷移関数の定義は、上で図17図21を用いて説明したとおりである。生成モジュール22m1は状態の定義結果として図21に示されるような状態管理テーブルを生成し、非バッファ22bに格納する(状態管理テーブルの生成直後は、ムーアマシン(ムーアマシンモジュール22m3)は初期状態にあるので、生成モジュール22m1はカラム「Current」の要素のうち、初期状態(q')に対応する行(図21の一番上の行)の「Current」の値が1で、それ以外の行については「Current」の値を0に設定した状態管理テーブルを生成する)。生成モジュール22m1は遷移関数の定義の結果として、図20に示されるような状態遷移表を生成し、非バッファ22bに格納する。また、生成モジュール22m1はバッファ22aを作成する。具体的には生成モジュール22m1は、RAM22上に、図16に示すようなN個のメモリブロックを有する領域を確保し、そしてこのN個のメモリブロックのデータ領域とフラグ領域を初期化する(すべてのメモリブロックのフラグ領域にフラグ"mask"、つまり0が格納され、また全てのメモリブロックのデータ領域にはブロック文字⊥が格納される)。また、出力関数の定義については後述する。
【0279】
なお、フィルタモジュール22m2は、必ずしもステップS101でマッチング条件を受け取らなくてもよい。たとえば、前置情報処理回路4に、所定のマッチング条件に基づいて生成されたムーアマシン(ムーアマシンモジュール22m3)があらかじめ実装されていてもよい。その場合、フィルタモジュール22m2はフィルタリング処理を実行するときには、この予め実装されているムーアマシンを実行するとよい。ムーアマシンがあらかじめ実装されている場合、前置情報処理回路4はステップS101を実行する必要はなく、また前置情報処理回路4は生成モジュール22m1を有していなくてよい。
【0280】
続いて、ステップS102において、フィルタモジュール22m2は入力インターフェース25を介してシーケンスデータを受信する。ステップS102が1回実行されるたびに、前置情報処理回路4はシーケンスデータの一単位分のデータ(ここでは1バイトの文字)を受領する。
【0281】
続いてフィルタモジュール22m2はムーアマシンモジュール22m3を呼び出し、ステップS102で受領したデータ(1バイトの文字)をムーアマシンモジュール22m3に渡すことで、ムーアマシンMA,Nを用いた処理を行わせる(ステップS103)。ステップS103の処理の詳細は後述するが、ステップS103が一回実行されるとムーアマシンモジュール22m3はバッファ22aの末尾のメモリブロックに格納されているデータを出力する。フィルタモジュール22m2はムーアマシンモジュール22m3から出力されたデータを、出力インターフェース26を介して外部の装置に出力する。
【0282】
続いてフィルタモジュール22m2は、シーケンスデータの入力が終了したか(文字列の終端文字まで受け付けが完了したか)判定する(ステップS104)。シーケンスデータの入力が終了したか否かは、たとえば入力インターフェース25から通知される。ただしフィルタモジュール22m2はこれ以外の方法で、シーケンスデータの入力が終了したか否かを検出してもよい。シーケンスデータの入力が終了していないと判断された場合(ステップS104:NO)、フィルタリング処理はステップS102に戻る。シーケンスデータの入力が終了したと判断された場合(ステップS104:YES)、フィルタモジュール22m2はブロック文字⊥をムーアマシンモジュール22m3に渡す処理をN回行う(ステップS105)。先に述べた通り、Nはバッファサイズである。そのため、バッファサイズ(N)が2の場合、ステップS105では実質的にステップS103が2回行われる。ステップS105の後、フィルタリング処理は終了する。
【0283】
先にも述べたが、ステップS103が実行されると、ムーアマシンモジュール22m3に渡されたデータ(1バイトの文字)がバッファ22aのメモリブロック(のデータ領域)に入力されるとともに、バッファ22aの末尾のメモリブロックに格納されていたデータが出力される。そのため、ステップS105が実行されると、バッファ22aのN個のメモリブロックに格納されていたデータがすべて出力される。つまりステップS105は、ステップS105の実行前にバッファ22aのメモリブロックに格納されていた(残留している)データをすべて出力させるために行われる。
【0284】
続いてステップS103で行われる処理の詳細を、図24を用いて説明する。図24の処理は、ムーアマシンモジュール22m3によって実行される。ムーアマシンモジュール22m3は、フィルタモジュール22m2からデータを受け取るたびにムーアマシン(ムーアマシンモジュール22m3)の状態の遷移、バッファ22aの内容の更新を行う。なお、以下の説明では、バッファサイズNは2(バッファ22aが有するメモリブロックの数は2)とする。
【0285】
ムーアマシンモジュール22m3はフィルタモジュール22m2からデータ(1バイトの文字)を受け取ると、バッファ22aの末尾のメモリブロック(22a-N)のデータ領域に格納されていたデータを取り出すとともに、バッファ22aの末尾のメモリブロック(22a-N)のフラグ領域に格納されているフラグがmaskか否か判定する(ステップS201)。メモリブロック(22a-N)のフラグがmaskでない場合、つまりフラグがpassの場合には(ステップS201:NO)、ムーアマシンモジュール22m3はメモリブロック(22a-N)のデータ領域に格納されているデータを、(変更することなしに)フィルタモジュール22m2に出力する(ステップS202)。ムーアマシンモジュール22m3からデータを受領したフィルタモジュール22m2は、出力インターフェース26を介してそのデータを外部に出力する。逆にメモリブロック(22a-N)のフラグがmaskであった場合(ステップS201:YES)、ムーアマシンモジュール22m3は取り出されたデータをブロック文字⊥に変更し、変更されたデータ(ブロック文字⊥)をフィルタモジュール22m2に出力する(ステップS203)。フィルタモジュール22m2はムーアマシンモジュール22m3から受領したブロック文字⊥を、出力インターフェース26を介して外部に出力する。
【0286】
ステップS204ではムーアマシンモジュール22m3は、フィルタモジュール22m2から受け取ったデータをバッファ22aの先頭のデータ領域に格納する。なお、先に述べた通り、バッファ22aの先頭にデータが格納される前に、バッファ22aの各メモリブロック(22a-1,22a-2,...22a-(N-1))内のデータ及びフラグはそれぞれ、左隣のメモリブロック(22a-2,22a-3,...22a-N)に移される。つまりバッファ22aはFIFOとして動作する。
【0287】
続いてムーアマシンモジュール22m3は、非バッファ22bに格納されている状態遷移表や状態管理テーブルを用いて、ムーアマシン(ムーアマシンモジュール22m3)の状態遷移を実行する(ステップS205)。以下では、図20に示した状態遷移表と図21に示した状態管理テーブルが、非バッファ22bに格納されている場合の例を説明する。
【0288】
図21の状態管理テーブルにおいて、カラム「Current」には、現在のムーアマシンモジュール22m3の状態が記録される。カラム「Current」の各要素には、0または1のいずれかの値が格納される。カラム「Current」の値が"1"の行に対応する状態が現在の状態である。図21ではカラム「状態」がq'の行について、カラム「Current」の値が"1"であるので、図21の状態管理テーブルは現在の状態がq'であることを表している。
【0289】
ムーアマシンモジュール22m3は、上に述べたような要領で現在のムーアマシンモジュール22m3の状態を特定すると、次に図20の状態遷移表と、フィルタモジュール22m2から受け取ったデータ(以下ではこれを「入力文字」と呼ぶ)とに基づいて、遷移先の状態を決定する。現在の状態が図21の状態管理テーブルに示されるようにq'で、入力文字が"b"であった場合、図20の状態遷移表を参照することで、遷移後の状態はq'になることが分かる。そこで、ムーアマシンモジュール22m3は、図21の状態管理テーブルのカラム「Current」を書き換えることで、現在の状態をq'に変更する。具体的にはムーアマシンモジュール22m3は、「状態」がq'の行のカラム「Current」の値を"0"に変更し、「状態」がq'の行のカラム「Current」の値を"1"に変更する。
【0290】
ステップS206ではムーアマシンモジュール22m3は、バッファ22aの先頭のメモリブロック(図16の22a-1)のフラグ領域を"mask"に変更する。
【0291】
ステップS207ではムーアマシンモジュール22m3は、ムーアマシンモジュール22m3の現在の状態に含まれるオートマトンA(またはオートマトンA')の1または複数の状態(以下ではこれを「状態部分集合」と呼ぶ)の中に、カウンタの値がN(バッファサイズ)と等しい状態があるか判定する。「状態部分集合」とは、図21の状態管理テーブルのカラム「部分集合」に格納されている要素(オートマトンA'の1または複数のカウンタ付き状態)のことである。たとえば、現在のムーアマシンモジュール22m3の状態(ステップS205実行後の状態)がq'である場合について説明する。図21の状態管理テーブルのカラム「状態」がq'の行について、カラム「部分集合」の内容は{(s,0),(s,2)}であるから、現在のムーアマシンモジュール22m3の状態q'の状態部分集合は{(s,0),(s,2)}である。この状態部分集合に含まれる状態(カウンタ付き状態)のうち、状態(s,2)のカウンタの値は2である(つまりバッファサイズNと等しい)。このような場合(ステップS207:YES)には、ムーアマシンモジュール22m3はバッファ22aの全メモリブロックのフラグ領域を"pass"に変更する(ステップS208)。逆に、状態部分集合の中に、カウンタの値がNである状態が無い場合(ステップS207:NO)、ステップS208は実行されない。たとえば現在のムーアマシンモジュール22m3の状態がq'の場合、状態q'の状態部分集合は{(s,0),(s,1)}であるから、カウンタの値がNである状態は存在しない。このような場合にはステップS208は実行されない。
【0292】
ステップS209ではムーアマシンモジュール22m3は、ムーアマシンモジュール22m3の現在の状態の状態部分集合が、ムーアマシンモジュール22m3の元となるオートマトン(本実施例の場合にはオートマトンA)の受理状態を要素として有しているか判定する(つまり状態部分集合の中に、受理状態(図20図21の例ではs((s,1)または(s,2))が受理状態である)が含まれているか判定する)。ムーアマシンモジュール22m3の現在の状態の状態部分集合が、(ムーアマシンモジュール22m3の元となるオートマトンの)受理状態を要素として有する場合には(ステップS209:YES)、処理はステップS210に進む。受理状態が状態部分集合に含まれていない場合には(ステップS209:NO)、ムーアマシンモジュール22m3はステップS210を実行せずに、ムーアマシンモジュール22m3の処理を終了する。
【0293】
ステップS210でムーアマシンモジュール22m3は、状態部分集合の中に含まれる受理状態に対応するカウンタの値をすべて特定し、それらのカウンタ値の最大値(以下ではこの最大値をMと表記する)を求める。そしてムーアマシンモジュール22m3は、バッファ22aの全メモリブロックのうち、先頭からM個のメモリブロックのフラグ領域を"pass"に変更する。たとえば、現在のムーアマシンモジュール22m3の状態(ステップS205実行後の状態)がq'である場合、q'の状態部分集合の中には、状態(s,1)、(s,2)が含まれている。そのため、受理状態に対応するカウンタ値の最大値Mは2と決定される。この場合ムーアマシンモジュール22m3は、バッファ22aの全メモリブロックのうち、先頭から2個のメモリブロックのフラグ領域を"pass"に変更する。
【0294】
ステップS210の後、ムーアマシンモジュール22m3は処理を終了し、フィルタモジュール22m2はステップS103の直後から処理を再開する。
【0295】
図24のフローチャートにおいて、ステップS201~ステップS203が、ムーアマシンMA,Nの出力関数の動作である。ステップS201~ステップS203は、先に述べた3.2節の式(6)に示された動作が行われている。式(6)においてaとlはそれぞれ、バッファ部22aの末尾のメモリブロック22a-Nが有するデータ領域の内容とフラグ領域の内容を表している。式(6)によれば、lが"pass"であれば(図24のステップS201の判定がNOの場合)、aが出力される(図24のステップS202)。逆にlが"mask"であれば(図24のステップS201の判定がYESの場合)、ブロック文字が出力される(図24のステップS203)。
【0296】
また、図24のフローチャートにおいて、ステップS206~ステップS210が実行されることで、先に述べた3.2節の式(5)に相当する処理が行われる。
【0297】
以上説明したように、図24のサブプログラム22p3(または図22のムーアマシンモジュール22m3と言ってもよい)が実行されることによって、ムーアマシンの動作(状態遷移)が実現されるとともに、バッファ部22aの内容のデータを書き換えが行われる。また同時に、入力されるシーケンスデータの中で、マッチング条件に適合しないことが明らかなデータをマスクした(ブロック文字に置き換えた)データを出力することができる。
【0298】
なお、上では前置情報処理回路4が、タイムスタンプの付与されていない文字列(シーケンスデータ)を受け取り、受け取った文字列のフィルタリングを行う例を説明した。つまり、前置情報処理回路4で動作するムーアマシン(ムーアマシンモジュール22m3)は、本明細書の3.2節で説明したものと同様のものであった。しかし、前置情報処理回路4で動作するムーアマシンはこれに限られない。たとえば本明細書の4.3節で説明した定義に従うムーアマシンも前置情報処理回路4で動作可能である。具体的には、タイムスタンプの付与された文字列(シーケンスデータ)についてパターンマッチングを行う場合には、前置情報処理回路4は本明細書の4.3節で説明した定義に従うムーアマシン(以下ではこれを「実時間制約付きムーアマシン」と呼ぶ)を動作させることで、パターンマッチングを行う。
【0299】
実時間制約付きムーアマシンによるフィルタリング処理は、上で説明したフィルタリング処理と概ね同様である。以下では実時間制約付きムーアマシンによるフィルタリング処理と、上で説明したフィルタリング処理の違いを主に説明し、両者に共通する説明は略す。
【0300】
本明細書の4.3節で説明したように、実時間制約付きムーアマシンでは状態空間のバッファ部分にフラグのみが格納される。そのため、前置情報処理回路4が実時間制約付きムーアマシンを動作させる場合には、前置情報処理回路はデータ領域を持たないバッファ22aを定義する(図16に示すバッファ22aから行221aが除去されたバッファが定義される)。
【0301】
また実時間制約付きムーアマシンが動作する場合には、バッファ22aにデータが格納されないため、上で説明したムーアマシンモジュール22m3の処理と若干異なる処理が実行される。図25図26に示すフローチャートを用いて、前置情報処理回路4が実時間制約付きムーアマシンを動作させる場合の処理の流れを説明する。
【0302】
まず、実時間制約付きムーアマシン(以下では単に「ムーアマシン」と呼ぶこともある)の処理の流れを図26を用いて説明する。図26の処理の多くは図24と共通しているので、以下では図26の各ステップのうち図24と異なる点を主に説明する。
【0303】
図26に示されているとおり、実時間制約付きムーアマシンは図24のステップS201~S203に代えて、ステップS2020を実行する。つまり、ムーアマシンはフィルタモジュール22m2からデータ(1バイトの文字)を受け取ると、図24に示されているような処理(たとえばS201のフラグの内容の判定処理)は行わず、バッファ22aの末尾のメモリブロック(22a-N)のフラグ領域に格納されているフラグを出力する(ステップS2020)。ステップS205以降の処理は、図24の処理と同じであるので、説明を略す。
【0304】
実時間制約付きムーアマシンはバッファ22aにデータ領域を持たないため、図24に示した処理とは異なり、データ領域に含まれているデータの変換、データの出力は行わない。データの変換や出力は、前置情報処理回路4のフィルタモジュール22m2が行う。
【0305】
図25を用いて、実時間制約付きムーアマシンによるフィルタリング処理が実行されるときのフィルタモジュール22m2の処理を説明する。まず最初に、フィルタモジュール22m2は生成モジュール22m1に、ムーアマシンを生成させる(ステップS1010)。この処理は図23のステップS101と同様であるが、生成されるムーアマシンが実時間制約付きムーアマシンである点が、図23のステップS101と異なる。またステップS1010でフィルタモジュール22m2は、入力インターフェース25を介して受信するデータを一時的に保存するための記憶領域を、RAM22上に確保する。フィルタモジュール22m2が確保する記憶領域はFIFOバッファであり、またこのFIFOバッファは(N+1)個のメモリブロックを有し、各メモリブロックは1文字分のデータ(入力インターフェース25を介して受信されるデータ)を格納可能なサイズである。
【0306】
続いてフィルタモジュール22m2は入力インターフェース25を介してシーケンスデータを受信する(ステップS1020)。ステップS1020は図23のステップS102と同様の処理である。ただしステップS1020では、フィルタモジュール22m2は受信したシーケンスデータをステップS1010で確保したFIFOバッファに格納する処理も行う。
【0307】
次に、フィルタモジュール22m2はステップS1020で受領したデータ(1バイトの文字)をムーアマシン(実時間制約付きムーアマシン)に渡す。実時間制約付きムーアマシンはこれに応じて図26に示す処理を実行する(ステップS1030)。先に述べたとおり、実時間制約付きムーアマシンが図26に示す処理を実行すると、バッファ22aの末尾のメモリブロック(22a-N)のフラグ領域に格納されているフラグ(passまたはmask)を出力する。
【0308】
次に、フィルタモジュール22m2はステップS1020及びステップS1030の処理がN回実行されたか判定する。先に述べた通り、Nはバッファサイズである。ステップS1020、ステップS1030の処理がまだN回実行されていない場合(ステップS1040:NO)、処理はステップS1020に戻る。ステップS1020、ステップS1030の処理がN回実行された場合には(ステップS1040:YES)、フィルタモジュール22m2はステップS1050以降の処理を実行する。
【0309】
ステップS1050ではフィルタモジュール22m2は、入力インターフェース25を介してシーケンスデータを受信する。これはステップS1020と同様の処理である。ステップS1050ではフィルタモジュール22m2は、ステップS1050で受領したデータ(1バイトの文字)をムーアマシンに渡す。つまりステップS1050はステップS1030と同様の処理である。
【0310】
先に述べた通り、ステップS1060が実行されることによりムーアマシンはフラグ(passまたはmask)を出力する。ステップS1070でフィルタモジュール22m2は、ムーアマシンの出力がpassか否か判定する。ムーアマシンの出力がpassの場合(ステップS1070:YES)、フィルタモジュール22m2はFIFOバッファの末尾に格納された1文字分のデータを、出力インターフェース26を介して外部の装置に出力する(ステップS1080)。ステップS1080では(N+1)個の要素(メモリブロック)を有するFIFOバッファの末尾に格納されたデータが出力されるので、たとえばステップS1050が(N+1)回目のデータ受信処理であった場合、ステップS1080では1回目に受信したデータが出力される。一方、ステップS1070でムーアマシンの出力がmaskの場合(ステップS1070:NO)、フィルタモジュール22m2はブロック文字⊥を出力インターフェース26を介して外部の装置に出力する(ステップS1090)。
【0311】
続いてフィルタモジュール22m2は、シーケンスデータの入力が終了したか(文字列の終端文字まで受け付けが完了したか)判定する(ステップS1100)。ステップS1100の処理は、図23のステップS104と同様である。シーケンスデータの入力が終了していないと判断された場合(ステップS1100:NO)、処理はステップS1050に戻る。シーケンスデータの入力が終了したと判断された場合(ステップS1100:YES)、次にステップS1100が行われる。
【0312】
ステップS1110では、フィルタモジュール22m2はブロック文字⊥をムーアマシンに渡す。これによりムーアマシンのバッファ22aからフラグが出力される。続いてステップS1120では、ステップS1100でムーアマシンから出力されたフラグの状態(passあるいはmask)に基づいて、ステップS1070~ステップS1090の処理を行う。
【0313】
続いてフィルタモジュール22m2は、ステップS1110及びS1120の処理がN回行われたか判定し(ステップS1130)、ステップS1110及びS1120の処理がN回行われた場合には(ステップS1130:YES)、処理を終了する。ステップS1110及びS1120の処理がまだN回行われていない場合には(ステップS1130:NO)、フィルタモジュール22m2は再びステップS1110を実行する。
【0314】
ステップS1110~S1130の処理は、図23のステップS105と同様の目的で行われる。つまり、ステップS1110実行直前の時点では、バッファ22aのメモリブロックにN個の(未出力の)フラグが残されているので、フィルタモジュール22m2はステップS1110~S1130の処理をN回実行することで、バッファ22aのメモリブロックに残留しているフラグを出力させ、出力されたフラグに基づいて、フィルタモジュール22m2が外部装置に出力すべきデータを決定する。
【0315】
上で説明した通り、実施例2に係る前置情報処理回路4は、入力されるシーケンスデータの中で、マッチング条件に明らかに一致しないデータを除去するように加工されたデータを出力することができる。ただし実施例2に係る前置情報処理回路4では、入力されるシーケンスデータ中のあるデータ列(たとえば文字列)が実際にはマッチング条件に一致しないが、そのデータ列(文字列)マッチング条件に一致するかしないか不確かである場合には、そのデータ列を除去せずに(何の加工も施さずに)出力する。
【0316】
このケースは、たとえば図24のステップS207の判定がYESの場合に発生し得る。図17図21図24を用いて例を説明する。たとえば図17に示されたオートマトンAに基づいて生成されたムーアマシン(図21に示されたq'~q'の5状態を有し、図20(または図19)に示されたルールで状態遷移するムーアマシン)で、かつバッファサイズが2のムーアマシンを想定する。このようなムーアマシンの現在の状態がq'の時、状態q'の状態部分集合は{(s,0),(s,1),(s,2)}である。この場合、図24(とくにステップS207,S208)から分かるとおり、この時点でバッファ22a内に格納されているデータはそのまま(ブロック文字に変換されることなく)出力される。ステップS208で、バッファ22aの全メモリブロックのフラグ領域を"pass"に変更されるからである。しかしながらこの時の状態部分集合は、受理状態(s)を要素として含んでいないため、バッファ22a内に格納されているデータ列は、図17に示されたオートマトンAとして記述されているマッチング条件の一部に合致しているが、必ずしもこのマッチング条件の全体に合致しているか否か、確かではない。このような場合、実施例2に係る前置情報処理回路4はバッファ22a内に格納されているデータをそのまま(ブロック文字に変換されることなく)出力するので、マッチング条件に合致する可能性があるデータを除去してしまうことがない。
【0317】
また、上では前置情報処理回路4が、マッチング条件に明らかに一致しないデータを除去するために、マッチング条件に明らかに一致しないデータをブロック文字⊥に変換する例を説明したが、マッチング条件に明らかに一致しないデータを除去する方法はこれに限定されない。たとえば前置情報処理回路4が、入力されるシーケンスデータのうち、マッチング条件に明らかに一致しないデータをブロック文字⊥に変換した結果、変換後のデータ列のなかにブロック文字⊥が複数回連続して出現する文字列が含まれていた場合には、たとえば前置情報処理回路4はこの文字列を「ブロック文字⊥とその出現回数」の組に変換してから外部の装置に出力してもよい。具体的には、前置情報処理回路4が、上で説明した処理(図23図24)を行うことにより、文字列"abbbbbb"を"ab⊥⊥⊥⊥⊥"に変換した後、"ab⊥⊥⊥⊥⊥"を"ab⊥5"と変換して、外部の装置に出力してもよい(つまり、"⊥5"は、ブロック文字⊥が5文字連続していることを表す)。このような変換を行うことで、データサイズが実質的に圧縮されるため、外部の装置に出力されるデータ量を削減することができる。
【0318】
図27は実施例2に係る前置情報処理回路4を構成するときの、リアルタイムオートマトンの決定化処理を示すフローチャートである。
【0319】
図27のステップS61~S63において、オートマトンにおける状態s から状態空間Sへの定義、現在の状態空間Scurr 及び状態空間Sの初期化、並びに出力関数Λ の初期化の処理を行う。ステップS64~S75において、現在の状態空間Scurr が空でないときにステップS67~S74の処理を実行する。また、ステップS65~S72において、各状態s∈Scurr についてステップS67~S69の処理を実行する。さらに、ステップS66~S71において、各文字a∈Σについて、ステップS67~S69の処理を実行する。またさらに、ステップS68~S70において、各区間I'∈Jについて(なお、JはステップS67に示すように、区間の集合の最疎分割である)ステップS69の処理を実行する。ステップS76において、フィルタリング結果の状態空間S を状態空間Sの部分集合であって、フィルタリング結果の状態空間Sとの交叉が非空であるものと定義して当該決定化処理を終了する。
【0320】
以上説明したように、図27の決定化処理を実行することで、非決定的リアルタイムタイムを、決定的オートマトンに変換することができる。
【0321】
図28は実施例2に係る前置情報処理回路4を構成するときの、実時間制約付きオートマトンをリアルタイムオートマトンに近似させる近似処理を示すフローチャートである。なお、パラメータの上付き文字のrtリアルタイムタイムのパラメータを表す。
【0322】
図28のステップS81~S82において、オートマトンにおける状態s rtの定義、状態空間Srt,Srt currの初期化処理を行う。ステップS83~S99において、現在の状態空間Srt currが空でないときにステップS84~S98の処理を実行する。また、ステップS85~S96において、各(s,Z)∈Srt currについてステップS87~S94の処理を実行する。さらに、ステップS86~S95において、各(s;a;δ,λ,s')∈Σについて、ステップS87~S94の処理を実行する。なお、ステップS87におけるup(Z)は時間経過を表す。また、ステップS89におけるreset(Z',λ)はλに含まれるクロック変数の初期化を表す。さらに、ステップS94等におけるSrt nextはリアルタイムの状態空間Srtの次に追加すべき次の状態空間を表す。またさらに、ステップS90におけるDBMのゾーンは公知のDifference Bound Matrixで定義されたゾーンである。ステップS100では、フィルタリング結果の状態空間Srt を{(s,Z)∈Srt|s∈S}とすることで、当該近似処理を終了する。
【0323】
以上説明したように、図28の近似処理を実行することで、実時間制約付きオートマトンをリアルタイムオートマトンに近似させることができる。
【実施例3】
【0324】
異常時の自動停止機構.
図29は実施例3に係る異常時の自動停止機構を有する自動車制御システムの構成例を示すブロック図である。
【0325】
図29において、自動車制御システムは、センサ装置1A及び1Bがそれぞれ通信回線10a,10bを介して自動車コントローラ30に接続されて構成される。
【0326】
センサ装置1Aにおいて、車速センサ3aにより検出された車速と、加速度センサ3bにより検出された角速度とが前置情報処理回路4aに入力される。前置情報処理回路4aは実施例2に係る前置情報処理回路4と同様の構成を有する。また前置情報処理回路4aは、入力される車速及び加速度の実時間付きシーケンスデータについて、上記マッチング条件にマッチングしないことが容易に分かるデータを除去するように加工し、加工後の実時間付きシーケンスデータを通信回線10aを介して後置情報処理回路5に送信する。
【0327】
センサ装置1Bにおいて、勾配センサ3cにより検出された勾配と、質量センサ3dにより検出された質量と、アクチュエータへの入力データ部3eに入力された入力データ(緊急停止指示データ)とが前置情報処理回路4bに入力される。前置情報処理回路4bも、実施例2に係る前置情報処理回路4と同様の構成を有する。前置情報処理回路4bは、入力される勾配、質量及び入力データの実時間付きシーケンスデータについて、上記マッチング条件にマッチングしないことが容易に分かるデータを除去するように加工し、加工後の実時間付きシーケンスデータを通信回線10bを介して後置情報処理回路5に送信する。
【0328】
自動車コントローラ30において、後置情報処理回路5は前置情報処理回路4aによって加工されたシーケンスデータと前置情報処理回路4bによって加工されたシーケンスデータとを受信する。そして後置情報処理回路5は、これらのシーケンスデータについて上述のマッチング条件(前置情報処理回路4aと前置情報処理回路4bで用いられたマッチング条件)にマッチングするシーケンスデータを抽出する処理を行って、抽出したシーケンスデータを故障検出部31に出力する。故障検出部31は入力されるシーケンスデータに基づいて所定の故障条件にマッチングするか否かを判断し、当該故障条件にマッチングするときにその旨の情報を自動車運転制御部32に出力することで、例えば自動車を緊急停止するなどの所定の制御処理を行う。
【0329】
先に述べた通り前置情報処理回路4bは、マッチング条件の一部に合致しているが、必ずしもマッチング条件の全体に合致しているか否か確かではないデータについては加工しない(除去しない)。そのため後置情報処理回路5が行うデータの抽出処理では、前置情報処理回路4aや前置情報処理回路4bから受領した、加工されたシーケンスデータに対して、上述のマッチング条件に合致するデータをすべて抽出する処理が行われる。具体的には、たとえば前置情報処理回路4aや前置情報処理回路4bが、一部の文字(マッチング条件に明らかに一致しない文字)をブロック文字⊥に書き換えた文字列(シーケンスデータ)を後置情報処理回路5に送信する場合、後置情報処理回路5は文字列中からブロック文字を取り除くだけでなく、ブロック文字⊥に書き換えられていない文字列の中にマッチング条件に合致する文字列が含まれているか判定し、マッチング条件に合致する文字列を抽出する処理も行う。
【0330】
なお、後置情報処理回路5がマッチング条件に合致する文字列(シーケンスデータ)を抽出するための処理負荷は、図29のように前置情報処理回路4aや前置情報処理回路4bが自動車制御システムに設けられている場合は、前置情報処理回路4aや前置情報処理回路4bが設けられていない場合に比べると低くなる。前置情報処理回路4aや前置情報処理回路4bによって、明らかにマッチング条件に合致しないデータ(文字列)は除去される(ブロック文字に変換される)ため、後置情報処理回路5で検索対象とするデータ量は大きく削減されるからである。
【0331】
以上説明したように、実施例3によれば、走行中の自動車のログデータ(車速、加速度、勾配、質量など)を、当該自動車制御システムを用いることによりモニタリングすることで故障を検知し、緊急停止する必要がある場合には自動車運転制御部32に適切な入力を与えることで緊急停止する。特に、前置情報処理回路4a,4bをそれぞれセンサ装置1A,1Bに取り付けることにより、通信回線10a,10bにおけるデータ転送量を削減し、より多くのデータを扱うことができる。
【実施例4】
【0332】
セミコネクテッドカーの走行経路最適化.
図30は実施例4に係るセミコネクテッドカーの走行経路最適化機構を有する自動車制御システムの構成例を示すブロック図である。自動車制御システムは、自動車40が通信回線10c,10dを含むネットワークを介してサーバ装置50に接続されて構成される。ここで、セミコネクテッドカーとは、自動車40の制御部が常時サーバ装置50に接続せずに、必要に応じて接続することで自動車40の走行を制御するものである。
【0333】
自動車40において、アクセルセンサ3fにより検出されたアクセルデータと、ブレーキペダルセンサ3gにより検出されたアクセルペダルデータは駆動トルク推定部33に入力される。駆動トルク推定部33は、入力されるアクセルデータとアクセルペダルデータとに基づいて公知の方法により駆動トルクを推定して推定車速算出部34に出力する。また、勾配センサ3cにより検出された勾配と、質量センサ3dにより検出された質量とは推定車速算出部34に入力される。推定車速算出部34は入力される3つのデータに基づいて公知の方法により推定車速を算出して偏差量算出部35に出力する。偏差量算出部35は、算出された推定車速を、車速センサ3aにより検出された車速と比較することで、車速の偏差で道路状態を推定できる偏差量を算出して前置情報処理回路4cに出力する。前置情報処理回路4cは実施例2に係る前置情報処理回路4と同様の構成を有する。また前置情報処理回路4cは、入力される偏差量の実時間付きシーケンスデータについて、上記マッチング条件にマッチングしないことが容易に分かるデータを除去するように加工し、加工後の実時間付きシーケンスデータを通信回線10cを介してサーバ装置50の後置情報処理回路5に送信する。
【0334】
サーバ装置50において、後置情報処理回路5は前置情報処理回路4cによって加工されたシーケンスデータを受信し、上記のマッチング条件にマッチングするシーケンスデータを抽出して、抽出したシーケンスデータを異常な道路状態検出部51に出力する。異常な動作状態検出部51は入力されるシーケンスデータに基づいて所定の「異常な道路状態」(例えば、偏差量が所定のしきい値以上で異常な道路状態と判定)の条件にマッチングするか否かを判断し、当該条件にマッチングするときにその旨の情報を走行プラン制御部52に出力する。走行プラン制御部52は入力される情報に基づいて好ましくない道路状況を検知し、道路状況に応じて走行プランの最適化を行い、その最適化された走行プランのデータを通信回線10dを介して自動車40の走行制御部36に出力することで、自動車40の走行を最適化する。
【0335】
以上説明したように、実施例4によれば、走行中のセミコネクテッドカーの走行ログ(アクセルデータ、ブレーキペダルデータ、勾配、質量、車速と、それに基づく所定の算出データ)をサーバ装置50に適宜通信回線10cを介して送信する。ここで、異常な道路状態検出部51によりそのデータをモニタリングすることで好ましくない道路状況を検知し、道路状況に応じて走行プランの最適化を行なう。ここで、セミコネクテッドカーである自動車40において前置情報処理回路4cを設け、サーバ装置50において後置情報処理回路5を設けることで、データ転送量を削減し、例えば無線通信の状況の良くない環境下においても適切に動作することができる。
【実施例5】
【0336】
サーバ装置への攻撃のモニタリングとアクセス遮断.
図31は実施例5に係るサーバ装置への攻撃のモニタリングとアクセス遮断機構を有する通信システムの構成例を示すブロック図である。通信システムは、サーバ装置60と、ルータ装置70とが通信回線10eを含むネットワークを介して接続されて構成される。
【0337】
サーバ装置60において、アクセスログ収集部61は、サーバ装置60に外部からのアクセスについてのログ(アクセス元情報、時刻等)を収集し、そのシーケンスデータを前置情報処理回路62に出力する。前置情報処理回路62は実施例2に係る前置情報処理回路4と同様の構成を有する。前置情報処理回路62は、入力される実時間付きシーケンスデータについて、上記マッチング条件にマッチングしないことが容易に分かるデータを除去するように加工し、加工後の実時間付きシーケンスデータを後置情報処理回路63に送信する。後置情報処理回路63は入力される実時間付きシーケンスデータを受信し、上記のマッチング条件にマッチングするシーケンスデータを抽出して、抽出したシーケンスデータを攻撃検出部64に出力する。攻撃検出部64は入力されるシーケンスデータに基づいて所定のしきい値データを参照してサーバ装置60への攻撃的なアクセスを検出し、検出されたアクセス情報を通信回線10eを介してルータ装置70のアクセス制御部71に送信する。これに応答して、アクセス制御部71は入力される検出されたアクセス情報に基づいてサーバ装置60へのアクセスを遮断するように制御する。
【0338】
以上説明したように、実施例5によれば、WWWなどのサーバ装置60において外部からの通信ログを前置情報処理回路62及び後置情報処理回路63を含む実時間条件抽出装置を用いてモニタリングすることで外部からの攻撃を検知し、ルータに適切な入力を与えることで当該攻撃者からのアクセスを遮断する。当該実時間条件抽出装置の実時間データフィルタ部を用いることで、データ処理に必要なCPU時間を削減し、サーバ装置60の本来の動作を損なわずにモニタリングを行なうことができる。
【0339】
以上の実施形態及び実施例においては、前置情報処理回路4は、入力されるイベントのシーケンスデータに関する所定のマッチング条件を記述したオートマトンに基づいてムーアマシンを生成し、生成されたムーアマシンを用いて、前記シーケンスデータから前記マッチング条件に一致しないデータを実質的に除去するようにフィルタリングしてフィルタリング結果のシーケンスデータを出力する。しかし、本発明はこれに限らず、フィルタリングのために生成するモデルはムーアマシンに限らず、ミーリマシン(Mealy Machine)などの種々の有限状態機械であってもよい。
【0340】
本実施形態の特徴と特許文献2及び3との相違点.
【0341】
(1)特許文献2
特許文献2においては、並列動作を記述可能なプログラム言語を用いて複数のデバイスを定義したプログラム記述(1)を入力し、入力されたプログラム記述を中間表現に変換し(S2)、リアルタイム制約を満たすパラメータを生成する生成されたパラメータに基づいて、ハードウェア記述言語に基づく中間表現(S3)および回路記述を合成する(S4)。中間式は、同時制御フローフラグ、同時パラメータを有する時間オートマトンなどである。パラメトリックモデル検査は、パラメータ生成のために実行される。プログラム記述は、runメソッドを使用してデバイスを定義し、バリア同期を使用してデバイスのクロック同期を定義します。これにより、リアルタイム制約に合ったバスシステムを設計することができる。
【0342】
特許文献2では、特に、JAVA(登録商標)等の並列動作を記述できる言語から回路設計を行う際、実時間制約を満たすようにバスシステムを効率よく設計するため、設計自動化のための検証プロセスの前処理としてモデル化を行う。その一工程として、コンカレントなコントロール・フロー・グラフ(C-CFG)からコンカレントなパラメータ付き時間オートマトン(C-TNFA)へ、さらにパラメータ付き時間オートマトン(TNFA)へと変換する。C-CFGからC-TNFA変換時に、後段の検証プロセスにおける前提に合わない状態遷移を削除する処理を行い、C-TNFAからTNFAへの変換時に、バス権をとる必要がない動作の並列実行で遷移時間の上限を設け、上限を満たさない状態を削除する処理を行う。
【0343】
特許文献2では、前処理での後段処理をふまえたマスク処理を開示するが、オートマトンでの時間制約をふまえた決定化やバッファ最適化など本発明の具体的手法の開示はない。
【0344】
(2)特許文献3
特許文献3の方法は、ソフトウェアのソースコードを検査コードに変換するためのソースコードをコンピュータを用いて変換する方法であって、ソフトウェアのソースコードを入力するステップと、複数の異なる変換規則を入力するステップと、プロセス性能に関する制約である非機能ルールを入力するステップと、前記ソースコードを、前記複数の異なる変換規則と前記非機能規則とによって検証ツールの入力言語で記述された非機能検査コードに変換するステップとを含む。
【0345】
特許文献3では、特に、ソフトウェア検査の前段の処理としてソフトウェアの振る舞いを入力言語(検査コード)に変換する際、ソフトウェアの各部品(機能)に実行環境による処理時間を付与した時間オートマトンに変換し、繰り返し実行時のみの特定の不具合がある場合にその繰り返し部分を除去し、状態数を削減しながらも他の不具合を検出可能として、計算時間が大きくなりすぎる状態爆発を回避する技術を開示している。
【0346】
しかしながら、特許文献3では、前処理でのマスク処理を開示するが、オートマトンでの時間制約をふまえた決定化やバッファ最適化など本発明の具体的手法の開示はない。
【産業上の利用可能性】
【0347】
以上詳述したように、本発明に係る情報処理装置及び方法によれば、従来例に係る時系列相関抽出装置に比較して、効率的に処理することができる。
【符号の説明】
【0348】
1,1A,1B センサ装置
2 モニタ装置
3 センサ
3a 車速センサ
3b 加速度センサ
3c 勾配センサ
3d 質量センサ
3e アクチュエータへの入力データ部
3f アクセルセンサ
3g ブレーキペダルセンサ
4,4a,4b,4c 前置情報処理回路
5 後置情報処理回路
6 表示部
7 フィルタ部
8 パターンマッチング部
10,10a~10e 通信回線
11 フィルタ部
12 マスキング適用部
20 CPU
21 ROM
22 RAM
22a バッファ部
22b 非バッファ部
23 操作部
24 表示部
25 入力インターフェース
26 出力インターフェース
27 バス
30 自動車コントローラ
31 故障検出部
32 自動車運転制御部
33 駆動トルク推定部
34 推定車速算出部
35 偏差量算出部
36 走行制御部
40 自動車
50 サーバ装置
51 異常な道路状態検出部
52 走行プラン制御部
60 サーバ装置
61 アクセスログ収集部
62 前置情報処理回路
63 後置情報処理回路
64 攻撃検出部
70 ルータ装置
71 アクセス制御部
図1
図2
図3A
図3B
図3C
図4
図5
図6A
図6B
図7A
図7B
図8
図9
図10
図11A
図11B
図11C
図12A
図12B
図12C
図13A
図13B
図13C
図14A
図14B
図14C
図15
図16
図17
図18
図19
図20
図21
図22
図23
図24
図25
図26
図27
図28
図29
図30
図31