もとになる記号の集合(アルファベット)と,生成規則(文法)から,生成することの出来る文字列(言葉)の集合を形式言語(formal language)と呼ぶ。
プログラミング言語などをモデル化したもの。
〜人工言語⇔自然言語
文法(Grammer) | 言語(Language) | 受理するオートマトン(Automaton) |
正規文法 (Regular Grammer) | 正規言語(3型) | 有限オートマトン (Finite Automaton) |
文脈自由文法 (Context Free Grammer) | 文脈自由言語(2型) | プッシュダウンオートマトン (Push Down Automaton) |
文脈依存文法 (Context Sensitive Grammer) | 文脈依存言語(1型) | 線形有界オートマトン (Linear Bounded Automaton) |
無制約文法(句構造文法) | 句構造言語(0型) | チューリングマシン (Turing Machine) |
- 文法の制限の強さ:正規文法>文脈自由文法>文脈依存文法>無制約文法
- 3型言語⊂2型言語⊂1型言語⊂0型言語
- 有限オートマトン=有限順序機械
- チューリングマシン:コンピュータのモデル
形式言語に関してはこちら
オートマトンAの入力記号で作られる入力系列w を、その初期状態から加えたとき、
Aが最終状態になるならば、オートマトンAは入力系列w を受理する(accept)という。
そうでないときには、Aはw を受理しない・拒否する(reject)という。
系列の集合Lが与えられたとき、オートマトンAがその集合に属する系列を全て受理し、それ以外のものを受理しないとき、Aは集合Lを受理するという。
オートマトン(Automaton) | オートマトンの構造 |
有限オートマトン (Finite Automaton) | FA |
|
プッシュダウンオートマトン (Push Down Automaton) | FA+スタック |
|
線形有界オートマトン (Linear Bounded Automaton) | FA+入力と同じ長さのテープ |
|
チューリングマシン (Turing Machine) | FA+テープ |
|
M=(Q、Σ、δ、q0、F)
- Q:状態(state)の有限集合
- q0:開始状態(start state)、初期状態(initial state) ←Qの一つの要素
(矢印で表す)
- F:最終状態(final state)、受理状態(accepting state) ←Qの部分集合
(二重丸で表す、複数個あっても良い)
- Σ:入力記号(input symbols)の有限集合
- δ:状態遷移関数(transition function)
- q(∈Q)からp(∈Q)にラベルa(∈Σ)のついた矢印があるときδ(q, a)=p ⇒決定的(deterministic)
- δ(q, a)=P ←Qの部分集合 ⇒非決定的(nondeterministic)
- 受理
- DFAが入力記号列 w を読みながら定義された遷移状態に従い開始状態から受理状態に到達できるとき、その入力列 w を受理するという。
- NFAが入力記号列 w を読みながら許された遷移状態に従い開始状態から受理状態の一つに到達できるとき、その入力列 w を受理するという。(二股三股を掛けておいて、何れかがOKならOKということ!)
正規表現(regular expression)として知られる言語。
- 空集合
- 文字 ・・・ A
- 連接(concatenation) ・・・ AB
- 選択(selection) ・・・ A|B
- 閉包(closure) ・・・ A* 0回以上の繰り返し
によって表される言語。
正規表現からDFAへ
NFAからDFAへ
定理:LをNFAで受理される集合とする。このとき、Lを受理するDFAが存在する。
- NFAがある入力を読んだとき到達可能な状態の集合をDFAの1個の状態と見なすことによってDFAでNFAを模倣する。
ε動作を含むNFAからε動作を含まないNFAへ
定理:Lがε動作を含むNFAで受理されるならば、Lはε動作を含まないNFAでも受理することができる。
- 状態 q からε動作のみで移れる先の状態の集合をε-Closure(q) と書く。
- ε-Closure(q0) が最終状態を含むとき、q0をε動作を含まないNFAの最終状態に加える。
- 状態 q から a とεで状態 p に到達できるとき、ε動作を含まないNFAの状態 q から p に a で遷移する。
正規表現からε動作を含むNFAへ
定理:与えられた正規表現 r に対して、L(r) を受理するε動作を含むNFAが存在する。
- 最終状態が1個でかつ最終状態かを起点とする辺の無いNFAが作れることを、
r の中の演算の個数に関する帰納法で示す。
- 演算の個数が0個の場合のNFAは次の3種
- 選択(和):r1|r2 (r1+ r2と書くこともある)
r1を受理するNFA M1と r2を受理するNFA M2を使って、
- 連接:r1r2
r1を受理するNFA M1と r2を受理するNFA M2を使って、
- 閉包:r*
r を受理するNFA M1を使って、
DFAから正規表現へ
定理:LがDFAで受理されるならば、Lは正規表現で表される。
(これも帰納法で証明することができる。)
戻る