330 likes | 804 Views
정규언어와 정규문법. 정규언어에 대한 정규표현. 일반전이 그래프 Generalized transition graph 간선의 라벨에 정규 표현을 부여하는 전이 그래프 라벨은 여러 정규표현들의 접합 <= 그 자체도 정규 표현이 된다 . a -> a a, b -> a + b. Figure 3.8. a. c*. a + b. L(a* + a*(a + b)c*). Figure 3.9. e. d. c. qj. qi. q. b. a. ce*b. ae*d. ce*d. qj. qi. ae*b.
E N D
정규언어에 대한 정규표현 • 일반전이 그래프Generalized transition graph • 간선의 라벨에 정규 표현을 부여하는 전이 그래프 • 라벨은 여러 정규표현들의 접합 <= 그 자체도 정규 표현이 된다. • a -> a • a, b -> a + b
Figure 3.8 a c* a + b L(a* + a*(a + b)c*)
Figure 3.9 e d c qj qi q b a ce*b ae*d ce*d qj qi ae*b
Figure 3.11 b b a,b a q2 b q0 q1 a a + b b+ab*a q2 q0 ab*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 a1 a2 . . . am Vi Vj Represents Vi ->a1a2 … am Vj a1 a2 . . . am Vi Vf Represents Vi -> a1a2 … am
Example 3.15 • 다음 문법에 의해 생성되는 언어를 인식하는 유한 오토마타를 구성해 보자. V0 -> aV1 V1 -> abV0| b L((aab)*ab)
Vf Figure 3.16 L((aab)*ab) a b V1 V0 a b V1
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.15 Construct a right-linear grammar for L(aab*a). q0 => aq1 => aaq2 => aabq2 => aabaqf => aaba (q0, a) = {q1} q0 -> aq1 (q1,a) = {q2} q1 -> aq2 q2 -> bq2 (q2,b) = {q2} (q2,a) = {qf} q2 -> aqf qf F qf ->
Example 2-1 • G = (N, T, P, A) P : A -> aA A -> aB B -> bB A -> a A -> b B -> b
Example 2-2 b a a B A b a,b Qf
C Example 3-1 0 1 1 A 1 0 1 1 B
Example 3-2 N = {A, B, C} S = A M의 전이 G의 규칙 1 A -> A A -> C, CF B -> A B -> B B -> C, C F C -> C, C F C -> B A -> 1A A -> 1, A -> 1C B -> 0A B -> 1B B -> 1. B -> 1C C -> 0, C -> 0C C -> 1B 1 0 1 1 0 1
r Example 4-1 q 0 0 1 1 0,1 p
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 exists some nondeterministic finite accepter that 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 Theorem 3.2 Theorem 3.1 dfa or nfa Theorem 3.3 Theorem 3.4 Regular grammars