言語理論とコンパイラ

第三回: 有限オートマトンと線形文法

2012 年 4 月 27 日

http://www.sw.it.aoyama.ac.jp/2012/Compiler/lecture3.html

Martin J. Dürst

AGU

© 2005-12 Martin J. Dürst 青山学院大学

今日の予定

前回の宿題

[都合により削除]

Cygwin のダウンロード、インストール

(提出なしだが、出来なかった人はノートパソコン持参)
自分のノートパソコンに cygwin をインストール (画像つき詳細)する。インストールの手順で必ず gcc, flex, bisonmake を選ぶ。

flexbisongcc の動作確認

前回のまとめ

文法 Type 言語 オートマトン
句構造文法 0 句構造言語 チューリング機械
文脈依存文法 1 文脈依存言語 線形拘束オートマトン
文脈自由文法 2 文脈自由言語 プッシュダウンオートマトン
正規文法 3 正規言語 有限オートマトン

正規言語は字句解析に使用

今回の展望

これらは全て同じ力を持って、正規言語を定義・受理する

有限オートマトン

(automaton (αὐτόματον) はギリシア語で、複数は automata)

有限オートマトンの状態遷移図

(state transition diagram)

有限オートマトンの状態遷移図

状態は丸、遷移はラベル付き矢印、外からの矢印は初期状態を示し、二重丸は受理状態

有限オートマトンの状態遷移表

(state transition table)

a b
→A B A
B C A
*C C A

表の横は状態、縦は入力の記号、→は初期状態 (矢印がない場合、最初の状態が初期状態)、星は受理状態

有限オートマトンの定義

有限オートマトンは (Q, Σ, δ, q0, F) の五字組で定義

決定性と非決定性有限オートマトン

決定性 (DFA) 非決定性 (NFA)
同時に 一つの状態 複数の状態 (状態の集合)
受理条件 現在の状態が受理状態 現在の状態の一つ以上が受理状態
ε 遷移 不可 可能
動作関数の型 δ: Q × ΣQ δ: Q × (Σ ∪ {ε}) → P(Q)

ε 遷移の扱い方

有限オートマトンの例

NFA から同等の DFA への変換

NFA から同等の DFA への変換の一例

動作関数
ε 0 1
S {A} {} {}
A {} {A,C} {B}
B {} {} {A}
C {} {} {}

 

DFA の最小化

ある DFA から同等の最小の DFA は次の通りに作れる:

  1. 状態を受理状態と非受理状態の二つの集合に分割
  2. それそれの状態からどの記号でどの集合に遷移するかを調査
  3. 現在の集合を、どの記号でも同じ集合に遷移する状態の部分集合に分割
  4. 3. で変更がない時まで 2. から繰り返す

最小化で:

DFA の最小化の一例

線形文法

(linear grammar)

文法の簡単な書換規則
規則の形 名称
AaB 右線形規則 (非終端記号が右)
ABa 左線形規則 (非終端記号が左)
Aa (又は Aε) 定数規則

左線形文法 (left linear grammar): 左線形規則と定数規則しか含まない文法

右線形文法 (right linear grammar): 右線形規則と定数規則しか含まない文法

左線形文法と右線形文法はともに正規文法と言う

(一般の線形文法は文脈自由文法の一種)

 

(右) 線形文法と有限オートマトン

右線形文法と NFA の対応 (ε が考慮外):

左線形文法も同様 (語を右から読み込むと考えられる)

右線形文法と有限オートマトンの一例

有限オートマトンの状態遷移図

A → aB | bA

B → bA | a | aC

C → bA | a | aC

 

今回まとめ

課題: NFA・DFA は遷移表、遷移図、文法で表現可能が、もっとコンパクトな表現は?

宿題

提出期限と場所: 2012 年 5 月 10 日 (木) 19:00 まで O 棟 5 階の O-529 号室の前の箱に投入

形式: A4 一枚 (裏も使ってよい)

  1. 次の右線形文法に相当する NFA の遷移図を作りなさい
    S → εA | bB | cB | cC, A → bC | aD | a | cS, B → aD | aC | bB | a, C →εA | aD | a
  2. 1. の NFA と同等の DFA を作りなさい
  3. 2. の DFA を最小化しなさい
  4. flex, bison, gcc, make の動作確認 (提出なしだが、出来なかった場合、必ず次回にノートパソコンを持参すること)