(57)【要約】      （修正有）【課題】複数の小さな有限状態機械（ＦＳＭ）を用いて、Ｎビットワイドデータワードのシーケンスを有する入力ストリームの中の或るパターンを探索する装置を提供する。【解決手段】複数のサブワードＦＳＭ１１、１２、１３と、結合器１４とを備える。各サブワードＦＳＭは、Ｎビット未満の入力ワードサイズを有する。各ＦＳＭはＮビットワードのうちの対応するセグメントを処理し、そのＦＳＭへの入力ワードのうちの１つが受信され、そのＦＳＭが所定の一致状態に移動するときに、そのパターンへの一致候補を指示する一致出力を生成する。結合器１４は、全てのサブワードＦＳＭからの一致出力を受信し、全てのサブワードＦＳＭがそのパターンへの一致を指示する場合には、パターン一致出力を生成する。そのパターンは可変パターンである。ＦＳＭは単一ビットＦＳＭである。【選択図】図２
2014232523.tif 000002
【特許請求の範囲】
【請求項１】
Ｎビットワイドワードのシーケンスを含む入力ストリームの中の或るパターンを探索する装置であって、該装置は、
複数のサブワードＦＳＭであって、各サブワードＦＳＭはＮビット未満のワードサイズを有し、各サブワードＦＳＭは前記Ｎビットワードの対応するセグメントを処理し、前記Ｎビットワイドワードのうちの１つのＮビットワイドワードの前記対応するセグメントのうちの１つが該サブワードＦＳＭによって受信されるときに、前記パターンへの一致候補を指示する一致出力を生成する、複数のサブワードＦＳＭと、
前記一致出力を受信し、全てのＦＳＭが前記パターンの一致を示す場合にはパターン一致出力を生成する結合器とを備え、
前記パターンは可変パターンである、Ｎビットワイドワードのシーケンスを含む入力ストリームの中の或るパターンを探索する装置。
【請求項２】
請求項１に記載の装置であって、該装置は前記Ｎビットワイドワードに関して動作して前記パターンを照合する単一ＦＳＭをエミュレートし、前記一致出力は前記単一ＦＳＭ内の異なる取り得る一致状態に対応する、請求項１に記載の装置。
【請求項３】
前記サブワードＦＳＭは単一ビットＦＳＭである、請求項１に記載の装置。
【請求項４】
請求項１に記載の装置であって、該装置は、複数の前記Ｎビットワードに関して同時に動作する単一ＦＳＭをエミュレートする、請求項１に記載の装置。
【請求項５】
前記パターンは可変長を有する正規表現である、請求項１に記載の装置。
【請求項６】
前記パターンは、１つの辺上に区別される必要がある複数のトークンを有する、請求項１に記載の装置。
【請求項７】
前記Ｎビットワイドワードの１つのビットは前記サブワードＦＳＭのいずれによっても処理されない、請求項１に記載の装置。
【請求項８】
入力ワードのシーケンスを含む入力ストリーム内の可変パターンとの一致を見いだす方法であって、各入力ワードは複数のサブワードによって特徴付けられ、前記サブワードはそれぞれ前記入力ワード未満のビットを有し、該方法は、
複数のサブワードＦＳＭを設けるステップであって、各サブワードＦＳＭは前記入力ワードのそれぞれの異なるサブワードに関して動作し、各サブワードＦＳＭは、そのサブワードＦＳＭが一致した状態に入るときにパターン一致候補を指示する一致した出力を与える、設けるステップと、
前記サブワードＦＳＭのそれぞれの前記一致した出力が共通の一致した状態を指示するか否かを判断するステップと、
前記共通の一致した状態を出力するステップとを含む、入力ワードのシーケンスを含む入力ストリーム内の可変パターンとの一致を見いだす方法。
【請求項９】
前記複数のサブワードＦＳＭは、複数の前記入力ワードに関して同時に動作する単一のＦＳＭをエミュレートする、請求項８に記載の方法。
【請求項１０】
前記パターンは可変長を有する正規表現である、請求項８に記載の方法。
【発明の詳細な説明】
【背景技術】
【０００１】
有限状態機械（ＦＳＭ：Finite State Machine）は多くの場合に、データストリングの中の規定されたパターンを探索するのに用いられる。ＦＳＭは「有向辺」によって接続される複数の状態を有する機械である。ＦＳＭは、ＦＳＭによって新たな入力ワードが受信されるたびに、現在の状態から次の状態に移動する。それゆえ、各辺は、その辺に関連付けられる１つ又は複数の値を有する。ＦＳＭが或る辺上の値に等しい値を有する入力ワードを受信し、かつＦＳＭがその辺の入力側に関連付けられる状態にあるとき、ＦＳＭはその辺の出力側に関連付けられる状態に変化する。その後、ＦＳＭは次の入力ワードを処理し始める。データストリングはデジタル値のシーケンスである。そのデジタル値は、複数のデータ源のいずれかから到来することができる。例えば、データ源は、通信リンク上のデジタル伝送とすることができる。別の例では、データストリングは、各デジタル値が８ビットワードであるＡＳＣＩＩにおいて符号化されたテキストのストリングとすることができる。また、データストリングは、デジタルオシロスコープによって生成されるような測定値のシーケンスとすることもでき、その場合、各デジタル値は、或るより大きなワード、例えば、１２ビットワード又は１６ビットワードとすることができる。場合によっては、データストリングははるかに大きなワードを含むことができる。例えば、データストリングは、命令が６４ビットワードであるプログラムとすることができる。
【０００２】
通常、探索プログラムは、これらのシーケンスの中の正規表現として表すことができる規定されたパターンを探索することと含む。このタイプの問題は、数多くのデータ処理問題において直面される。例えば、長いテキストのドキュメントの中の、特定のフレーズが探索される場合がある。同様に、オシロスコープのような機器において、測定値の非常に長いストリングの中の、特定の波形パターンが探索されることが必要な場合がある。コンピュータコードの場合、ウィルスチェックプログラムにおいてマルウェアを探索するのが一般的である。
【０００３】
単一ＦＳＭが探索に用いられる場合には、探索を完了する時間は、データストリングの長さの一次関数である。測定値の長いストリング、例えば、１０１２データポイントの場合、探索時間は実行できないほど長くなる可能性がある。さらに、リアルタイム処理を必要とする応用形態の場合、それより少ないポイントが関与する場合であっても、データポイントを処理する時間は、実行できないほど長くなる可能性がある。最新のデジタルオシロスコープは、最大２チャネルの場合にチャネルあたり１６０ギガサンプル／秒を、最大４チャネルの場合にチャネルあたり８０ギガサンプル／秒を生成することができる。データ内のパターンを時間内に見つけて、そのパターンを含む信号を取り込むという問題は、時間がかかりすぎるので、トリガ用プロセッサとしてＦＳＭを使用できない可能性がある。
【０００４】
探索時間を短縮する１つの方法は、状態を更新するたびに複数のワードを処理するＦＳＭを利用する。これは、ＦＳＭを元のワードサイズの倍数を用いて構築することと同じである。２ワードワイドＦＳＭが用いられる場合には、探索時間は２分の１に短縮される。残念なことに、ＦＳＭを実現するのに必要とされるメモリの量によって、設定される入力ワードのサイズには限界がある。
【０００５】
ＦＳＭを実現するのに必要とされるメモリの量は、ワードサイズの指数関数である。一般的な場合に、ＦＳＭは、取り得る入力値ごとに１つの行と、状態ごとに１つの列とを有する表を用いて実現される。表は、ＦＳＭの現在の状態と、次の状態への現在の入力とをマッピングしている。表内の行の数は２Ｎである。ただし、Ｎは入力ワード内のビット数である。それゆえ、１６ビットより大きな入力ワードの場合に、メモリに基づくＦＳＭを構築することは、かなりの難題を提起する。問題によっては、メモリの量を種々の圧縮技法を用いて削減することができる。しかしながら、これらの技法によっても実用的な実施態様につながらない問題が相変わらず存在する。
【０００６】
より高速の回路を用いることによって利用可能な速度を超えてＦＳＭの処理速度を改善するのに、複数のＦＳＭが並列に動作する機械が提案された。残念なことに、並列ＦＳＭを利用する従来技術の探索エンジンは、探索することができるパターンのタイプに制限がある。本検討には、正規表現によって表すことができるパターンのタイプを２つの種類に分けることが有用である。第１の種類は「固定パターン」と呼ばれる。例えば、テキストストリングの中のパターン「ｖａｒ＝ｘ」を探索することができる。固定パターンは既知の固定長を有し、入力ストリーム内の唯一のパターンによって満たされる。第２の種類のパターンは「可変パターン」と呼ばれる。これらのパターンは未知の長さを有するか、又は複数の異なるストリングによって満たされる。例えば、「ｖａｒ＝［ａ−ｚ］＋；」は、「ｖａｒ＝」から始まり、その後、小文字アルファベット内の任意の数の文字が続き、その後、「；」が続く任意のパターンによって満たされる。このパターンは、長さに関して、同様に厳密な内容に関しても、あらかじめ予測できないストリングを生成する。ウィルス検出において利用されるような、対象となる数多くの探索問題は、可変パターンの探索を必要とする。
【０００７】
固定パターンの場合の並列ＦＳＭに基づく探索エンジンは当該技術分野において既知である。複数のＦＳＭのそれぞれが、レーンと呼ばれる特定のストリームからのデータを処理する機械について考える。探索パターンをＬ個のレーンにわたって分割できる場合には、Ｌ個のプロセッサを備える探索エンジンを用いることができる。この構成では、入力データストリームは、第１のＦＳＭがワード１、Ｌ＋１、２Ｌ＋１等からなる入力ストリングを処理するようにレーンにわたってストライピングされる。第２のＦＳＭはワード２、Ｌ＋２、２Ｌ＋２．．．からなる入力ストリングを処理し、それ以外も同様である。各ＦＳＭは特定のパターン、すなわち、全パターンの長さの１／Ｎを探索する。各ＦＳＭがその指定された一致を見つけるとき、その探索エンジンは、その一致を結合回路に出力し、結合回路は、全てのＦＳＭが一致を同時に見つけるのを確実にするように試験する。残念なことに、可変パターンは、このように決まった数のプロセッサにわたって分割できないので、この方策は可変パターンを伴う探索の場合に失敗する。そのパターンは可変パターンである。
【発明の概要】
【０００８】
本発明は、Ｎビットワイドデータワードのシーケンスを有する入力ストリームの中の或るパターンを探索する装置を含む。その装置は、複数のサブワードＦＳＭと、結合器とを含む。各サブワードＦＳＭはＮビット未満の入力ワードサイズを有する。各ＦＳＭは、Ｎビットワードのうちの対応するセグメントを処理し、そのＦＳＭへの入力ワードのうちの１つが受信され、そのＦＳＭが所定の一致状態に移動するときに、そのパターンへの一致候補を指示する一致出力を生成する。結合器は、全てのサブワードＦＳＭからの一致出力を受信し、全てのサブワードＦＳＭがそのパターンへの一致を指示する場合には、パターン一致出力を生成する。そのパターンは可変パターンである。
【０００９】
本発明の一態様では、その装置は、パターンを照合するためにＮビットワイドワードに関して動作する単一ＦＳＭをエミュレートする。この場合、一致出力は単一ＦＳＭ内の異なる取り得る一致状態に対応する。
【００１０】
１つの例示的な実施形態では、サブワードＦＳＭは単一ビットＦＳＭである。
【００１１】
本発明の一態様では、その装置は、サブワードＦＳＭのそれぞれがＦＳＭ内の任意の状態対間を移動するときに、そのシーケンス内の複数のＮビットデータワードを処理する。
【図面の簡単な説明】
【００１２】
【図１】パリティ計算器を実現する最小ＦＳＭを示す図である。
【図２】上記で論じられたパターンを実現する装置を示す図である。
【図３】可変長パターン「ｚａ＊」のワードワイズＦＳＭを示す図である。
【図４】図１に示されるのと同じ探索を実行するが、辺あたり１つのトークンのみを有するＦＳＭの状態図である。
【図５Ａ】図１に示されるのを同じ探索の場合のビットｂ０の場合の単一ビットＦＳＭを示す図である。
【図５Ｂ】図１に示されるのを同じ探索の場合のビットｂ１の場合の単一ビットＦＳＭを示す図である。
【図５Ｃ】図１に示されるのを同じ探索の場合のビットｂ２の場合の単一ビットＦＳＭを示す図である。
【図６Ａ】ｂ０のＦＳＭ０がＦＳＭＷから導出されるプロセスを示す図である。
【図６Ｂ】ｂ０のＦＳＭ０がＦＳＭＷから導出されるプロセスを示す図である。
【図６Ｃ】ｂ０のＦＳＭ０がＦＳＭＷから導出されるプロセスを示す図である。
【図６Ｄ】ｂ０のＦＳＭ０がＦＳＭＷから導出されるプロセスを示す図である。
【図７Ａ】２ビット以上を有する１組のサブワードＦＳＭを使用する利点を示す図である。
【図７Ｂ】２ビット以上を有する１組のサブワードＦＳＭを使用する利点を示す図である。
【図７Ｃ】２ビット以上を有する１組のサブワードＦＳＭを使用する利点を示す図である。
【図７Ｄ】２ビット以上を有する１組のサブワードＦＳＭを使用する利点を示す図である。
【図８Ａ】図７ＡのＦＳＭに等価である、図７Ｂに示される１ワードＦＳＭのビット０及び２の場合の２ビットＦＳＭを導出する際の種々のステージを示す図である。
【図８Ｂ】図７ＡのＦＳＭに等価である、図７Ｂに示される１ワードＦＳＭのビット０及び２の場合の２ビットＦＳＭを導出する際の種々のステージを示す図である。
【図８Ｃ】図７ＡのＦＳＭに等価である、図７Ｂに示される１ワードＦＳＭのビット０及び２の場合の２ビットＦＳＭを導出する際の種々のステージを示す図である。
【図８Ｄ】図７ＡのＦＳＭに等価である、図７Ｂに示される１ワードＦＳＭのビット０及び２の場合の２ビットＦＳＭを導出する際の種々のステージを示す図である。
【図９Ａ】図７ＡのＦＳＭに等価である、図７Ｄに示される１ワードＦＳＭを実現する８つの単一ビットＦＳＭを示す図である。
【図９Ｂ】図７ＡのＦＳＭに等価である、図７Ｄに示される１ワードＦＳＭを実現する８つの単一ビットＦＳＭを示す図である。
【発明を実施するための形態】
【００１３】
本発明は、入力データのワードサイズよりも著しく小さなワードサイズを有し、可変パターンを探索するように並列に動作することができるＦＳＭを利用する並列探索エンジンを提供する。以下の検討を簡単にするように、ＦＳＭによって利用されるワードサイズはＦＳＭワードサイズと呼ばれる。このワードサイズは、探索される入力ストリングのワードサイズより大きくすることも、小さくすることもできる。探索されるストリングのワードサイズは入力ワードサイズと呼ばれる。ここで対象となる事例では、ＦＳＭワードサイズは入力ワードサイズよりも著しく小さい。入力ワードサイズよりも小さいＦＳＭワードサイズに関して動作するＦＳＭは、サブワードＦＳＭと呼ばれる。最も小さなサブワードＦＳＭは１ビットのＦＳＭワードサイズを有する。
【００１４】
本発明がその利点を提供する方法は、入力データシーケンス内のパターンを探索する、より大きなＦＳＭをエミュレートするように並列に動作する複数の単一ビットＦＳＭを含む探索エンジンに関して更に深く理解することができる。より大きなＦＳＭは、以下の検討において、１ワードＦＳＭと呼ばれる。対象となるパターンに対する１ワードワイド探索エンジンは既に設計されていると仮定する。正規表現によって表されるパターンに対するＦＳＭを生成する方法は、当該技術分野において既知であり、それゆえ、ここでは詳細には論じられない。
【００１５】
そのシーケンスの入力ワードはＮビット幅であり、１ワードＦＳＭ内の状態数はＭによって表される。１ワードＦＳＭは通常、状態図によって表され、状態図では、種々の状態が状態間の遷移を表す複数の「辺」によって接続される。各辺は開始状態及び終了状態と、１つ又は複数の「トークン」とを有する。現在の状態が開始状態であり、トークンのうちの１つのトークンの値を有するワードが受信されるとき、終了状態が、そのＦＳＭの次の状態である。各Ｎビット入力ワードが２Ｎの取り得る値を有するので、原理的には、状態ごとに２Ｎの取り得るトークン値が存在する。それゆえ、ＦＳＭは、Ｍ個の取り得る現在の状態及び現在の入力ワードごとに次の状態を与える２Ｎ行及びＭ列を有する表における単純な索表動作によって動作することができる。それゆえ、遷移を行う時間は基本的にＦＳＭ内の状態数とは無関係である。
【００１６】
Ｎの値が大きい場合、この表によって必要とされるメモリがこの単純な手法を実行不可能にする。入力データストリームがデジタルオシロスコープ等の機器からの一連の測定値である応用形態の場合に、多くの場合に３２ビット又は６４ビットのＮ値が必要とされる。そのような応用形態では、ＦＳＭを用いて、機器によって測定された波形を解析し、対象となる特徴を識別する。それゆえ、大きなワードのＦＳＭを実施するのに必要とされるメモリの量を削減する機構が必要とされる。
【００１７】
本発明の一実施形態では、入力ストリームを探索するのに、Ｎ個の単一ビットＦＳＭが並列に使用される。以下で更に詳細に論じられるように、単一ビットＦＳＭのうちの１つ又は複数は、ＮビットワードＦＳＭよりも多くの状態数を有することができる。この最大状態数をＭ’によって表す。単一ビットＦＳＭは、多くても２行×Ｍ’列を有する表しか必要としない。ここで、Ｎ個のそのようなＦＳＭが並列に動作している。１バイト探索ワードの場合、Ｎ＝８であり、メモリ要件は、２５６行×Ｍ状態と比べて、１６行×Ｍ列以下である。１ビットＦＳＭにおいて状態数が著しく多い場合であっても、依然としてメモリは著しく節約される。
【００１８】
一般的に、並列に作動しているＮ個の単一ビットＦＳＭは、探索を完了するのに概ね同じ時間を要する。コストはメモリ要件の直接の相関要素であるので、それゆえ、この手法における大きな節約はコストの削減である。しかしながら、ＦＳＭのサイズが小さいほど、簡単な回路を使用することになるので、結果として速度も多少の改善が図られる場合がある。さらに、この手法は大きな入力ワードのＦＳＭを実用的にする。
【００１９】
１ワードＦＳＭよりも著しい速度の改善を得るように、元の１ワードＦＳＭから、一度に２ワードに関して動作するＦＳＭを導出することができる。その際、この新たな２ワードＦＳＭは、並列に作動する２Ｎ個の単一ビットＦＳＭとして実現される。この場合、入力ストリームの長さが実効的に半分にされるので、並列処理によって２倍の速度が与えられる。Ｎの更に大きな倍数である探索ワードを有するＦＳＭを使用し、さらに、単一ビットＦＳＭの対応する集合体を実現することによって、更なる改善を実現することができる。この場合、メモリを著しく節約することができる。
【００２０】
以下の検討を簡単にするように、サブワードＦＳＭは単一ビットＦＳＭであると仮定される。他のサイズのサブワードＦＳＭを利用することができる方法は、以下で更に詳細に論じられる。一般的に、ＮビットＦＳＭは「一致した」状態である少なくとも１つの状態を有する。ＦＳＭがこの状態に入るとき、ＦＳＭに取り付けられた処理ハードウェアに、それを得るようにＦＳＭが作成されたターゲットパターンのうちの１つに対する一致が見いだされたことを指示する信号が生成される。１つのＦＳＭ内に複数のそのような一致状態が存在する場合がある。
【００２１】
各単一ビットＦＳＭは、ＮビットＦＳＭに対する入力ワードのうちの対応するビットに関して動作する。各単一ビットＦＳＭは、他の単一ビットＦＳＭ内で行われる遷移とは関係なく、その遷移を行わなければならない。ターゲットパターンが見いだされたために、ＮビットＦＳＭに対する入力ワードがそのＦＳＭにおいて一致をトリガするとき、各単一ビットＦＳＭは同じように一致を報告しなければならない。より大きなＦＳＭでは、単一ビット一致は、複数の取り得る一致状態を規定する場合があることに留意されたい。結合プロセッサが複数の単一ビットＦＳＭからの一致出力の収集物を受信し、全ての単一ビットＦＳＭによって報告される共通状態が存在するか否かを判断する。その後、その共通状態は一致した状態として外部に報告される。
【００２２】
正規表現からなる探索パターンを考えると、その正規探索パターンを実現する最小ＦＳＭが存在する。最小ＦＳＭは、その探索パターンを実現する最小状態数を有するＦＳＭである。最小ＦＳＭは特有のトポロジを有する。特定のパターンに対する任意のＦＳＭを考えると、状態を除去するか、又は統合することによって最小パターンを導出することができる。任意の入力の場合に初期状態から到達不可能である任意の状態を除去することができる。任意の入力の場合に互いに区別することができない任意の２つの状態は統合することができる。ＦＳＭがもはや任意の到達不可能な状態又は区別不可能な状態を有しないとき、そのＦＳＭは最小ＦＳＭである。
【００２３】
可変パターンの探索を実現するＦＳＭは、少なくとも１つの辺上に複数のトークンが存在する最小ＦＳＭを有するか、又は「＊」等のワイルドカードによって作成された直接ループを含む最小ＦＳＭを有する。すなわち、最小ＦＳＭにおいて、複数の異なる入力値の場合、又は繰り返す入力値の場合、又は場合によっては、全く入力値がない場合でも第１の状態から第２の状態への遷移が生じるという特性を有する２つの状態が存在することになる。対照的に、固定パターンを探索するＦＳＭは、全ての辺上に所与の状態への単一トークンのみを有する最小ＦＳＭを有する。
【００２４】
１ワードＦＳＭから複数の単一ビットＦＳＭを導出する従来技術の技法は、１ワードＦＳＭが、固定パターンである対応する探索パターンを有する場合のみ確実に作動する。さらに、１つの辺上に複数のトークンを含むが、固定長パターンを有するＦＳＭも、そのようなＦＳＭを複数のサブワードＦＳＭとして実現しようと試みるときに難題を提起する。
【００２５】
本発明がその利点を提供する方法は、簡単な例を参照することにより容易に理解することができる。パリティが正確であるかを検査されることになるデータワードストリームについて考える。各データワードは偶数パリティ又は奇数パリティのいずれかを有する。パリティ計算器の正規表現は以下の通りである。
（｛偶数｝＊｛奇数｝｛偶数｝＊｛奇数｝）＊｛偶数｝＊
【００２６】
ここで「偶数」は、偶数パリティを有するストリーム内のワードを表し、「奇数」は奇数パリティを有するストリーム内のワードを表す。正規表現は、偶数パリティを有する任意の数（０以上）のワードに奇数パリティを有する１ワードが続き、その後に、偶数パリティを有する任意の数のワードに奇数パリティを有する１ワードが続き、それらを任意の回数だけ繰り返した後に、偶数パリティを有する任意の数のワードが続くことによって満たされる。「＊」は先行値の０以上を意味するので、このパターンは可変であり、かつ未知の長さを有する。さらに、このパターンを見つける最小ＦＳＭは、全ての既知の入力に対して、ビットレベルにおいて区別不可能である２つの状態間の辺上に複数のトークンを有する。
【００２７】
その例を簡単にするように、そのデータストリームは３ビットワード、すなわち、０〜７の整数値であると仮定される。０、３、５及び６は偶数パリティを有し、１、２、４及び７は奇数パリティを有することに留意されたい。それゆえ、３ビットワードの事例では、正規表現は以下の通りである。
（｛０，３，５，６｝＊｛１，２，４，７｝｛０，３，５，６｝＊｛１，２，４，７｝）＊｛０，３，５，６｝＊
【００２８】
見やすくするように、整数トークンを分けるのにコンマが用いられており、トークンをまとめるのに中括弧｛｝が用いられている。
【００２９】
このパターンを実施する最小ＦＳＭが図１に示される。以下の検討において、「一致」出力をトリガする状態は二重丸の境界で示される。一致は、状態「０」に入るときに生じる。すなわち、１、２、４若しくは７の入力が受信され、かつＦＳＭが状態「１」にあるときに、又は０、３、５若しくは６が受信され、かつＦＳＭが状態「０」にあるときに一致が生じる。
【００３０】
ここで、図２を参照すると、上記で論じられたパターンを実施する装置２０が示される。その装置２０への入力ストリング２１は、３ビットワード２２のシーケンスからなる。各ワードは装置２０の入力レジスタ１５の中にシフトされる。入力レジスタ１５は、現在のワード内の各ビットを異なる単一ビットＦＳＭに与える。ＦＳＭは１１〜１３において示される。各ＦＳＭは、そのＦＳＭに入る単一ビットストリームに関してのみ動作する。それゆえ、ＦＳＭ１１は入力ワードの最下位ビットｂ０に関してのみ動作し、ＦＳＭ１２は次の上位ビットｂ１に関してのみ動作し、ＦＳＭ１３は最上位ビットｂ２に関してのみ動作する。ＦＳＭのうちのいずれかが一致を見いだすとき、そのＦＳＭはその一致を結合器１４に報告する。結合器１４が、全てのＦＳＭから同じ一致状態を指示する一致報告を受信する場合には、結合器１４はその一致を外部に報告する。
【００３１】
ＦＳＭのそれぞれが単一ビットストリームに関してのみ動作するので、そのＦＳＭはそのビット値のみに基づいて状態変化を行わなければならず、それらの状態変化は、一致した状態を得るように全ワードに関して動作することになっていた１ワードＦＳＭの場合の状態変化に対応しなければならない。しかしながら、以下で更に詳細に説明されるように、１ビットＦＳＭの状態が、１ワードＦＳＭの複数の状態に対応する場合がある。この例における８つの状態に対するビット値が以下に示されており、最下位ビットはｂ０である。
【００３２】
【表１】
2014232523.tif 000003
【００３３】
図１のＦＳＭは１、２、４及び７のワード値に関して遷移する。ＦＳＭ１１は、ｂ０値を「見る」だけである。しかしながら、値１及び７はＦＳＭ１１への入力において１に対応し、値２及び４はＦＳＭ１１への入力において０に対応する。同様に、第２の１組の値０、３、５及び６は、ＦＳＭ１１への特有のビット値を与えない。それゆえ、ＦＳＭ１１が０を受信するとき、その０は２若しくは４からくる可能性があるか、又は０若しくは６からくる可能性があり、２及び４は０及び６とは異なる辺によって表されるので、ＦＳＭ１１は次の状態に遷移するか否かがわからない。ＦＳＭ１２及び１３の場合にも同様の問題がある。これらの問題は、異なる状態に遷移する１つ又は複数の辺上に複数のトークンが存在することから生じる。結果として、ワードワイズＦＳＭを複数のサブワードＦＳＭに変換する従来技術の技法は、辺あたり、１つのトークンのみを有するか、又は区別する必要がない１組のトークンを有する固定パターンに限定される。例えば、ＦＳＭが、大文字又は小文字いずれかにおいて、「ｓ」又は「ｔ」の入力を認識するように設計される場合には、その入力は実際には、「Ｓ」、「ｓ」又は「Ｔ」、「ｔ」のいずれかとすることができる。ＡＳＣＩＩでは、ビット５は大文字、小文字の区別を見分ける役割を担うビットであり、大文字はそのビットが０に設定されており、小文字はそのビットが１に設定されている。それゆえ、この場合、ビット５の値は重要ではない。
【００３４】
辺が１つのみのトークンを有する場合であっても、「＊」がパターン内に存在するときに同様の問題が生じる。ＡＳＣＩＩ文字の入力ストリング内で探索されることになるサンプルパターン「ｚａ＊」について考える。そのパターンは、ｚに、０を含む任意の数のａが続くことよって満たされる。すなわち、一致が「ｚ」、「ｚａ」、「ｚａａ」等に対応する。このパターンに対するワードワイズＦＳＭが図３に示される。ＦＳＭは状態０において開始し、「ｚ」が受信されるまでその状態のままである。「ｚ」が受信されるとき、ＦＳＭは状態１に遷移し、一致を報告する。状態１において「ａ」以外の任意の他の文字が受信される場合には、ＦＳＭは状態０に遷移して戻る。状態１にある間に「ａ」が受信される場合には、ＦＳＭは「ａ」によってループバックし、一致を報告する。
【００３５】
８つの単一ビットＦＳＭにおいてこのＦＳＭを実現することに伴う問題は、そのＦＳＭが最下位ビットを取り扱う場合に最も容易に理解することができる。ＡＳＣＩＩにおいて「ｚ」の最下位ビットは０であり、一方、「ａ」の最下位ビットは１である。ＦＳＭが０を受信したので、状態０から状態１に遷移したと仮定する。次に受信したビットが「ａ」でない場合には、ＦＳＭは状態１に戻ることになる。次のビットが「ａ」からのものである場合には、ＦＳＭは現在の状態のままであり、別の一致を報告する。その問題は、再び、次に受信された１が「ａ」に対応するか、その最下位ビットにおいて１を有する或る他の文字に対応するかをＦＳＭが判断できないことにある。例えば、「ｓ」も最下位ビットに１を有する。それゆえ、図３に示されるＦＳＭを実現する単一ビットＦＳＭも失敗する。
【００３６】
本発明は、サブワードＦＳＭが失敗する１ワードＦＳＭを、サブワードＦＳＭが正確に動作する新たなＦＳＭに拡張することによってこの問題を回避する。再び図１を参照する。ＦＳＭを拡張して、サブワードＦＳＭを用いることができるＦＳＭを提供する１つの方法は、元のＦＳＭを、各辺が一意的に区別可能なトークンを有するか、又はその間を区別する必要がない場合には１組のトークンを有するＦＳＭに拡張することである。そのようなＦＳＭが図４に示されており、図４は、図１に示されるのと同じ探索を実行するが、辺あたり１つのトークンのみを有するＦＳＭの状態図である。ここでは、全てのトークン値が区別されなければならないので、辺あたり１つのトークンが必要とされる。その拡張は、元のＦＳＭ内のマルチトークン辺のそれぞれを、辺あたり１つのトークンを有する別々の辺に分割することによって成し遂げられる。それゆえ、トークン「１、２、４、７」を有する単一の辺は４つ辺、すなわち、「１」に対応する辺、「２」に対応する辺等に分割される。新たな辺をそれぞれ受信するのに新たな状態が追加される。元のＦＳＭ内の状態０から８つの辺が出る。０のトークン値に対応する辺は、その状態にループバックする。それゆえ、残りの７つの辺を受信するのに７つの更なる状態が必要とされる。これらの状態は状態番号１〜７で示される。しかしながら、図４に示されるＦＳＭの状態１は、図１に示される状態１と同じではない。
【００３７】
図４の状態番号は、その状態番号が、結果として状態０から図４のその状態への遷移が生じた辺値に対応するように選択される。それゆえ、状態２は、ＦＳＭが状態０にある間に、値２を有するワードが受信された結果である。新たな状態ごとに、元のＦＳＭを調べて、取り得る８つのトークンのそれぞれに対応する次の状態を決定する。再び図１を参照すると、ＦＳＭが状態２に遷移した後に「２」が受信された場合には、ＦＳＭは状態０に戻り、報告する。同様に、ＦＳＭが状態４に遷移した後に４が受信された場合には、ＦＳＭは状態０に戻り、報告する。ＦＳＭが状態０にあるときに、３、５又は６が受信された場合には、元のＦＳＭは状態０に戻り、報告した。それゆえ、図４の状態０、３、５及び６は報告状態である。
【００３８】
残りの辺は、入力値のシーケンスを追跡し、その結果を図１のＦＳＭで得られた結果と比較することによって理解することができる。例えば、４が受信された後に２が受信された場合には、ＦＳＭは状態０から状態４に移動し、その後、報告状態である状態６に移動する。状態６は報告状態である。これは、状態０から状態１に遷移し、その後、状態０に戻り、一致を報告する図１に示される元のＦＳＭに対応する。
【００３９】
図４に示されるＦＳＭは、図１に示される最小ＦＳＭの２つの状態に比べて８つの状態を有するという点ではるかに複雑であるが、図４のＦＳＭから導出される単一ビットＦＳＭは３つの状態のみを有する。ここで、図５Ａ〜図５Ｃを参照すると、それぞれビットｂ０、ｂ１及びｂ２の場合の単一ビットＦＳＭが示される。単一ビットＦＳＭが図４に示されるワードワイズＦＳＭから導出される方法が、ここでｂ０の場合の単一ビットＦＳＭに関して説明される。ｂ０の場合のＦＳＭは、図４に示される状態０から開始し、図４のＦＳＭが全ワード入力を受信して次の状態に進むときに、当該ビットの取り得る入力値ごとに横切られる状態を調べることによって導出される。以下の検討を簡単にするように、ｂ０を処理するＦＳＭはＦＳＭ０と呼ばれる。ワード全体を受信する図４のＦＳＭはＦＳＭＷと呼ばれる。
【００４０】
ここで図６Ａ〜図６Ｄを参照すると、ＦＳＭＷからＦＳＭ０が導出されるプロセスが示される。ＦＳＭ０が、状態０にあるときに１を受信する場合には、ＦＳＭＷはｂ０に１を有する入力ワード、すなわち、１、３、５又は７の入力ワードを受信していなければならない。この入力ワードによれば、ＦＳＭＷは状態１、３、５又は７のうちの１つに進むことになる。ＦＳＭ０は、どの状態が実際に当該状態であったかを見分けることはできない。この状態は図６においてＡ１を付される。ＦＳＭ０におけるこの状態は、ＦＳＭＷにおけるこの状態に対応することができる取り得る状態のリストによっても表される。同様に、ＦＳＭＷがｂ０＝０を有する入力ワードを受信した場合には、ＦＳＭ０は、その状態図において、対応する状態Ａ０に進むことになる。ｂ０＝０を有するワードは０、２、４及び６である。ＦＳＭがそれらのワードのうちの１つを受信した場合には、ＦＳＭは、実際にどのワードが受信されたかによって、状態０、２、４又は６のうちの１つに進むことになる。再び、ＦＳＭ０は、ＦＳＭＷであるこれらの状態の厳密に１つの状態を知るすべはない。ＦＳＭ０は、ＦＳＭＷがそれらの状態のうちの１つであることのみを知る。したがって、「０」に対応する、その新たな状態Ａ０は、０、２、４、６を付される。
【００４１】
ここで、そのプロセスは、新たな状態ごとに、かつ０及び１のＦＳＭ０への取り得る入力値ごとに繰り返される。ＦＳＭ０がＡ１にあり、かつＦＳＭ０への次の入力として１が到来すると仮定する。この状況は、ＦＳＭＷが状態１、３、５又は７のうちのいずれかにあり、次の入力ワードが１、３、５又は７であった場合に生じる可能性がある。それゆえ、Ｂ１として表される次の状態は、潜在的な入力ワードのうちの１つがＡ１におけるリスト内の取り得る状態のうちの１つによって受信された場合には、ＦＳＭＷにおいて終点となることができる全ての状態に対応する。これらが以下の表において要約される。
【００４２】
【表２】
2014232523.tif 000004
【００４３】
それゆえ、Ｂ１の場合の取り得る状態は０、２、４及び６である。しかしながら、これらは状態Ａ０と全く同じ状態である。それゆえ、状態Ａ０及びＢ１は同じである。したがって、一部終了したＦＳＭ０は、ここで図６Ｂに示されるようになる。次に、状態Ｂ０に対応する状態が決定される。これらの状態は、Ａ１における開始状態のうちの１つの場合に、結果としてｂ０＝０から生じる可能性がある状態である。これらが以下の表に要約される。
【００４４】
【表３】
2014232523.tif 000005
【００４５】
それゆえ、Ｂ０に対応する取り得るＦＳＭＷ状態は１、３、５及び７である。しかしながら、これらはＡ１と同じ状態である。それゆえ、Ａ１及びＢ０は同じ状態である。したがって、一部終了したＦＳＭ０は、ここで図６Ｃに示されるようになる。
【００４６】
ここで、この手順が、Ａ０における状態から開始し、ｂ０＝１を有する入力ワードがＦＳＭによって受信されると仮定して繰り返される。その結果が以下の表に要約される。
【００４７】
【表４】
2014232523.tif 000006
【００４８】
それゆえ、状態Ａ０に入力される１のビット値から生じる状態は再び１、３、５及び７である。これらは状態Ａ１に対応した同じ状態である。それゆえ、新たな状態は作成されない。すなわち、１が受信されるとき、Ａ０はＡ１に遷移する。Ａ０及び０の入力ビットの場合にこの手順を繰り返す結果として、０、２、４及び６のＦＳＭＷ状態に対応する状態が生じる。これも実際にはＡ０である。したがって、最後のＦＳＭ０は図６Ｃに示されたようになる。対象となるＦＳＭＷの状態は、一致を外部に報告する状態、すなわち、状態０、３、５及び６である。それゆえ、ＦＳＭ０も、これらの報告状態のうちの１つに対応する状態に入るたびに、一致候補を報告しなければならない。これらの状態のうちの１つに入っても、ＦＳＭ０は、実際にどのＦＳＭＷ状態に達したのか「わからない」ので、取り得る状態のリストを図２に示される結合器１４に報告する。状態１、２、４及び７は報告状態ではなく、これらの状態を外部に報告することは何の役割も果たさないので、これらの状態は各ＦＳＭ０状態に対応する状態のリストから除外することができる。それゆえ、最後のＦＳＭ０状態図は図６Ｄに示されるようになる。ここでは、二重丸の境界は、ＦＳＭ０がその状態のリスト内でＦＳＭＷ状態のリストを結合回路に報告することを示す。
【００４９】
実際には、現在の入力ワードからの入力ビットを受信すると、各単一ビットＦＳＭが一致を外部に報告し、各単一ビットＦＳＭによって報告された状態のリストが状態ｘを含むときに、状態ｘに対応する一致が結合器１４によって報告される。
【００５０】
上記の例では、ＮビットワードＦＳＭはＮ個の１ビットワイドＦＳＭで置き換えられた。Ｎの値が大きい場合、この方策はメモリ要件を緩和するとともに、１つの大きく複雑な回路の代わりに数多くの簡単で小さな回路を使用することに起因して多少の速度の上昇も見込める。更なる速度改善を提供するように、元のＮビットワードＦＳＭから、マルチワードＦＳＭを最初に作成することができる。例えば、１ワードワイドＦＳＭから２ワードワイドＦＳＭを作成することができ、その後、２Ｎ個の単一ビットＦＳＭを用いて、２ワードワイドＦＳＭを実現することになる。この場合、１ワードＦＳＭより、２倍までの速度上昇を実現することができる。それゆえ、本発明は、可変パターンの場合に大きなデータセットを走査するのに必要とされる時間を著しく短縮する可能性を有する。
【００５１】
場合によっては、実施される具体的な探索パターンによるが、大きなサブワードＦＳＭほど効率的である場合がある。本検討で用いるサブワードＦＳＭは、入力データシーケンス内のワードの全ビット未満に関して動作するＦＳＭであると定義される。例えば、６４ビットワードＦＳＭは、３２個の２ビットＦＳＭ又は１６個の４ビットＦＳＭとして実現することができる。さらに、サブワードＦＳＭの全てが同じサイズである必要はない。上記の手順において、複数のサブワードＦＳＭとして確実に実現することができるＦＳＭに到達するのに、最初に、１ワードワイド可変パターンＦＳＭが各辺上に１つのトークンを有するＦＳＭを実現するように拡張された。しかしながら、他の方策を利用することもできる。
【００５２】
図１においてＦＳＭの単一ビットＦＳＭバージョンを見つける際に直面する問題は、辺上に複数のトークンがあることから生じ、それらのトークンは区別する必要があった。その辺上の１組のトークンを単一ビットＦＳＭによって区別できない場合には、ＦＳＭを複数の単一ビットＦＳＭを用いる実施態様に直接変換することは失敗する。その問題を取り除くには、辺が２つの辺に分割され、トークンの一部が新たな辺に進むようにする。ここで、各辺上の１組のトークンを単一ビットＦＳＭによって区別できる場合には、更なる分割は不要である。極端な場合には、いずれの辺上にも単一のトークンしか存在しなくなるまで状態が追加される。しかしながら、多くの場合に、そのプロセスは、この極端な場合に達する前に終了することになる。「ｔ」、「Ｔ」又は「ｓ」、「Ｓ」を認識した、大文字、小文字を区別しないＦＳＭを記述したこの上記の例では、「Ｓ」と「ｓ」、又は「Ｔ」と「ｔ」とを区別する必要はなく、それゆえ、それらの辺は分割する必要はなかった。
【００５３】
ここで図７Ａ〜図７Ｃを参照すると、２ビット以上を有する１組のサブワードＦＳＭを使用する利点が示される。図７Ａは、パターン「ｚ［ａｂ］＊」を認識するＦＳＭの場合の１ワード（８ビット）状態図を示す。このパターンは、「ｚ」に、０以上の「ａ」又は「ｂ」のいずれか一方が続くことによって満たされる。それゆえ、そのＦＳＭは、「ｚａ」、「ｚｚａ」、「ｚｂ」、「ｚｚｂ」、「ｚａｂ」、「ｚｚａｂｂ」等を認識することができる。図面を容易にするように、「ｚ」、「ａ」又は「ｂ」でない入力の場合に状態「０」に戻る辺は図面から省略されている。
【００５４】
「ｚ」、「ａ」及び「ｂ」に対するＡＳＣＩＩ値は以下の表において与えられる。
【００５５】
【表５】
2014232523.tif 000007
【００５６】
８つの単一ビットＦＳＭにおいてこのＦＳＭを実現することに伴う問題は、ＦＳＭが最下位ビットを取り扱う場合に最も容易に理解することができる。ＡＳＣＩＩにおいて「ｚ」の最下位ビットは０であり、一方、「ａ」の最下位ビットは１である。ＦＳＭは、０を受信したので、状態０から状態１に遷移したと仮定する。次に受信したビットが「ａ」でない場合には、ＦＳＭは状態０に戻ることになる。次のビットが「ａ」からのものである場合には、ＦＳＭは現在の状態のままであり、別の一致を報告する。その問題は、再び、次に受信された１が「ａ」に対応するか、その最下位ビットにおいて１を有する或る別の文字に対応するかをＦＳＭが判断できないことにある。例えば、「ｓ」も最下位ビットに１を有し、ＦＳＭは状態１ではなく状態０に遷移する必要がある。
【００５７】
ここで図７Ｂを参照すると、２ビットサブワードＦＳＭを用いて図７Ａに示されるＦＳＭを実現するように拡張された状態図が示される。２ビットＦＳＭは「ｚ」を「ａ」又は「ｂ」から区別できないが、「ａ」と「ｂ」とを区別することができる。それゆえ、トークン「ａ」、「ｂ」の最下位２ビットは十分に異なるので、「ａｂ」辺は更に分割される必要はない。しかしながら、図７Ａに示されるように、状態１になると、２ビットＦＳＭは別の「ｚ」と「ａ」又は「ｂ」とを区別できないので、新たな状態が必要とされる。
【００５８】
それゆえ、図７ＡのＦＳＭは、ＦＳＭが状態１にあり、かつ「ａ」又は「ｂ」が受信される場合には、次の状態になる新たな状態２を追加することによって拡張される。原理的には、「ｚ」の入力の場合の新たな状態を作成して、ここで分割された「ｚ」辺を受け入れることができる。しかしながら、「ｚ」の入力は状態１に戻る。それゆえ、新たな状態は不要である。新たな状態２は対象となる２つの取り得る入力を有し、残りの入力は「失敗」であり、状態０に戻るので、図示されない。第１の入力は「ａ」又は「ｂ」であり、それは一致状態であり、状態２に戻る。状態２にある間に「ｚ」が受信される場合には、一致が生じ、ＦＳＭは状態１に戻り、別の「ｚ」、「ａ」又は「ｂ」を探す。更なる新たな状態は不要であるので、拡張は状態２を追加して停止する。
【００５９】
一般的に、サブワードレベルにおいて解決することができない複数のトークンを有する辺を除去するように任意の１ワードＦＳＭを拡張するプロセスは同じようにして進む。所望のサブワードレベルにおいて解決することができない辺は、曖昧辺と呼ばれる。曖昧辺は、各辺がここで所望のサブワードレベルにおいて解決可能であるように、２つ以上の辺に分割される。すなわち、新たな辺は全て曖昧ではない。新たな辺を受信するのに、新たな状態が導入される。その後、照合される１ワードパターンを用いて、新たな状態ごとに取り得る各入力を調べる。入力が既知の状態に戻る場合には、その辺はその状態に向けられ、その辺に対する更なる措置は不要である。その入力によって、ＦＳＭがまだ知られていない状態に移動する場合には、その新たな状態が導入され、当該辺によって接続される。新たな状態ごとに、取り得る全ての入力が調べられ、対応する状態への辺が作成され、その状態は新たな状態か、又はあらかじめ知られている状態のいずれかである。全ての新たな状態への全ての入力が調べられ、新たな状態が不要であるとき、そのプロセスは終了する。
【００６０】
ここで図７Ｃを参照すると、図７ＢのＦＳＭから作成された４つの２ビットＦＳＭが示される。ＦＳＭ０の場合、「ｚ」が受信される場合には、初期遷移のみがトリガされる。「ｚ」の最下位２ビットは２進数において「１０」、１０進数において２である。それゆえ、２を受信すると、ＦＳＭ０は「０，１」を付された第２の状態に移動する。この第２の状態は、１ワードＦＳＭの失敗から、すなわち、「ｚ」ではないが、１０進数で２に等しい最下位２ビットを有する別の文字から生じる可能性がある。それゆえ、それは「０」を付されるか、又は「ｚ」からのものである可能性があり、それゆえ、「１」も付される。サブワードＦＳＭ１、ＦＳＭ２及びＦＳＭ３の他の部分は真の入力値を区別し、それゆえ、ＦＳＭ０は、これが１０進数で０、１又は３でないことを知れば十分である。図７Ｂを得るように、１ワードＦＳＭが拡張されていなかった場合には、サブワードＦＳＭ０は、「ｚ」、「ａ」、「ｂ」を区別するときに混同することになっていた。例えば、「ｚ」及び「ｂ」の両方は類似であるが、入力「ａ」は異なり、それゆえ、対立を引き起こす。結果として、例えば、「ａ」が「ｉ」と混同され（それは失敗になるはずである）、「ｂ」及び「ｚ」が「ｊ」と同じである（それも失敗になるはずである）。
【００６１】
ここで、図７ＢからＦＳＭ０が得られる方法が、図８Ａ〜図８Ｄを参照しながら更に詳細に論じられることになり、図８Ａ〜図８ＤはＦＳＭ０を構成する種々の段階を示す。図７Ｂを参照すると、そのプロセスは状態０において開始し、その状態から、１０進数で０〜３、２進数で「００」、「０１」、「１０」及び「１１」の入力ごとに全ての取り得る辺が調べられる。１０進数で入力０、１及び３の場合、ＦＳＭは状態０に戻り、１０進数で入力２の場合、ＦＳＭは、失敗時に状態０に、「ｚ」時に状態１に移行することができ、結果として生じる第１のステップは図８Ａに示される。ここで、「０，１」を付された新たな複合状態を有する。
【００６２】
次に、図７ＢにおけるワードワイズＦＳＭ内のこの新たな状態「０，１」からの全ての取り得る辺が調べられる。１０進数の入力０及び３の場合に、状態０及び状態１の両方から、ＦＳＭは状態０に戻る。これは失敗である。しかしながら、１の入力１の場合、１ワードＦＳＭは、失敗時に状態０に移行し、「ａ」時に状態２に移行する。それゆえ、新たな複合状態「０，２」が作成される。２の入力の場合、１ワードＦＳＭは「ａ」（失敗）２時に状態０に移行し、「ｚ」時に状態１に移行し、「ｂ」時に状態２に移行する。それゆえ、新たな複合状態「０，１，２」が作成される。これらの新たな状態が図８Ｂに示される。
【００６３】
ここで、１ワードＦＳＭが２つの新たな複合状態「０，２」及び「０，１，２」にあるときに種々の入力に対して取り得る遷移を調べることによって、これらの状態に対してそのプロセスが繰り返されなければならない。状態「０，１，２」の場合に、１０進数の入力０及び３は失敗であり、状態０に戻る。しかしながら、入力１の場合、ＦＳＭは、失敗時に状態０に移行し、「ａ」時に状態２に移行する。複合状態「０，２」は既に存在しているので、新たな状態は不要である。入力２の場合、１ワードＦＳＭは「ａ」（失敗）時に状態０に移行し、「ｚ」時に状態１に移行し、「ｂ」時に状態２に移行する。再び、複合状態「０，１，２」は既に定義されており、それゆえ、この拡張の結果は図８Ｃに示される。
【００６４】
最後に、複合状態「０，２」への種々の入力に対応する遷移が調べられなければならない。１０進数の入力０及び３は失敗であり、１ワードＦＳＭを状態０に戻す。しかしながら、入力１の場合、１ワードＦＳＭは、失敗時に状態０に移行し、「ａ」時に状態２に移行する。複合状態「０，２」は既に存在している。入力２の場合、１ワードＦＳＭは、「ａ」（失敗）時に状態０に移行し、「ｚ」時に状態１に移行し、「ｂ」時に状態２に移行する。この複合状態「０，１，２」は既に存在しており、それゆえ、図８Ｄのような状態図が残される。
【００６５】
ここで図７Ｄを参照すると、１ビットサブワードＦＳＭを用いて図７Ａに示されるＦＳＭを実施する場合の拡張された状態図が示される。１ビットＦＳＭは「ａ」又は「ｂ」又は「ｚ」を区別することができない。それゆえ、図７Ｄに示されるように、複数のトークンの全てが拡張されなければならない。
【００６６】
ここで図９及び図９Ｂを参照すると、図７ＤのワードＦＳＭから作成された８つの１ビットサブワードＦＳＭが示される。図７Ａ又は図７ＢのＦＳＭは、いずれも１ビットサブワードレベルにおいて「ａ」、「ｂ」、「ｚ」及び失敗を区別できないので、「ｚ［ａｂ］＊」の場合の１ビットサブワードＦＳＭを作成するのに用いることはできない。代わりに、入力を正確に区別することができるように複数トークンの辺の全てが単一トークンの辺に単純化された１ワードＦＳＭが必要とされる。そのようなＦＳＭが図７Ｄに示される。結果として生成される単一ビットＦＳＭが図９Ａ及び図９Ｂに示される。
【００６７】
上記の実施形態では、並列に作動する複数のサブワードＦＳＭを用いて、１ワードＦＳＭがエミュレートされた。これらの実施形態では、１ワードＦＳＭの各ビットはサブワードＦＳＭのうちの少なくとも１つにおいて処理された。しかしながら、サブワードＦＳＭの全てが必要であるとは限らない事例がある。すなわち、１ワードＦＳＭのうちの１つ又は複数が余分である。１ワードＦＳＭがＡＳＣＩＩストリングの中の文字の特定のシーケンスを探索し、大文字、小文字の区別が重要ではない事例について考える。例えば、ＦＳＭは、シーケンス「ｍａｄ」を探索することができ、シーケンス内の各文字は大文字又は小文字とすることができる。すなわち、シーケンスＭａｄ、ｍａｄ、ＭＡｄ等がターゲットシーケンスを満たす。このＦＳＭが７つの単一ビットＦＳＭで置き換えられる場合には、最上位から第５のビットは、小文字と大文字とを区別するだけであるので、このビットに関して動作するＦＳＭが余分である。
【００６８】
本発明の別の態様では、１組のサブワードＦＳＭ内の各ＦＳＭが、余分であるかを試験される。候補ＦＳＭが余分である場合には、その候補を１組のサブワードＦＳＭから除去することができ、それに応じて計算作業負荷及びメモリが削減される。１ワードＦＳＭへの全ての取り得る入力について考える。１ワードＦＳＭが、１ワードＦＳＭへの入力のうちの１つに対して、そのＦＳＭ内の状態Ｋにおいて一致を外部に報告すると仮定する。全てのサブワードＦＳＭが、各サブワードＦＳＭによって報告されるリストの共通部分が「Ｋ」である一致を外部に報告しなければならない。候補サブワードＦＳＭは以下の場合に余分である。
（１）残りのサブワードＦＳＭが一致を報告し、その一致リストの共通部分が状態Ｋである。
（２）候補サブワードＦＳＭも、Ｋを含むリストを用いて一致状態を外部に報告する。
（３）１ワードＦＳＭ内の任意の不一致状態の場合に、残りのサブワードＦＳＭのうちの少なくとも１つが不一致状態にあるか、又は残りのサブワードＦＳＭによって報告された一致状態リストの共通部分が空である。
【００６９】
候補ＦＳＭを試験する計算作業負荷は、１ワードＦＳＭからサブワードＦＳＭが生成される方法を変更することによって著しく削減することができる。上記の手順において、一致を報告するサブワードＦＳＭ内の各状態は、サブワードＦＳＭ内のその状態に対応することができる１ワードＦＳＭ内の報告状態のリストを有する。変更された手順では、サブワードＦＳＭ内の各状態に関連付けられるリストは、サブワードＦＳＭ内のその状態に対応することができる１ワードＦＳＭ内の全ての状態を含む。さらに、このリストには、報告状態だけでなく、１ワードＦＳＭ内の全ての状態が含まれる。最後に、サブワードＦＳＭ内の各状態は、サブワードＦＳＭ内のその状態が報告状態であるか否かにかかわらず、１ワードＦＳＭ内の取り得る状態の対応するリストを含む。
【００７０】
各サブワードＦＳＭが、各状態において、その状態に対応する１ワードＦＳＭ内の取り得る状態のリストを用いて報告すると仮定する。この報告は、サブワードＦＳＭが一致報告状態にあるか否かにかかわらず行われる。それゆえ、１ワードＦＳＭのいずれかの状態の場合に、各サブワードＦＳＭ内の全ての取り得るサブワードＦＳＭ状態が既知である。詳細には、候補ＦＳＭ以外のサブワードＦＳＭを「残りのサブワードＦＳＭ」によって表す。
【００７１】
１ワードＦＳＭ内の状態Ｑについて考える。Ｑは、サブワードＦＳＭのリストのうちの１つ又は複数において現れることになる。以下の検討を簡単にするように、候補ＦＳＭはサブワードＦＳＭ０であると仮定する。残りのサブワードＦＳＭは、ＦＳＭ１、ＦＳＭ２、．．．ＦＳＭＮを付されることになる。ＦＳＭ１について考える。各状態は、その状態に関連付けられる１ワードＦＳＭ状態のリストを有する。ベクトルＳ［ｓ１，．．．，ｓＮ］を定義する。ただし、ｓ１はワードＦＳＭ１の状態であり、ｓ２はＦＳＭ２の状態であり、それ以降も同様である。これらの状態はそれぞれ、１ワードＦＳＭ内の取り得るリストを与える対応するリストを有する。それらの状態のリストの全てが１ワードＦＳＭの状態Ｑを含む場合には、Ｓ［ｓ１，．．．，ｓＮ］＝Ｑと定義する。ベクトル［ｓ１，．．．，ｓＮ］は、以下の検討においてサブワード状態ベクトルと呼ばれる。
【００７２】
Ｑが報告状態である場合について考える。その際、残りのＦＳＭが一致を報告する少なくとも１つの状態ベクトルが存在する。Ｓ＝Ｑである全ての取り得る状態ベクトルについて考える。状態ベクトルごとに、各サブワードＦＳＭは、Ｑと、おそらく他の状態とを含むリストを外部に報告することになる。これらの状態の状態ごとにリストの共通部分を計算する。対象となる２つの場合があり、共通部分が報告状態Ｑのみを含むか、又は複数の報告状態が存在する。共通部分が複数の報告状態を含む場合には、曖昧さを解決するのにＦＳＭ０が必要とされるので、ＦＳＭ０は余分ではない。報告状態が一意的にＱである場合には、Ｑに対応する曖昧さを解決するのにＦＳＭ０は不要であるので、ＦＳＭ０はおそらく余分である。
【００７３】
ＦＳＭ０はおそらく余分である場合には、１ワードＦＳＭ内でＱが報告状態であるＱの値ごとに上記の試験が繰り返されなければならない。それらの結果が同じである、すなわち、ＦＳＮ０がおそらく余分であると仮定する。その際、残りのサブワードＦＳＭは１ワードＦＳＭ内の各報告状態を一意的に識別することができる。
【００７４】
それゆえ、この場合には、一致を識別するのにＦＳＮ０は不要である。しかしながら、ＦＳＭ０は、誤検出を克服するのに必要とすることができる。Ｑが１ワードＦＳＭ内の報告状態でなく、複数の状態の共通部分が偶然に報告状態Ｋを含む、Ｑに対応する状態ベクトルが存在する場合について考える。これは稀にしか起こらないことであると予想されるが、起こり得る。この場合、誤検出を除去するのにＦＳＭ０が必要とされ、それゆえ、ＦＳＭ０は余分ではない。
【００７５】
本発明の上記の実施形態は、本発明の種々の態様を例示するように提供されてきた。しかしながら、種々の具体的な実施形態において示される本発明の種々の態様を組み合わせて、本発明の他の実施形態を提供できることは理解されたい。さらに、本発明に対する種々の変更形態は、これまでの説明及び添付の図面から明らかになるであろう。したがって、本発明は、添付の特許請求の範囲によってのみ制限されるべきである。
【図１】
2014232523.tif 000008
【図２】
2014232523.tif 000009
【図３】
2014232523.tif 000010
【図４】
2014232523.tif 000011
【図５Ａ】
2014232523.tif 000012
【図５Ｂ】
2014232523.tif 000013
【図５Ｃ】
2014232523.tif 000014
【図６Ａ】
2014232523.tif 000015
【図６Ｂ】
2014232523.tif 000016
【図６Ｃ】
2014232523.tif 000017
【図６Ｄ】
2014232523.tif 000018
【図７Ａ】
2014232523.tif 000019
【図７Ｂ】
2014232523.tif 000020
【図７Ｃ】
2014232523.tif 000021
【図７Ｄ】
2014232523.tif 000022
【図８Ａ】
2014232523.tif 000023
【図８Ｂ】
2014232523.tif 000024
【図８Ｃ】
2014232523.tif 000025
【図８Ｄ】
2014232523.tif 000026
【図９Ａ】
2014232523.tif 000027
【図９Ｂ】
2014232523.tif 000028