1 - 鳥取大学

Download Report

Transcript 1 - 鳥取大学

形式言語 と オートマト
第9回
鳥取大学工学研究科
情報エレクトロニクス専攻
田中美栄子
本日の予定1
形式言語とオートマト
文法例1(文脈自由文法)
文法(grammar)
非終端記号(nonterminal)
終端記号(terminal)
生成規則(production rule)
初期記号(initial symbol)
G  N, , P, S0 
N  {S}
  {a, b, c}
P  {S  aSb, S  ab, S  c}
S0  S
この文法が生成する言語は?
形式言語とオートマト
文法例1(文脈自由文法)
文法(grammar)
非終端記号(nonterminal)
終端記号(terminal)
生成規則(production rule)
初期記号(initial symbol)
G  N, , P, S0 
N  {S}
  {a, b, c}
P  {S  aSa, S  bSb, S  c}
S0  S
=導出=
S ⇒ aSa ⇒ abSba ⇒ abaSaba ⇒ abacaba
L  {wcw | w {a, b} }
R
形式言語とオートマト
*
文法例2(文脈自由文法)
言語
L  {a b | 1
≦ m ≦ n ≦ 2m}
m n
を生成する文脈自由文法を構成しなさい
形式言語とオートマト
文法例2(文脈自由文法)
言語
L  {a b | 1
≦ m ≦ n ≦ 2m}
m n
を生成する文脈自由文法を構成しなさい
形式言語とオートマト
文法例2(文脈自由文法)
言語
L  {a b | 1
≦ m ≦ n ≦ 2m}
m n
を生成する文脈自由文法を構成しなさい
=解答=
G =< {S}, { a, b}, P,S}
P = {S → aSb , S → aSbb , S → ab, S → abb}
形式言語とオートマト
文法例2(文脈自由文法)
言語
L  {a b | 1
≦ m ≦ n ≦ 2m}
m n
を生成する文脈自由文法を構成しなさい
G =< {S}, { a, b}, P,S}
P = {S → aSb , S → aSbb , S → ab, S → abb}
=導出例=
S ⇒ aSb ⇒ aaSbbb ⇒ aaabbbb
形式言語とオートマト
形式言語とオートマト
文法例3(文脈自由文法)
言語
L  {a b a | i, j, k ≧1, i  j  k}
i
j
k
を生成する文脈自由文法を構成しなさい.
形式言語とオートマト
文法例3(文脈自由文法)
言語
L  {a b a | i, j, k ≧1, i  j  k}
i
j
k
を生成する文脈自由文法を構成しなさい.
=解答=
G =< {S, A, B},{a, b}, P, S >
P = {S → aAa, A → bBa , B → ba , A → ba}
形式言語とオートマト
文法例3(文脈自由文法)
言語
L  {a b a | i, j, k ≧1, i  j  k}
i
j
k
を生成する文脈自由文法を構成しなさい.
P  {S → aAa, A → aAa, A → B,
B → bBa, B → ba}
=導出例=
S ⇒ aAa ⇒ abBaa ⇒ abbaaa
形式言語とオートマト
形式言語とオートマト
本日の予定2
形式言語とオートマト
文脈自由文法
プロダクションルールPの要素がすべて
1変数 → w
ここでwは
・変数
・定数
・変数と定数の組み合わせ
のいずれかである場合、文脈自由文法と呼ぶ
生成される言語は文脈自由言語
形式言語とオートマト
例1: 先に並んだ変数の数と等しい
数の文字が後に並ぶ文字列の生成
S 0  aS1 の形の規則(正規文法)では不可能
G=<N,Σ,P,S>
N  {S}
S0  S
  {a , b}
P  {S  aSb, S  ab}
S  aSb  aaSbb  aaabbb
L1  {a n bn }
形式言語とオートマト
例2: 対応する括弧の列を生成
S 0  aS1 の形の規則(正規文法)では不可能
G=<N,Σ,P,S>
N  {S}
  {a , b}
S0  S
P  {S  aSb, S  ab, S  SS}
S  aSb  aSSb  aabSb
 aabaSbb  aabaabbb
L2  {aの数=bの数 , aの後から bが出る }
形式言語とオートマト
例3: 2変数の数が等しい文字列生
成
S 0  aS1 の形の規則(正規文法)では不可能
G=<N,Σ,P,S>
N  {S, A, B}
  {a , b}
S0  S
P  {S  aB, S  bA, A  bAA, A  a ,
B  aBB, B  bS, A  aS, B  b}
S  aB aaBB aaaBBaBB aaabbabb
L3  {aと bから作られる文字列, aの数=bの数}
形式言語とオートマト
文脈自由文法は木構造で書ける
• A→aBb, A→a, B →c
A
B
a
形式言語とオートマト
c
b
2文木(binary tree)にする
• Chomsky 標準形
• A→BC の形、または
• A→a の形 にする
• (必要に応じて変数を増やす)
形式言語とオートマト
例1 L  {a b }
n n
• 下記の生成規則をChomsky標準形にする
P  {S  aSb, S  ab}
P  {S  AB, A  a , B  b,
S  AC, C  SB}
形式言語とオートマト
Chomsky標準形なら2分木になる
P={S→aSb,
S→ab}
P  {S  AB, A  a , B  b,
S  AC, C  SB}
S
S
A
C
B
S
S
A B
a a
b
b
形式言語とオートマト
a
a
b
b
小テストです。
形式言語とオートマト