Upload
stacie
View
224
Download
4
Embed Size (px)
DESCRIPTION
오토마타 및 형식언어 김 현 성. Tel : 850-7288 Office : 2 공학관 408 호 E-mail : [email protected]. 사람의 언어. 1 더하기 2 는 뭐야 ?. 뭐라고 ?. 컴퓨터의 언어. 1+2=?. 100 001 010. 프로그래밍 언어. 3. 011. Three Basic Concepts(1/2). Languages Grammars Automata. Automata(1/2). Abstract model of a digital computer. - PowerPoint PPT Presentation
Citation preview
오토마타 및 형식언어김 현 성
Tel : 850-7288Office : 2 공학관 408 호E-mail : [email protected]
사람의 언어1 더하기 2 는 뭐야 ?
뭐라고 ?
컴퓨터의 언어
프로그래밍 언어1+2=? 100 001 010
0113
Three Basic Concepts(1/2)
• Languages
• Grammars
• Automata
Automata(1/2)
• Abstract model of a digital computer
Control unit
Input file
Output
Storage
Automata(2/2)
q0 q2q1
0
0
1
1
1
0
Three Basic Concepts(2/2)
Languages
Grammars Automata
Grammar, Languages, Recognizer
Grammar Language Recognizer
Type 0 recursively enumerable sets Turing machineType 1 context-sensitive language Linear bounded
automata Type 2 context-free language Pushdown
automata Type 3 regular language Finite automata
Chomsky’s Language Hierarchy
Unrestricted Languages
Context-sensitive Languages
Context-free Languages
Regular Languages
Applied Area
• Compiler
– Finite Automata
– lexical analysis (parser)
• Digital Design
– binary adder
계산이론개요
목적• 컴퓨터 공학 분야에는 몇 가지 공통적인 기본 원리가 존재• 기본 원리를 이해하기 위해서는 추상적 모델을 설정해야 한다• 추상적 모델 => 하드웨어 및 소프트웨어에서 공통적으로 나타나는 특징들을 표현하기 위한 모델
목적• 추상적 모델 => 오토마타• 오토마타는 입력 , 출력 , 기억장소로 구성• 형식언어는 프로그래밍언어들의 일반적인 특성들을 추상화한 개념• 형식언어는 심볼들과 심볼들의 조합인 문장을 구성하는 형식규칙들의 집합• 형식언어는 이 형성규칙들에 의해 생성되는 모든 문자열들의 집합
한국어우리는 경일대인이다 .
경일대인은 나다 .
목적• 개념탐구 방법
– 직관적인 방법– 수학적인 방법
• 집합론• 함수• 관계• 트리• 그래프
함수 (1/2) 함수란 한 집합의 원소들 각각에 대해 다른 집합의 유일한 원소로 배정하는 규칙
S1 S2
F : S1 S2domain range
함수 (2/2)
• 함수의 표현– {(x1,y1),(x2,y2),…}
– xi : 해당함수의 정의역의 원소– yi : 해당함수의 치역의 대응값
– 각 xi 가 이 집합 내에서 순서쌍의 첫 번째 위치에 최대 한번만 나타나야 한다 .
X Y
domain range
오토마타
q0 q2q1
0
0
1
1
1
0
그래프 (1/2)
• 그래프는 두개의 유한집합으로 구성된 구조
– 정점들의 집합 the set of vertices
– 간선들의 집합 the set of edges
– 간선들의 순서열 a sequence of edges - 보행 walk
– 어느 간선도 중복하여 지나지 않는 보행 a walk in which no edge is
repeated - 경로 path
– vi 로 부터 vi 로 경로 no repeated edge - 사이클 cycle
그래프 (2/2)
v1 v2 v3
트리 (1/2)
• 그래프의 한 종류이다 .• 사이클을 갖지 않고 , 루트라 불리는 특별한
하나의 정점을 가지는 유향 그래프 – 루트 root : one distinct vertex– 리프들 leaves– 부모 parent– 자식 child– 레벨 level– 높이 height
트리 (2/2)Root
Leaf
Level 0
Level 3
Height = 3
증명기법 (2/2)
• Proof by induction– 몇 개의 특정 사례가 참이라는 사실들로부터 여러
문장들이 참임을 추론해 내는 기법
– 예 ) 참임을 증명하고자 하는 문장들의 순서열 P1,P2,… 이 있다고 하고 다음이 성립함을 가정
• 임의의 k(k>=1) 에 대해 P1,P2,…,Pk 는 참이다 .
• n>=k 인 모든 n 에 대해서 P1,P2,…,Pn 이 참인 사실이 Pn+1 이 참임을 의미하도록 하는 문제
귀납기저
귀납단계귀납가정
Example 1.5 : 높이가 n 인 이진트리의 리프 노드의 총 개수는
최대 2n 임l(n) 2n
Basis l(0) = 1 = 20
Inductive Assumption: l(i)2i
For i = 0, 1, …, n
Inductive Step : l(n+1) = 2l(n)
l(n+1) 2 * 2n = 2n+1
언어 , 문법 , 오토마타
세가지 기초 개념• 언어 Languages
• 문법 Grammars
• 오토마타 Automata
언어 (1/3)
• 알파벳 {a, b, c, d}– 하나 이상의 심볼들의 유한 집합
• 문자열 {ab, aabb, ccdd}– 알파벳에 속한 심볼들의 유한 길이의
순서열
언어 (2/3)
• w = a1a2…an v = b1b2…bn
– 접합 concatenation : wv = a1a2…anb1b2…bn
– 전도 reverse : wr = an…a2a1
– 길이 length : |w| = n– 빈문자열 empty string : | | = 0, w = w = w– 부문자열 substring : w = vu v = 접두부 prefix, u =
접미부 suffix– |uv| = |u| + |v|
언어 (3/3)
• 스타폐포 star-closure
– L* = L0 U L1 U L2 …
• 양성폐포 positive-closure
– L+ = L1 U L2 ...
문법 (1/3)
• 영어 문법 “ 문장은 명사절 (noun phrase) 과 술부
(predicate) 로 구성”
문법 (2/3)
• 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
문법 (3/3)
• 문법 G 는 다음의 항으로 정의된다 G = (V, T, S, P)
– V 는 변수라 불리는 유한 집합의 객체 variables
– T 는 단말심볼이라 불리는 유한 집합의 객체 terminal symbols
– S 는 시작변수라 불리는 V 의 특별한 원소 start variable
– P 는 생성규칙들의 유한 집합 productions
문법• 문법의 핵심은 생성규칙들 x -> y
– x 는 (V U T)+ 의 원소– y 는 (V U T)* 의 원소
Automata
Control unit
Input file
Output
Storage
Automata
• 결정적 오토마타 Deterministic automata
• 비결정적 오토마타 Nondeterministic automata
• 인식기 Accepter
• 변환기 Transducer
응용 (1/2)
• Pascal 의 식별자 => 언어– 영문자로 시작– 뒤이어 임의의 개수의 영문자나 숫자의 문자열의 집합
• 식별자를 위한 문법<id> -> <letter><rest><rest> -> <letter><rest>|<digit><rest>|<letter> -> a|b|…|z<digit> -> 0|1|…|9
응용 (2/2)
• 식별자 a0 를 유도하는 과정<id> => <letter><rest>
=> a <rest> => a <digit><rest> => a 0 <rest> => a 0
유한 오토마타Finite Automata
Automata
Control unit
Input file
Output
Storage
Automata
• 결정적오토마타 Deterministic automata
• 비결정적오토마타 Nondeterministic automata
• 인식기 Accepter
• 변환기 Transducer
결정적 유한 인식기연산 과정이 결정적으로 진행되는 유한 인식기
결정적유한인식기Definition2.1
• M = (Q, , , q0, F)– Q : 내부상태들의 유한집합 : 문자들의 유한집합이며 , 입력 알파벳이라불림 : Q Q 전체 함수이며 , 전이 함수라 불림
– q0Q : 초기 상태
– F Q : 종료 상태의 집합
결정적 유한 인식기 동작방식• 오토마타의 초기 상태 : q0
• 입력 방법 : aabbaa
• 오토마타의 종료 : 입력의 맨 끝에 도달한 경우
• 승인여부 확인 : 오토마타의 종료 시점에 오토마타의 상태 체크
• 상태전이 : 전이 함수 에 따라 결정
전이그래프• 유한 오토마타를 가시적으로 표현하기 위한 그래프
– 정점 : 오토마타의 상태– 간선 : 오토마타에서 상태의 전이– 정점의 라벨 : 상태의 이름– 간선의 라벨 : 입력 심볼의 현재 값– 종료상태 : 이중원으로 표시
q0
1
qf
전이그래프(q0,a) = q1
q0
a
q1
초기상태표시
그림 2.1
q0 q2q1
0
0
1
1
1
0
확장 전이함수 *: Q * Q : 함수의 두 번째 인수가 단일
심볼이 아닌 문자열임
– 함수가 (q0,a) = q1 이고 (q1,b) = q2 이면
*(q0,ab) = q2
*(q, ) = q,
*(q, wa) = (*(q,w),a)
언어와 Dfa
• 정의 2.2
– 인식 (Acceptance)
• Dfa M = (Q, , , q0, F) 에 의해서 인식되는 언어란 M 에 대한 모든
문자열들의 집합
• L(M) = {w*: *(q0, w) F}
– 비인식 (Nonacceptance)
• Dfa 가 비종료 상태에서 종료
• L(M) = { w * : *(q0, w) F}
오토마타의 가시화 => 그래프그래프 : 전이함수 의 형식적인 논증 사용 <= 정당함을 확신할 수 있는 방법이 필요함
정리 2.1
• M = (Q, , , q0, F) : 결정적 유한 인식기
• GM : 전이 그래프
• 모든 qi, qjQ 와 w + 에 대해 , *(q0, w) = qj 이고 오직 그럴때에만 그래프 G
M 에는 라벨 w 를 갖는 qi 부터 qj 까지의 보행이 존재한다 .
증명• 가정 : 길이가 n 이하인 모든 문자열 v 에 대해서 참이다 .• 귀납단계 : 길이가 n+1 인 문자열 w 를 고려하자 , w 는 다음과
같이 표현될 수 있다 .– w=va
*(qi, v)= qk 라고 가정해 보자 . 그러면 |v| =n 이므로 GM 에는 라벨 v 를 갖는 qi 부터 qk 까지의 보행이 존재하여야 한다 . 이때 *(qi, w)= qj 라면 오토마타 M 은 전이 (qk, a)= qj 를 가져야 하며 , 따라서 GM 은 라벨 a 를 갖는 간선 (qk, qj) 를 갖게 된다 . 결국 , GM
에는 qi 와 qj 사이에 라벨 va=w 를 갖는 보행이 존재한다 . 이 결과는 n=1 일때 명확히 성립하므로 , 귀납법에 따라 모든 w + 에 대해 *(qi, w)= qj 라는 사실이 GM 에 라벨 w 를 갖는 qi 부터 qj
까지의 보행이 존재한다는 것을 의미한다 .
언어군• 유한오토마타
– 특정 언어를 인식– 언어군 : 모든 가능한 유한 오토마타의 언어집합
=> 정규 언어
정규언어정의 2.3
• 언어 L 에 대하여 L = L(M) 을 만족하는
결정적 유한 인식기 M 이 존재하고
오직 그럴때만 L 을 정규언어라 부른다 .
예제 2.5
• 언어 L = {awa: w {a, b}* } 이 정규언어임을
보여라 .
=> 언어에 대한 dfa 를 찾는다 .
Figure 2.6
q0 q2 q3a b
q1
b
a , b
a
b a
Example
사람늑대
양양배추
M
W
G
C
사람늑대
양양배추
Diagram
MWGC- WC-MG MWC-G
C-MWG W-MGC
MGC-W MWG-C
G-MWCMG-WC-MWGC
g mg m
ww c
c
g g g g
cc w
wm
m
g
g
사람늑대
양양배추
M
W
G
C
Simulation for DFA
S := q0;c := nextchar;while c eof do s := move(s,c) c := nextchar end;if s is in F then return ‘Yes’else return ‘No’
비결정적 유한오토마타Nondeterministic Finite
Automata
비결정성?
컴퓨터 => 결정성
비결정적 인식기• 각 상황에서 유일한 이동만을 규정하기
보다는 가능한 여러 가지 이동들의 집합을 허용하는 것 .
• 오토마타의 전이 함수가 상태들의 집합을 치역으로 갖게 함으로써 가능해진다 .
비결정적 인식기
S1 S2
F : S1 S2domain range
aaa
정의 2.4
• 비결정적 유한 인식기 또는 NFA 는 다음과 같이 5 원소 쌍으로 정의 된다 .
M = (Q, , , q0, F),
여기서 Q, , , q0, F 는 결정적 유한 인식기에서와 같이 정의되나 , 함수
: Q ( {}) 2Q
DFA 와 NFA 의 차이점• 치역
– NFA 에서 의 치역이 멱집합 2Q 내에 있고 , 그 값이 Q 의 단일 원소가 아닌 Q 의 부분집합
• NFA 에서 전이함수의 인수로 허용 – 입력 심볼을 읽지 않고도 전이가 가능함
• NFA 에서는 집합 (qi, a) 가 공집합을 허용– 특정 상황에 대하여 정의된 전이가 없을 수 있음
그림 2.8
q0
q3a
q4
aq1 a
q5
q2
a
a
a
NFA 의 함수 input
state 0 1
q0
q1
q2
q3
q4
{q0, q3} {q0, q1}
{q2}
{q2} {q2}
{q4}
{q4} {q4}
그림 2.9
q0 q1 q2
0
1 0,1
정의 2.5
• 확장전이 함수– 전이그래프에서 qi 로부터 qj 로의 보행이
존재* (qi, w) 가 qj 를 포함
– 모든 qi, qj Q 와 w * 에 대해서도 성립
*(q1, a), *(q2, )
*(q1, a) = {q0, q1, q2} *(q2, ) = {q0, q2} *(q2, aa), *(q0, a)
q1q0 q2a
Definition 2.6
• nfa M = (Q, , , q0, F) 에 의해서 인식되는 언어 L 은 승인되는 문자열들의 집합으로 다음과 같이 정의된다 .
L(M) = {w *: *(q0, w) F }.
즉 , 이 언어는 전이 그래프의 초기 정점에서 종료 정점까지 라벨이 w 인 보행이 존재하는 모든 문자열 w 들로 구성된다 .
Why Nondeterminism?
• 게임 프로그램– 한 시점에서 여러가지 가능한 해들이 존재– 최적의 해를 찾는 방법
• 모든 가능한 해들을 수행해보고 그 결과 중 최적을 찾음• Backtracking 등의 기법을 이용
• Nondeterminism 은 이러한 문제를 쉽게 풀수 있도록 도와줄 수 있다 .
• Nondeterminism 은 복잡한 언어를 간결하게 기술하기에 매우 적합한 방법이다 .
결정적 유한 인식기와 비결정적 유한 인식기의 동치성
동치• 정의 2.7
L(M1)=L(M2)
즉 , 두 오토마타가 같은 언어를 인식하는 경우 두 개의 유한 인식기 M1 과 M2 는 동치라 한다 .
q1 q20
1
0,1q0
q1 q20
01
1q0
0,1
{(10)n : n >= 0}
인식• DFA 는 NFA 의 한 제한된 종류이다 .
– DFA 에 의해 인식되는 언어는 어떤 NFA 에 의해서도 인식될 수 있다 .
– DFA NFA인식???
– DFA NFA
– NFA 가 문자열 w 를 읽은후 그 NFA 가 정확히 어느 상태에 있는지 알수 없다 그러나 NFA 가 놓여질 수 있는 가능한 상태들의 집합은 Non-terminal 임을 알 수 있다 .
– 동치인 DFA 는 같은 문자열을 읽어들인 후 명확히 한 상태에 놓이게 된다 .
인식존재
예제 2.12
• 다음 NFA 와 동치인 DFA 를 구성
=> DFA 의 각 상태의 라벨이 NFA 의 상태들의 집합이 되도록 각 상태에 라벨을 부여
q0 q2
b
a q1
a
q0 q2
b
a q1
a
DFA 의 전이 ({q0},a)={q1,q2} ({q0},b)= ({q1,q2},a)={q1,q2} ({q1,q2},b)={q0}
정리 2.2
• 언어 L 이 비결정적 유한 인식기MN = (QN, , N, q0, FN)
에 의해 인식되는 언어라고 하면 , 다음을 만족하는 결정적 유한 인식기 MD = (QD, , D, q0, FD)
가 항상 존재한다 . L=L(MD)
1. 정점 {q0} 를 갖는 그래프 GD 를 생성 .
이 정점을 초기 정점으로 한다 .2. 모든 간선이 생성될 때까지 반복
의 어떤 원소 a 에 대해서 진출 간선을 갖지 않는 GD 의 정점 {qi,qj,…,qk} 를 선택
*(qi,a), *(qj,a),…, *(qk,a) 들을 계산
– 계산된 * 들의 합집합을 구하여 이를 {ql,qm,…,q
n} 라 함
– GD 에 라벨이 {ql,qm,…,qn} 인 정점이 존재 않는다면 이를 추가함
– GD 에 정점 {qi,qj,…,qk} 로부터 정점 {ql,qm,…,qn}으로 향하는 간선을 추가하고 이에 라벨 a 를 부여
3. GD 의 상태들 중 라벨이 qf FN 을 포함하는 모든 상태들을 종료 상태로 지정
4. 인식기 MN 이 를 인식하는 경우 , GD
의 정점 {q0} 를 종료 정점으로 지정
예제 2.13
q0 q2
0
0,1q1
1
0,1
q0 q2
0
0,1q1
1
0,1
1. {q0} 추가2. *({q0},0) 를 구함 => {q0,q1}
1. {q0,q1} 추가2. {q0} 에서 {q0,q1} 로 향하는 라벨 0 을 갖는 간선 추가
*({q0},1) 를 구함 => {q1}1. {q1} 추가2. {q0} 에서 {q1} 로 향하는 라벨 1 을 갖는 간선 추가
1. *({q0},0)U*({q1},0) 를 구함 =>{q0,q1,q2}1. {q0,q1,q2} 추가2. {q0,q1} 에서 {q0,q1,q2} 로 향하는 라벨 0 을 갖는 간선 추가
5. *({q0},1)U*({q1},1) 를 구함 =>{q1,q2}5. {q1,q2} 추가6. {q0,q1} 에서 {q1,q2} 로 향하는 라벨 1 을 갖는 간선 추가
6. *({q0},0)U*({q1},0)U*({q2},0) 를 구함=>{q0,q1,q2}
• {q0,q1,q2} 존재 • {q0,q1,q2} 에서 {q0,q1,q2} 로 향하는 라벨 0 을 갖는 간선 추가
*({q0},1)U*({q1},1)U*({q2},1) 를 구함 =>{q1,q2}• {q1,q2} 존재 • {q0,q1,q2} 에서 {q1,q2} 로 향하는 라벨 1 을 갖는 간선 추가
q0 q2
0
0,1q1
1
0,1
8. *({q1},0) 를 구함 =>{q2}• {q2} 추가• {q1} 에서 {q2} 로 향하는 라벨 0 을 갖는 간선 추가
9. *({q1},1) 를 구함 =>{q2}• {q2} 존재• {q1} 에서 {q2} 로 향하는 라벨 1 을 갖는 간선 추가
10. *({q1},0)U*({q2},0) 를 구함 =>{q2}• {q2} 존재 • {q1,q2} 에서 {q2} 로 향하는 라벨 0 을 갖는 간선 추가
q0 q2
0
0,1q1
1
0,1
11. *({q1},1)U*({q2},1) 를 구함 =>{q2}• {q2} 존재 • {q1,q2} 에서 {q2} 로 향하는 라벨 1 을 갖는 간선 추가
12. *({q2},0) 를 구함 =>{}• {} 추가• {q2} 에서 {} 로 향하는 라벨 0 을 갖는 간선 추가
13. *({q2},1) 를 구함 =>{q2}• {q2} 존재• {q2} 에서 {q2} 로 향하는 라벨 1 을 갖는 간선 추가
q0 q2
0
0,1q1
1
0,1
• q1 을 포함한 모든 상태들을 종료 상태로 지정• 정점 {q0} 를 종료 정점으로 지정할지 판단
q0 q2
0
0,1q1
1
0,1
그림 2.16{q0}
{q2}0,1
{q0,q1}
1
0,1
{q1}
{q0,q1,q2} {q1,q2}
0,1
1
1
1
0
0
0
0
정규언어와 정규문법Regular Languages and
Regular Grammars
정규언어• 임의의 언어 -> 정규 언어
– 이를 인식하는 유한 인식기의 존재여부• DFA 나 NFA 가 존재해야 함
• 정규언어를 표현하는 보다 정교한 방법이 필요함 => 정규표현
Relation of RG, RE, Automata
Regular Expression
Finite Automata Regular Grammars
정규표현• 정규언어를 기술하는 한가지 방법이 정규표현
regular expressions 이다 .• 표기
– 알파벳 의 문자열 , ( )
– 연산자 +, . , * 의 결합• 예 ) 언어 {a} => 정규표현 a 언어 {a, b, c} => 정규표현 a+b+c
정규표현• + : 합집합 UNION
• . : 접합 CONCATENATION
• * : 스타폐포 STAR-CLOSURE
• (a + b . c) *
• {a} {bc}
• {, a, bc, aa, abc, bca, bcbc, aaa, aabc, …}
정의 3.1
를 주어진 알파벳이라고 하면 정규표현은 1. , , and a 는 모두 regular expressions 이다 . 이
들을 기본 정규표현 primitive regular expressions 이라 한다 .2. r1 과 r2 가 정규표현이면 , r1+r2, r1. r2, r1*, 과 (r1) 는 모두
정규표현이 된다 .
3. 특정 문자열이 정규표현이 되기 위해서는 기본 정규 표현에서 시작하여 위 규칙 (2) 를 유한횟수만큼 반복함으로써 그 문자열이 유도될 수 있어야 한다 .
정의 3.2
• 정규표현 r 에 의해 묘사되는 언어 L(r) 은 다음 규칙들에 의해 정의된다 .
1. 은 공집합을 나타내는 정규 표현이다 .2. 는 {} 를 나타내는 정규 표현이다 . 3. 모든 a 에 대해 a 는 {a} 를 나타내는 정규
표현이다 .
정의 3.2
• 만약 r1 과 r2 가 정규 표현일 경우 4. L( r1+ r2) = L(r1) L(r2),
5. L(r1 . r2) = L(r1)L(r2),
6. L((r1)) = L(r1),
7. L(r1*) = (L(r1))*.
정규표현과 정규언어의 관계• 정리 3.1
r 을 정규 표현이라 하자 . 언어 L(r) 을
인식하는 nfa 가 존재하며 , 결과적으로 L
(r) 은 정규언어이다 .
그림 3.1
q0 q1
q0 q1
. nfa accepts
. nfa accepts {}
q0 q1a
. nfa accepts {a}
그림 3.2. L(r) 을 인식하는 nfa 의 도식적인 표현
M(r)
그림 3.3
M(r1)
M(r2)
Automaton for L(r1 + r2).
그림 3.4
M(r2)M(r1)
. Automaton for L(r1r2).
그림 3.5
M(r)
Automaton for L(r1*).
그림 3.6
M1
b b
a M2
b
a
. M1 accepts L(a+bb) . M2 accepts L(ba* + )
Find an nfa which accepts L(r), where r = (a + bb)*(ba* + ).
그림 3.7
Automaton accepts L((a + bb)*(ba* + ))
M1
b b
a
M2
b
a
정규언어와 정규문법
• NFA 에 대한 정규 표현 찾는 방법NFA 의 모든 보행에 대한 라벨 생성
어렵다전이그래프에 사이클 존재 -> 몇번 반복할
지 모름기록 문제로 해결
정규언어에 대한 정규표현• 일반전이 그래프 Generalized transition graph
– 간선의 라벨에 정규 표현을 부여하는 전이 그래프– 라벨은 여러 정규표현들의 접합 <= 그 자체도 정규
표현이 된다 .
– a -> a
– a, b -> a + b
예제 3.8
a + b
ac*
L(a* + a*(a + b)c*)
그림 3.9
qi q qjd c
a b
e
qi qj
ae*d ce*b
ce*d
ae*b
그림 3.12
EE
EO
a
aOE
OO
a
a
b b b b
그림 3.12
EE
EO
ba
ab
OO
a a
EE
EO
a
aOE
OO
a
a
b b b b
aa bb
bb
그림 3.12
EE
EO
ba
ab
OO
a a
aa bb
bb EE EO
b+a(bb*)ba
aa+ab(bb)*ba a(bb)*a
b+ab(bb*)a
정규언어 묘사방법• NFA• DFA• 정규표현
• 간단한 문법을 이용 => 정규문법
Relation of RG, RE, Automata
Regular Expression
Finite Automata Regular Grammars
정규문법
우선형 문법과 좌선형 문법
문법• 문법 G 는 다음의 항으로 정의된다 G = (V, T, S, P)
– V 는 변수라 불리는 유한 집합의 객체 variables
– T 는 단말심볼이라 불리는 유한 집합의 객체 terminal symbols
– S 는 시작변수라 불리는 V 의 특별한 원소 start variable
– P 는 생성규칙들의 유한 집합 productions
정의 3.3
문법 G = (V, T, S, P) 에서 모든 생성규칙들이 다음의 형태를 갖는 경우 이를 우선형 right-linear문법이라 한다 .
A -> xB, A -> x, 여기서 A, B V 이고 x T* 이다 . 문법의 생성규칙들이 모두 다음의 형태를 갖는
경우 이 문법을 좌선형 left-linear 문법이라 한다 . A -> Bx, A -> x. 정규문법은 우선형 문법이거나 좌선형 문법이다 .
예제 3.12
• 우선형 문법 Right-linear 문법 G1 = ({S}, {a,b}, S, P1) 에서
생성규칙 P1 이 다음과 같이 주어졌다면 S -> abS | a
r = (ab)*a
예제 3.12
• 좌선형 문법 Left-linear 문법 G2 =({S, S1, S2}, {a,b}, S,P2) 에서
생성규칙 P2 가 다음과 같이 주어졌다면 S -> S1ab, S1 -> S1ab | S2, S2 -> a r = (a(ab)*)
예제 3.13• 문법 G = ({S,A,B}, {a,b}, S, P) 가 다음과 같은
생성규칙들을 갖는 경우 이는 정규 문법이 아니다 .
S -> A, A -> aB|, B -> Ab• 선형문법 linear grammar 은 각 생성규칙의
우변에 하나 이하의 변수만 있을 수 있으며 , 이 변수의 위치에는 제한이 없는 문법을 말한다 .
• 정규문법 선형문법
우선형 문법에 대한 정규언어우선형 문법 => 정규언어
정규언어 => nfa
정리 3.3
• G = (V,T,S,P) 가 우선형 문법 right-linear grammar 이면 L(G) 는 정규 언어이다 .
• 증명 – V={V1,V2,…} – S=V0– 생성규칙 : V0->v1Vi, Vi->v2Vj,…
정리 3.3
• 문자열 w 가 L(G) 에 속한다면 문법 G의 생성규칙들의 형태로 볼때 그 유도과정은 다음과 같을 것이다
V0 => v1Vi => v1v2Vj => v1v2…vkVn => v1v2…vkvl = w
그림 3.15
Vi a2a1 . . . am Vj
Represents Vi ->a1a2 … am Vj => *(Vi,a1a2…am) = Vj
Vi a2a1 . . . am Vf
Represents Vi -> a1a2 … am => *(Vi,a1a2…am) = Vf
연습문제 1
• 다음 문법에 의해 생성되는 언어를 인식하는 유한 오토마타를 구성해 보자 .
• S -> aS | aA• A -> bA| b
• L = {anbm | n, m 1}
정규언어에 대한 우선형 문법정규언어 => dfa
dfa => 우선형 문법
정리 3.4
• L 이 알파벳 에 대한 정규 언어일 때 , L = L(G) 를 만족하는 우선형 문법 G=(v, , S, P) 가 항상 존재한다 .
정리 3.4
• 증명 언어 L 을 인식하는 dfa 를 M=(Q, , ,
q0, F) 라하고 , Q={q0, q1, …, qn} 이고 = {a1,a2,…,am} 이라 가정– dfa M 으로부터 V={q0, q1, …, qn}– S=q0
정리 3.4
– M 에 존재하는 각 전이에 대해 (qi,aj)=qk문법 G 의 P 에 다음과 같은 생성규칙 추가 qi -> ajqkqk F 인 경우에는 P 에 다음 생성규칙 추가 qk ->
• w L(G) 를 보임
오토마타 M 이 dfa 가 아니어도 가능함
정리 3.5
• 언어 L 이 정규언어이고 그럴때만 L = L(G) 인 좌선형 문법 G 가 존재한다 .
• 증명– 좌선형 문법 G 의 생성규칙을 통하여
우선형 문법 G’ 을 생성– A->Bv A->v– L(G)=(L(G’))R
–A->vRB
A->vR
정리 3.6
• 언어 L 이 정규언어이고 그럴때에만 L = L(G) 를 만족하는 정규문법 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)
그림 3.15
Regular expressions
dfa or nfa
Regular grammars
Theorem 3.1 Theorem 3.2
Theorem 3.3 Theorem 3.4