Regular Expressions for Regular Languages

Download Report

Transcript Regular Expressions for Regular Languages

정규언어와 정규문법
• NFA에 대한 정규 표현 찾는 방법
NFA의 모든 보행에 대한 라벨 생성
어렵다
전이그래프에 사이클 존재 -> 몇번 반복할
지 모름
기록 문제로 해결
2/44
정규언어에 대한 정규표현
• 일반전이 그래프Generalized transition graph
– 간선의 라벨에 정규 표현을 부여하는 전이 그래프
– 라벨은 여러 정규표현들의 접합 <= 그 자체도 정규
표현이 된다.
– a -> a
– a, b -> a + b
3/44
예제 3.8
L(a* + a*(a + b)c*)
a
c*
a+b
4/44
그림 3.9
e
d
qi
c
qj
q
b
a
ce*b
ae*d
ce*d
qj
qi
ae*b
5/44
그림 3.11
b
b
a,b
a
q0
q1
b
q2
a
a+b
b+ab*a
q0
q2
ab*b
6/44
그림 3.12
a
EE
OE
a
b
b
b
b
a
OO
EO
a
7/44
그림 3.12
aa
bb
ba
a
EE
OO
EE
OE
ab
a
b
b
b
b
b
a
a
b
a
OO
EO
EO
a
8/44
그림 3.12
aa
bb
ba
OO
EE
aa+ab(bb)*ba
ab
b
a(bb)*a
b+a(bb*)ba
a
a
b
EO
EE
b+ab(bb*)a
EO
9/44
연습문제
• 다음 오토마타에 의해 인식되는 언어에
대한 정규 표현을 구하시오
b
b
O
E
a
EO
a
b
10/44
정규언어 묘사방법
• NFA
• DFA
• 정규표현
• 간단한 문법을 이용 => 정규문법
11/44
Relation of RG, RE, Automata
Regular Expression
Finite Automata
Regular Grammars
12/44
정규문법
우선형 문법과 좌선형 문법
문법
• 문법 G 는 다음의 항으로 정의된다
G = (V, T, S, P)
– V 는 변수라 불리는 유한 집합의 객체 variables
– T 는 단말심볼이라 불리는 유한 집합의 객체
terminal symbols
– S 는 시작변수라 불리는 V의 특별한 원소 start
variable
– P 는 생성규칙들의 유한 집합 productions
15/44
정의 3.3
문법 G = (V, T, S, P)에서 모든 생성규칙들이 다음
의 형태를 갖는 경우 이를 우선형 right-linear문법
이라 한다.
A -> xB, A -> x,
여기서 A, B V 이고 x  T*이다.
문법의 생성규칙들이 모두 다음의 형태를 갖는 경
우 이 문법을 좌선형 left-linear 문법이라 한다.
A -> Bx, A -> x.
정규문법은 우선형 문법이거나 좌선형 문법이다.
16/44
예제 3.12
• 우선형 문법Right-linear
문법 G1 = ({S}, {a,b}, S, P1)에서 생성규
칙 P1이 다음과 같이 주어졌다면
S -> abS | a
r = (ab)*a
17/44
예제 3.12
• 좌선형 문법Left-linear
문법 G2 =({S, S1, S2}, {a,b}, S,P2) 에서 생성
규칙 P2가 다음과 같이 주어졌다면
S -> S1ab,
S1 -> S1ab | S2,
S2 -> a
r = (a(ab)*)
18/44
예제 3.13
• 문법 G = ({S,A,B}, {a,b}, S, P)가 다음과 같은
생성규칙들을 갖는 경우 이는 정규 문법이 아
니다.
S -> A,
A -> aB|,
B -> Ab
• 선형문법 linear grammar은 각 생성규칙의 우
변에 하나 이하의 변수만 있을 수 있으며, 이 변
수의 위치에는 제한이 없는 문법을 말한다.
• 정규문법
선형문법
19/44
우선형 문법에 대한 정규언어
우선형 문법 => 정규언어
정규언어 => nfa
정리 3.3
• G = (V,T,S,P) 가 우선형 문법 right-linear
grammar 이면 L(G)는 정규 언어이다.
• 증명
– V={V1,V2,…}
– S=V0
– 생성규칙 : V0->v1Vi, Vi->v2Vj,…
21/44
정리 3.3
• 문자열 w가 L(G)에 속한다면 문법 G의
생성규칙들의 형태로 볼때 그 유도과정
은 다음과 같을 것이다
V0 => v1Vi
=> v1v2Vj
=> v1v2…vkVn
=> v1v2…vkvl = w
22/44
그림 3.15
Vi
a1
a2
...
am
Vj
Represents Vi ->a1a2 … am Vj => *(Vi,a1a2…am) = Vj
Vi
a1
a2
...
am
Represents Vi -> a1a2 … am => *(Vi,a1a2…am) = Vf
23/44
Vf
예제 3.14
• 다음 문법에 의해 생성되는 언어를 인식
하는 유한 오토마타를 구성해 보자.
V0 -> aV1
V1 -> abV0| b
L((aab)*ab)
24/44
그림 3.16
L((aab)*ab)
a
V1
V0
b
b
Vf
a
25/44
연습문제 1
• 다음 문법에 의해 생성되는 언어를 인식
하는 유한 오토마타를 구성해 보자.
• S -> aS | aA
• A -> bA| b
• L = {anbm | n, m  1}
26/44
정규언어에 대한 우선형 문법
정규언어 => dfa
dfa => 우선형 문법
정리 3.4
• L 이 알파벳 에 대한 정규 언어일 때, L
= L(G)를 만족하는 우선형 문법 G=(v, ,
S, P)가 항상 존재한다.
28/44
정리 3.4
• 증명
언어 L을 인식하는 dfa를 M=(Q, , , q0,
F)라하고, Q={q0, q1, …, qn} 이고  =
{a1,a2,…,am}이라 가정
– dfa M으로부터 V={q0, q1, …, qn}
– S=q0
29/44
정리 3.4
– M에 존재하는 각 전이에 대해
(qi,aj)=qk
문법 G의 P에 다음과 같은 생성규칙 추가
qi -> ajqk
qk  F인 경우에는 P에 다음 생성규칙 추가
qk -> 
• w  L(G)를 보임
30/44
오토마타 M이 dfa가 아니어도
가능함
예제 3.15
언어 L(aab*a)에대한 우선형 문법 생성
q0 => aq1 => aaq2 => aabq2 => aabaqf => aaba
(q0, a) = {q1}
q0 -> aq1
(q1,a) = {q2}
q1 -> aq2
(q2,b) = {q2}
q2 -> bq2
(q2,a) = {qf}
q2 -> aqf
qf  F
qf -> 
32/44
연습문제 2-1
• G = (N, T, P, A)
P : A -> aA
A -> aB
B -> bB
A -> a
A -> b
B -> b
33/44
연습문제 2-2
b
a
a
A
B
b
a,b
Qf
34/44
연습문제 3-1
0
1
1
A
C
1
0
1
1
B
35/44
연습문제 3-2
N = {A, B, C}
S=A
M의 전이
1 A
A ->
1 C, CF
A ->
0 A
B ->
B 1-> B
1 C, C  F
B ->
0
C -> C, C  F
1 B
C ->
G의 규칙
A -> 1A
A -> 1, A -> 1C
B -> 0A
B -> 1B
B -> 1. B -> 1C
C -> 0, C -> 0C
C -> 1B
36/44
연습문제 4-1
q
0
0
1
1
0,1
p
r
37/44
연습문제 4-2
• G = ({ p,q,r}, {0,1}, P, p)
P : p -> 0q
p -> 1p
q -> 0r
q -> 1p
r -> 0r
r -> 1r
r -> 
38/44
정리 3.5
• 언어 L이 정규언어이고 그럴때만 L =
L(G)인 좌선형 문법 G가 존재한다.
• 증명
– 좌선형 문법 G의 생성규칙을 통하여 우선형
문법 G’을 생성
–A->vRB
– A->Bv
A->v
A->vR
– L(G)=(L(G’))R
39/44
정리 3.6
• 언어 L이 정규언어이고 그럴때에만 L =
L(G)를 만족하는 정규문법 G가 존재한다.
40/44
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.
41/44
Theorem 3.2
• Let L be a regular language. Then there
exists a regular expression r such that L =
L(r)
42/44
그림 3.15
Regular expressions
Theorem 3.2
Theorem 3.1
dfa or nfa
Theorem 3.3
Theorem 3.4
Regular grammars
43/44
연습문제
• 좌선형 문법을 nfa로부터 직접 얻는 방법
을 제시하라
44/44