POSIX規格では正規表現の照合をおこなう際に,その部分式も含めて最左最長の照合をおこなうように定めている.一方,現在一般に用いられている正規表現照合エンジンは,ごく一部を除き,バックトラックに基づく方式を用いている.このため最左最長照合の効率の良い実行が極めて困難であるという問題がある.さらにバックトラックに基づく方式には,入力によっては照合の計算量が指数的に爆発し手に負えなくなるという問題もある.そこで,バックトラックを用いる代わりに有限オートマトンを用いて部分式を含めた最左最長照合を実現する新たな手法を提案するのが本研究である. 本研究の方法は,正規表現の処理で通常用いられることの多いThompsonの非決定性オートマトン(以下,Thompson NFA)ではなくGlushkov(1961)とMcNaughton/山田 尚勇(1960)らによって独立に提案されたポジション・オートマトンを独自に改良したものを用いるというものである.元来のポジション・オートマトンでは正規表現の部分式に関する情報が失われてしまうため,ポジション・オートマトンの遷移に部分式の情報をアノテーションとして付加することで,部分式を含めた最左最長照合を実現するアルゴリズムを得ることができた. 本研究の主要な成果は以下の通りである.(1)バックトラックに依存せずに部分式を含めた最左最長照合をおこなうアルゴリズム与え,その計算量を明らかにした(特に入力文字列長に関しては線形オーダ).(2)同アルゴリズムの正当性の厳密な証明を与えた.(3)本研究の方式が貪欲(greedy)照合にも転用可能であることを示し,さらに決定性オートマトン(DFA)への変換によって更なる効率化が可能であることを明らかにした.(4)提案手法に基づく照合エンジンの試験実装をおこない効率化が可能であることを実験的にも検証した.
|