Upload
others
View
2
Download
0
Embed Size (px)
Citation preview
형식언어와 오토마타4
1
주요 내용• 형식 언어와 문법
• 정규식과 정규 집합
• 유한 상태 기계
• 오토마타와 언어(정규문법)
정의: 유한 상태 오토마타
유한 상태 오토마타 M=(S, I, f, s0, F)
S: 유한한 상태 집합I: 유한의 입력 알파벳의 집합f: 상태 추이 함수, s0:초기 상태(starting states) F: 최종 상태(acceptance states)의 집합
아래와 같은 유한 상태 오토마타 M에서
문자열 W=x1x2x3…xn ∈ I*
fw: 유한 상태 오토마타에 “x1x2x3…xn”을 입력했을 때갖는 상태
1
0,1
00
s0 s1 s21
W=01011fw(S0)=S1 : 문자열 W는 M이 인식하지 못한다.
W’=010110fw’(S0)=S2 : 문자열 W는 M이 인식한다.
I* 에 속하는 문자열 W 이 연속적으로 입력될 때시작 상태 S0 에서 최종상 F로 이동하면, 문자열 W 는 기계 M=(S, I ,f, s0, F) 이 인식 또는 승인한다고말한다.
기계 M 에 의해서 인식 (또는 승인) 되는 문자열의 집합을M 에 의해서 인식되는 언어 L(M) 라고 한다.
유한 상태 오토마타 M과 언어 L(M)
예1:다음의 유한 상태 오토마타 M1에 의해 인식되는 언어 L(M1)을구하라.
s0Start
1
s1
0, 1
0
M1
s0Start
1
s1
0, 1
0s0Start
1
s1
0, 10, 1
0
M1
M1 의 최종 상태는 S0 가 유일하다. 따라서 L(M1) 을 구하기 위해서는 S0 에서 S0 로 가는 문자열을구하면 된다. 그것은 하나 이상의 1로 구성되는 문자열이다.
즉 L(M1) = {1n | n =0, 1, ...}
예2:유한 상태 오토마타 M2에 의해 인식되는 언어 L(M2)을구하라.
M1 의 최종 상태는 S2 가 유일하다. S0 에서 S2 로 가는 문자열은 1과 01이다.
즉 L(M2) = {1, 01}
s0
s1
s2
0, 10
0, 1
1
1
0
Start s3
M2
s0
s1
s2
0, 10, 10
0, 1
1
1
0
Start s3
M2
예3:유한 상태 오토마타 M3에 의해 인식되는 언어 L(M3)을 구하라.
M3 에서 최종 상태는 S0 와 S3 이다. 먼저 S0 에서 S0 로 가는문자열은 {0n | n =0, 1, ... }이다. S0 에서 S3 로 가는 문자열은0개 이상의 0이 나온 후 10이 나오고 그 다음에는 0또는 1이임의의 개수만큼 나오는 것이다. L(M3) = {0n, 0n10X | n =0, 1, ..., and X는 0과 1로 된 임의의 문자열}
0, 1
s0
s1
s2
0, 1
1
1
0
Start s3
M3
0 0, 10, 1
s0
s1
s2
0, 1
1
1
0
Start s3
M3
00
L(M)과 L(G)유한상태 오토마타 M 에 의해서 인식(또는 승인)되는언어 L(M) 은M 에 의해서 인식되는 모든 문자열의 집합이다.
언어 L(M) 은 이에 대응하는 정규 문법(regular grammar)을 만들 수 있다.
따라서 M에 대응하는 정규 문법(regular grammar)을 G라고 하면 정규 문법 G에 의해서 생성되는 언어와M에서 인식되는 문자열의 집합은 동일하다.
L(M) ≡ L(G)
유형 0 문법
유형 1 문법
유형 2 문법(문맥 자유 문법)
유형 3 문법(정규 문법)
유형 0 문법
유형 1 문법
유형 2 문법(문맥 자유 문법)
유형 3 문법(정규 문법)
M에서 G 만들기
유한상태 오토마타 M이 주어졌을 때 이에 대응하는정규 문법 G를 만드는 방법은 다음과 같다.
M=(S, I, f, s0, F) G=(V, T, S, P)
S N(비단말 기호)I T(단말 기호)V = N ∪ TP: 생성 규칙
Si, Sj ∈ S, x ∈ I일 때만약 fw(Si) = Sj 이면, Si ⇒ wSj만약 fw(Si) ∈ F이면, Si ⇒ w
예1: M: finite state automataI={a,b}, S={S0, S1, S2}
a
b
a
a, b
s0 s1 s2b
fa(S0)=S0,fb(S0)=S1,fa(S1)=S1
fb(S1)=S2
fa(S2)=S2
fb(S2)=S2
S0 ⇒aS0
S0 ⇒bS1
S1 ⇒aS1
S1 ⇒bS2
S2 ⇒aS2
S2 ⇒bS2
S1 ⇒bS2 ⇒aS2 ⇒b
상태 전이 함수
생성 규칙G: regular grammarT={a,b}, N={S0, S1, S2}
L(M) L(G)
예1의 L(M)과 L(G)를 regular expression으로 표현하면,
a*ba*b(a+b)*
예2: M: finite state automataI={0,1}, S={S0, S1}
01 0
s0 s1
f0(S0)=S0,f1(S0)=S1,f0(S1)=S1
f1(S1)=S0
S0 ⇒0S0
S0 ⇒1S1
S1 ⇒0S1
S1 ⇒1S0
S0 ⇒1S1 ⇒0
상태 전이 함수
생성 규칙G: regular grammarT={0,1}, N={S0, S1}
L(M) L(G)
1
예2의 L(M)과 L(G)를 regular expression으로 표현하면,
0은 영향을 주지않는다.1은 홀수번 나와야 한다.따라서
0*10*(10*10*)*
주어진 문제를 해결하는유한상태 오토마타 만들기
a Task 유한상태 오토마타
일반 언어로 기술혹은
정규식으로 기술혹은
BNF로 기술
예1: 0과 1로 이루어진 입력 스트링 001을 인식하는유한상태 오토마타를 설계하라.
즉, I={0,1}, L(M)={001}
S0 S1 S2
S4
1 1 1 0,1
0 0 1
0,1
S3
예2: 0과 1로 이루어진 입력 스트링으로 스트링 안에01 혹은 10을 포함하는 스트링을 인식하는 유한상태 오토마타를 설계하라.
S0
S2S1
S4S3
0
1
1
0
00,1
1 0,1
예3: x과 y로 이루어진 입력 스트링으로 yy로 끝나는스트링을 인식하는 유한 상태 오토마타를 설계하라.
S0 S3S1y y
x y
x
x
유한상태 오토마타의 최적화
이와 같이 특정 과제를 수행하는 유한상태 오토마타를설계할 수 있다.
하지만 이와 같이 설계된 유한상태 오토마타는 최적의기계는 아니다. 즉, 더 적은 상태의 수를갖는 유한상태 오토마타를 설계할 수 있다.
따라서 다음 단계에서 필요한 것은 최적화된유한상태 오토마타의 설계이다.
결정 오토마타(DFA)I = {0,1}L(M): 1에서 시작해서 1로 끝나는 문자열
S0 S1
S3
S2
1 1
0
0 1
0
0,1
0 1s0 s3 s1
s1 s1 s2
s2 s1 s2
s3 s3 s3
input상태
f
비결정 오토마타(NFA)I = {0,1}L(M): 1에서 시작해서 1로 끝나는 문자열
S0 S1 S2
1 1
0,1
0 1s0 φ {s1}s1 s1 {s1,s2}s2 φ φ
input상태
f
0은 무시한다.(상태 전이가 없기때문에)
0과 1은 무시한다.(상태 전이가 없기때문에)
결정 오토마타(DFA)와 비결정 오토마타(NFA)
결정 오토마타(Deterministic Finite state Automata)- 입력값에 대해서 전이되는 상태가 정확하게 결정된다.
비결정 오토마타(nondeterministic Finite state Automata)- 입력값에 대해서 상태 전이가 다수 존재할 수 있다.- 입력값에 대해서 상태 전이가 발생하지 않을 수 있다.
(이 경우 입력값은 무시된다.)
NFA는 DFA로 변환될 수 있다.(즉, NFA ≡ DFA)
I={a,b}L={ambn| m,n>0}
DFA로 설계하면,
S0
S2
S2
ba
b
a,b
a
NFA로 설계하면,
S0 S1
ba
ba b
s0 {s0} {s1}s1 φ {s1}
input상태
f
L(G)와 L(M)과 정규식
G: 정규 문법 L(G)는 정규식으로 표현할 수 있다.
M: 유한상태 오토마타 L(M)은 정규식으로 표현할 수 있다.
결론
G={V, I, S0, P}: 정규 문법
M={S, I, f, S0, F}: 유한 상태 오토마타
L(G): 정규 집합
L(M): 정규 집합