ポンピング補題
有限オートマトンによって認識不可能な言語を非正規言語と呼ぶ.ここでは,ある言語が非正規言語となることを示すのによく用いられるポンピング補題について紹介する.
が正規言語であるならば,ある数 が存在して, の長さが 以上の任意の文字列 に対して,次を満たす の分割 が存在する.
1. 任意の について
2.
3.
ただし, は文字列 の長さで, は を 個連結した文字列を表す( は空文字列).
また, をポンピング長(pumping length)と呼ぶ.
証明.
正規言語 を認識する有限オートマトンを として,ポンピング長 を の状態数とする.任意の文字列 を考える. が を処理するときに通過する状態の列を とする. なので,鳩の巣原理より には重複する状態が少なくとも1つ存在する.そのような状態で最初に現れるものを , 二番目に現れるものを とする.このとき,下の図のように とすると条件1, 2, 3 を満たす分割となる.条件1はループを何回繰返しても状態 に戻るので受理状態となる( のときは は空文字列となり となる).条件2と条件3は の選び方から成り立つ.□
ポンピング補題を用いた非正規言語の証明方法
言語 が非正規言語であることを示す一般的なステップは次の3つである.
Step 1. 背理法: は正規言語であると仮定して矛盾を導く
Step 2. は正規言語と仮定したのでポンピング補題が成り立つようなポンピング長 が存在する
Step 3. の文字列 から条件1を満たさない文字列を見つける
( が正規言語であることに矛盾)
まとめ
好きだけどよく忘れるのでメモメモ.
読み返すとよく分からなかったので修正(2019年6月13日).