정규언어와 정규문법
-
Upload
charde-lynn -
Category
Documents
-
view
155 -
download
5
description
Transcript of 정규언어와 정규문법
정규언어와 정규문법
정규언어에 대한 정규표현
• 일반전이 그래프 Generalized transition graph
– 간선의 라벨에 정규 표현을 부여하는 전이 그래프
– 라벨은 여러 정규표현들의 접합 <= 그 자체도 정규 표현이 된다 .
– a -> a
– a, b -> a + b
Figure 3.8
a + b
ac*
L(a* + a*(a + b)c*)
Figure 3.9
qi q qj
d c
a b
e
qi qj
ae*d ce*b
ce*d
ae*b
Figure 3.11
q0 q1 q2
a
a
b b
b
a,b
q0 q2
b+ab*a
ab*b
a + b
Relation of RG, RE, Automata
Regular Expression
Finite Automata Regular Grammars
Grammars(1/2)
• A boy runs– <sentence> -> <noun_phrase><predicate>– <noun_phrase> -> <article><noun>– <predicate> -> <verb>
• Pascal identifier– <id> -> <letter><rest>– <rest> -> <letter><rest> | <digit><rest> | – <letter> -> a|b|…| <digit> -> 0|1|…9
Grammars(2/2)
• A grammar G is defined as a quadruple
G = (V, T, S, P)
– V is a finite set of objects called variables
– T is a finite set of objects called terminal symbols,
– S is a special symbol called the start variable
– P is a finite set of productions
Example 1.10
• G = ( {S}, {a, b}, S, P)
• P : S -> aSb S -> • S => aSb => aaSbb => aabb
• L(G) = {anbn : n 0}
Example 1.11
• L = {anbn+1 : n > 0}
• G = ({S, A}, {a, b}, S, P)
– S -> Ab,
– A -> aAb,
– A ->
정규문법
Definition 3.3
문법 G = (V, T, S, P) 에서 모든 생성규칙들이 다음의 형태를 갖는 경우 이를 우선형 right-linear문법이라 한다 .
A -> xB, A -> x, 여기서 A, B V 이고 x T* 이다 . 문법의 생성규칙들이 모두 다음의 형태를 갖는
경우 이 문법을 좌선형 left-linear 문법이라 한다 . A -> Bx, A -> x. 정규문법은 우선형 문법이거나 좌선형 문법이다 .
Example 3.12
• 우선형 문법 Right-linear
문법 G1 = ({S}, {a,b}, S, P1) 에서 생성규칙 P1 이 다음과 같이 주어졌다면
S -> abS | a
r = (ab)*a
Example 3.12
• 좌선형 문법 Left-linear
문법 G2 =({S, S1, S2}, {a,b}, S,P2) 에서 생성규칙 P2 가 다음과 같이 주어졌다면
S -> S1ab,
S1 -> S1ab | S2,
S2 -> a
r = (a(ab)*)
Example 3.13
• 문법 G = ({S,A,B}, {a,b}, S, P) 가 다음과 같은 생성규칙들을 갖는 경우 이는 정규 문법이 아니다 .
S -> A, A -> aB|, B -> Ab• 선형문법 linear grammar 은 각 생성규칙의
우변에 하나 이하의 변수만 있을 수 있으며 , 이 변수의 위치에는 제한이 없는 문법을 말한다 .
• 정규문법 선형문법
Theorem 3.3
• G = (V,T,S,P) 가 우선형 문법 right-linear grammar 이면 L(G) 는 정규 언어이다 .
• 증명 – V={V1,V2,…} – S=V0– 생성규칙 : V0->v1Vi, Vi->v2Vj,…
Figure 3.15
Vi a2a1 . . . amVj
Represents Vi ->a1a2 … am Vj
Vi a2a1 . . . amVf
Represents Vi -> a1a2 … am
Example 3.15
• 다음 문법에 의해 생성되는 언어를 인식하는 유한 오토마타를 구성해 보자 .
V0 -> aV1
V1 -> abV0| b
L((aab)*ab)
Figure 3.16
V0 V1 Vfa b
ab
V1
L((aab)*ab)
Example 1
• S -> aS | aA
• A -> bA| b
• L = {anbm | n, m 1}
Theorem 3.4
• L 이 알파벳 에 대한 정규 언어일 때 , L = L(G) 를 만족하는 우선형 문법 G=(v, , S, P) 가 항상 존재한다 .
Example 3.15Construct a right-linear grammar for L(aab*a).
(q0, a) = {q1} q0 -> aq1
(q1,a) = {q2} q1 -> aq2
(q2,b) = {q2} q2 -> bq2
(q2,a) = {qf} q2 -> aqf
qf F qf ->
q0 => aq1 => aaq2 => aabq2 => aabaqf => aaba
Example 2-1
• G = (N, T, P, A)
P : A -> aA
A -> aB
B -> bB
A -> a
A -> b
B -> b
Example 2-2
A Ba
ba,b
Qf
a b
Example 3-1
A
B
1
0
1 0
C
1
1
1
Example 3-2
N = {A, B, C}S = A
A -> AA -> C, CFB -> AB -> BB -> C, C FC -> C, C FC -> B
A -> 1AA -> 1, A -> 1CB -> 0AB -> 1BB -> 1. B -> 1CC -> 0, C -> 0CC -> 1B
M 의 전이 G 의 규칙11
011
01
Example 4-1
p
q
r
0 0
0,11 1
Example 4-2
• G = ({ p,q,r}, {0,1}, P, p)
P : p -> 0q
p -> 1p
q -> 0r
q -> 1p
r -> 0r
r -> 1r
r ->
Theorem 3.5
• A language L is regular if and only if there exists a left-linear grammar G such that L = L(G).
Theorem 3.6
• A language L is regular if and only if there exists a regular grammar G such that L = L(G).
Theorem 3.1
• Let r be a regular expression. Then there exi
sts some nondeterministic finite accepter th
at accepts L(r)
• Consequently, L(r) is a regular language.
Theorem 3.2
• Let L be a regular language. Then there exists a regular expression r such that L = L(r)
Figure 3.15
Regular expressions
dfa or nfa
Regular grammars
Theorem 3.1 Theorem 3.2
Theorem 3.3 Theorem 3.4