주요 내용 형식 언어와 문법 정규식과 정규 집합 유한 상태 기계 정규 문법과 유한 상태 기계와 정규집합.

Slides:



Advertisements
Similar presentations
CHAPTER 5 TOP-DOWN PARSING SUNG-DONG KIM, DEPT. OF COMPUTER ENGINEERING, HANSUNG UNIVERSITY.
Advertisements

 수학 10- 나  1 학년 2 학기  Ⅰ. 도형의 방정식 1. 평면좌표 (1/24) 두 점 사이의 거리 수업 계획 수업 활동.
C-aC-bA-bB-aB-bB-cA-aA-c A. Head Section. A-b B-a B-b B-c C A-a A-c Top page.
언어와 문법 (languages, grammar)
컴파일러 입문 제 5 장 Context-Free 문법.
Compiler Lecture Note, Inroduction to FL theory
DS020 오토마타형식언어 Chapter 3. Regular Languages and Regular Grammars
3주 강의 Lexical Elements, Operators, and the C System
Compiler Lecture Note, Inroduction to FL theory
제 4 장 구문 분석.
“자연어처리” 소개 (Natural Language Processing)
해시 함수.
14주차 1교시 강화계획 [학습목표] 1. 강화계획의 정의를 안다 [학습내용] 1. 단순한 강화계획 2. 간헐적 강화 3. 복합 계획 4. 선택과 대응법칙 [사전학습] 강화계획이 일어날 수 있는 사례를 생각해본다.
연장근로와 야간·휴일근로 김영호 노무사 나눔 노사관계연구소 소장 연세대 일반대학원 박사 수료 고려사이버대 법학과 외래교수
공리 집합론 (Axiomatic Set Theory)
전산회계1급 기출 50회 신성대학교 세무부동산과 김상진.
Computer System Architecture
제 4장 프로그래밍 언어의 구문과 구현 기법 4.1 언어 구문 4.2 프로그래밍 언어 구현 기법.
4장 구문(Syntax).
강좌 개요 2009년 1학기 컴퓨터의 개념 및 실습.
과목 홈페이지  전산학개론 이메일 숙제를 제출할 경우, 메일 제목은 반드시 ‘[전산학개론]’으로 시작.
Discrete Math II Howon Kim
2. 형식언어 (Formal Language)
문법과 언어.
프로그래밍언어론 2nd edition Tucker and Noonan
Computer System Architecture
한국어 통사론의 기본 개념 통사론 기초
Regular Expression and Context-free Grammar
오토메타 형식언어 2003년도 제 2학기.
오일석, C와 ALPS, 장. 논리적으로 생각하기 © 오일석, 전북대학교 컴퓨터공학.
부울대수(Boolean Algebra)
형식언어와 유한상태기계.
DS020 오토마타형식언어 Chapter 6. Simplification of Context-Free Grammars and Normal Forms Exercises October 16, 2003.
장. 문법 구조(Syntax) 컴퓨터공학과 권기태 프로그래밍언어론.
제 5장. Context-Free Languages
Tel : Office : 2공학관 408호 오토마타 및 형식언어 김 현 성 Tel : Office : 2공학관 408호
재고자산(Inventory)의 평가(2)
Sung-Hae Jun 자연어 처리의 이해 Sung-Hae Jun
Chapter 7. PUSHDOWN AUTOMATA Exercises
에너지 운동량 방법: 일과 에너지법칙 1. 상자들이 초기속도 vo로 컨베이어 벨트로 운반되어 A에서 미끄러져서 B에서 떨어진다. μk= 0.40이고, 상자가 2.4m/s로 B점에서 떨어질 때 컨베이어 벨트의 속도를 구하라.
Chapter 2. Finite Automata Exercises
Discrete Math II Howon Kim
이산수학 논리∙명제에서 알고리즘까지 √ 원리를 알면 IT가 맛있다 ehanbit.net.
이재상 기본 논리회로와 불의 대수 이재상
2. 형식언어 (Formal Language)
7. LL 구문 분석 7-1. 결정적 구문 분석 7-2. Recursive-descent 파서 7-3. Predictive 파서 7-4. Predictive 파싱 테이블의 구성 7-5. Strong LL(k) 문법과 LL(k)문법.
5. Context-free 문법 5-1. 서 론 5-2. 유도와 유도 트리 5-3. CFG표기법.
학습목표 Pumping Lemma와 Closure 특성을 통해 CFL와 Language Family간의 관계 이해
여행자 보험 가입 시,기내용 목베게+투어팁스 무료맵북 증정
김포 한강베네치아 상가분양 3층~5층 오피스텔 226세대 1층~2층 상가 분양문의 : 이효철( )
과학 탐구 토론 대회 1학년 2반 박승원 1학년 5반 권민성.
학습 주제 p 역학적 에너지는 보존될까?(2).
우리는 부모를 닮지만, 왜 똑같지는 않을까? 유전적 다양성 독립 연관과 교차 무작위 수정.
Discrete Math II Howon Kim
도구를 사용할 때의 일(2) 도구를 사용해도 마찬가지야. 지레 지레를 사용할 때의 일.
프로그래밍언어론 2nd edition Tucker and Noonan
3. 정규 언어(Regular Language)
인천공항 스카이 허브라운지 상세페이지  배송비 부분에서 B2B, B2C 두가지 버전이 필요하며,
Discrete Math II Howon Kim
4. 어휘 분석(Lexical analysis)
교육방법 및 평가방법 안내.
Chapter 5. Context-Free Language Exercises
4. Flip-Flops : S-R, D, J-K, T 컴퓨터 구조 실습 안내서.
진리 나무 Truth-tree  ∧ ∨ → ↔  =.
하노이 탑 두세요 투노이 탑 주세요 두세요 주세요
엔화 대환/대출 자금용도 대상 이자 차액 효과 (A,B,C) 환율 리스크 헷징 (A,B) 엔화의 평균환율 (A,B,C)
함이의세계여행 - 브라질편 우리나라와 경제협력을 하고 있는 나라들 핑크돼지 이우진,김진수,김동민,조수현, 최혜린,송수진.
품사 분류의 기준과 실제.
표준화 이론 표준형 구조나무 표준화 정리  ∧ ∨ → ↔  =.
시나브로 기획안.2 By.임나연.
Presentation transcript:

주요 내용 형식 언어와 문법 정규식과 정규 집합 유한 상태 기계 정규 문법과 유한 상태 기계와 정규집합

언어(language) S : 기호들의 집합 S*: S로부터 만들어지는 모든 유한 스트링들 예) S: 알파벳 Ex) S={정수, +, -, x, , (, )} S*: 모든 가능한 수식들(algebraic expressions) 언어: 다음의 세가지 요소로 구성된다. 기호들(알파벳)의 집합 S가 반드시 존재한다. S로부터 문장들의 집합 S*를 형성하는 규칙이 반드시 존재한다. (syntax) (3) 규칙에 합당하게 만들어진 문장들이 어떤 의미를 갖는지를 반드시 결정할 수 있어야 한다. (semantics)

Ex) “Going to the store John George to sing” “Noiseless blue sounds sit cross-legged under the mountain top.” Ex) ((3-2) (4x7)) 9 (2-3))+4 4-3-2 )2+(3-)x4 Syntax: the specification of the proper construction of sentence Semantics: the specification of the meaning of sentences

심벌(symbol): 기호 알파벳(alphabet): 기호들의 유한 집합 문자열(string): 알파벳에 포함된 기호들이 나열된 것 단어(혹은 문장): 알파벳의 기호들의 문자열 공 문자열(empty string): 길이가 0인 문자열, 로 표시 (공집합과는 다르다.) V: 알파벳의 집합 V*: V에 속한 기호로 만들 수 있는 모든 문자열의 집합

문법(phase-structure grammar) Phase-structure grammar G=(V,T,S,P) V: 기호(문자열)의 집합 T: 단말 기호(terminal symbol) S: 시작 기호(start symbol, seed) P: 생성 규칙(production rule) (로 표시) If w w’, w is replaced by w’

예1: T={John, Jill, drives, jogs, carelessly, rapidly, frequently} N={sentence, noun, verbphrase, verb, adverb} V = T  N S=“sentence” P: 생성 규칙 <sentence>  <noun> <verbphrase> <noun>  John <noun>  Jill <verbphrase>  <verb><adverb> <verb> drives <verb> jogs <adverb> carelessly <adverb> rapidly <adverb> frequently

“Jill drives frequently.”는 문법적으로 맞는 문장인가? <sentence>  <noun> <verbphrase>  Jill <verb><adverb>  Jill drives frequently derivation tree(parse tree) sentence verbphrase noun adverb Jill verb frequently drives

예2: G=(V,T,S,P) N={S}, T={a,b}, V= T  N, P={S aSb, S ab} 이때 단어 a3b3은 다음과 같이 유도된다. S aSb aaSbb aaabbb 예3: G=(V,T,S,P) N={S, A, B}, T={0,1}, V= T  N P={S AB0, A BB, B 01, A1} 이때 단어 0101010은 다음과 같이 유도된다. S  AB0 A010 BB010 0101010

예4: V={v0, w, a, b, c} N={v0, w} T={a, b, c} V = T  N S= v0 P: 생성 규칙 v0  aw w  bbw w  c derivation tree(parse tree) v0 a w b b w b b w b b w c Syntactically correct sentence abbbbbbc=a(bb)*c

언어와 문법 <정의> L(G): 문법 G의 언어 문법 G를 사용하여 만들어질 수 있는 문장들의 집합

예: G=(V,T,S,P) N={S}, T={a, b, A}, V= T  N, P={S aA, S b, A aa} 생성 S aA와 A aa를 이용하면, aaa를 유도할 수 있고 생성 S b로부터 b를 유도할 수 있다. 따라서 문법 G로부터 유도되는 언어는 L(G)={b, aaa} 이다.

문법의 종류(1) 유형0 문법(비제한 문법) 생성에 아무 제약이 없다. 유형1 문법(문맥 의존 문법: context sensitive grammar) A B에서 B의 길이가 A보다 길거나 같고, 혹은 A   유형2 문법(문맥 자유 문법: context free grammar) A B에서 A는 비단말 기호(nonterminal symbol)이고 B는 하나 이상의 기호로 이루어져야 한다.

문법의 종류(2) 유형3 문법(정규 문법: regular grammar) A, B가 비단말 기호이고 a가 단말 기호일 때, A aB 혹은 A a 혹은 A  

G=(V,T,S,P), N={A, B}, T={a, b} 예: (유형1) v0  aAB AB bB B b A  aB 예: (유형2) v0  aBa B  aBa B  b 예: (유형3) v0  aB B bA, B  b, A  aB, A  a

예1: 유형3(정규) 문법 언어 {ambn|m,n>0}을 생성하는 문법 (1) G1=(V,T,S,P) V={S}, T={a,b}, P={S aS, S  Sb, S  } ={S aS|bS|} S aS aaS aaaS aaaSb aaaSbb aaabb (2) G2=(V,T,S,P) V={S, A}, T={a,b}, P={S aS, S  bA, S b, A  bA, A  b, S  } S aS aaS aaaS aaabA aaabb

예2: 유형2 문법(context free) 언어 {anbn|m,n>0}을 생성하는 문법 G=(V,T,S,P) V={S}, T={a,b}, P={S aSb, S  } ={S aSb|} S aSb aaSbb aabb

예3: 유형1 문법(context sensitive) 언어 {anbncn|n>0}을 생성하는 문법 G1=(V,T,S,P) V={S, A, B}, T={a,b,c}, P={S aSAB, BA  AB, aA ab, bA  bb, bB  bc, cB cc, S  } S aSAB aaSABAB aaABAB aabABB aabbBB aabbcB aabbcc

문법의 표현 BNF(Backus-Naur Form) 형식 문법 다이어그램(syntax diagram) 유도 트리(derivation tree)

Backus-Naur Form(BNF) (2) 생성 은 ::=로 표시한다. (3) 하나의 비단말 기호로부터 생성되는 여러 개의 문자열은 |으로 구분한다. P: 생성 규칙 v0  aw w  bbw w  c P: 생성 규칙(BNF 표기법) <v0> ::= a<w> <w> ::= bb<w>|c

예1: C언어에서 사용되는 signed integer을 표기하기 위한 생성 규칙을 BNF로 표시하면. <signed integer> ::= <sign><integer> <sign> ::= +|- <integer> ::= <digit>|<digit><integer> <digit> ::= 0|1|2|3|4|5|6|7|8|9 

예2: 앞에 예제에서 나왔던 문법을 BNF로 표시하면, P: 생성 규칙 <sentence><noun><verbphrase> <noun>  John <noun>  Jill <verbphrase>  <verb><adverb> <verb> drives <verb> jogs <adverb> carelessly <adverb> rapidly <adverb> frequently P: 생성 규칙(BNF 표기) <sentence> ::= <noun><verbphrase> <noun> ::= John|Jill <verbphrase> ::= <verb><adverb> <verb> ::= drives|jogs <adverb>carelessly|rapidly |frequently

예3: Linux에서의 identifier T={a,b,c,…,z,, 0,1,2,..,9} N={identifier, remaining, digit, letter} S=identifier P: <identifier> ::= <letter>| <letter><remaining> <remaining> ::= <letter>|<digit>|<letter><remaining> |<digit><remaining> <letter> ::= a|b|c|…|z|  <digit> ::= 0|1|2|…|8|9 identifier hw1.c remaining letter remaining letter h remaining w digit remaining letter 1  letter c

문법 다이어그램 (syntax diagram) (1) 비단말 기호는 사각형으로, 단말 기호는 원으로 그린다. (2) 생성 과정은 화살표로서 표시한다. (3) 하나의 비단말 기호로부터 생성되는 여러 개의 문자열은 병렬로 놓고 화살표로 표시한다.

예1: 다음의 BNF 표기에 의한 생성 규칙은 문법 다이어그램으로 다음과 같이 표시할 수 있다. <w> ::= <w1><w2><w3>

예2: 다음의 BNF 표기에 의한 생성 규칙은 문법 다이어그램으로 다음과 같이 표시할 수 있다. <w> ::= <w1><w2> | <w1>a | bc<w2>

예3: 다음의 BNF 표기에 의한 생성 규칙은 문법 다이어그램으로 다음과 같이 표시할 수 있다. <w> ::= ab | ab<w>

주요 내용 형식 언어와 문법 정규식과 정규 집합 유한 상태 기계 정규 문법과 유한 상태 기계와 정규집합

정규식(regular expression) 정규 문법은 정규식으로 표현될 수 있으며 정규 문법에 의해서 생성되는 언어는 정규식에 의해서 만들어지는 정규 집합과 동일하다.  * 기호들의 집합 (알파벳) 문자열의 집합 (정규 집합) 정규 문법 (정규식)

I : 기호(symbol)들의 집합(알파벳) I*: 집합 I의 기호들을 결합하여 만들어지는 유한 크기를 갖는 모든 문자열의 집합  ; 공 문자열(empty string) αβ : 문자열 α와 문자열 β의 연결(concatenation) α∪β : 두 문자열 α, β의 합집합 (∪는 +로도 표시한다.) (α)* : 문자열 α가 유한 개수만큼 반복되어 만들어지는 문자열            ∈(α)*, (α)*≡α* 예: a* = {, a, aa, aaa, aaaa, ...} a(b∪c) 혹은 a(b+c) = {ab, ac} ab(bc)* = {ab, abbc, abbcbc, abbcbcbc, ...}

정규식의 정의 I: a set of alphabets I에서 정의되는 정규식은 다음과 같이 재귀적으로 정의된다. 공문자열 는 정규식이다. αI라면 α는 정규식이다. α과 β가 각각 정규식이면 αβ도 정규식이다. α과 β가 각각 정규식이면 α  β 도 정규식이다. α가 정규식이면 α*도 정규식이다.

예1: I={a, b, c} 다음의 정규식은 (1) a* = {, a, aa, aaa, aaaa, …} (2) a(b+c) = {ab, ac} (3) ab(bc)* = {ab, abbc, abbcbc, …}

예2: I={0, 1} 다음의 정규식은 (1) 0*(0+1)* : 0과 1로 이루어진 모든 스트링 (2) 00*(0+1)*1: 0으로 시작해서 1로 끝나는 모든 스트링 (3) (01)*(01+1*)

예3: 101로 끝나는 단어들로 이루어진 언어 (0+1)*101 예4: 0 혹은 1로 이루어져 있고 1은 0이 나온 후에 나타나야 하는 언어 0* 1* 예5: 최소한 세 개의 연속적인 1을 갖는 단어들 (0+1)* 111(0+1)* 예6: 길이가 3의 배수인 문자열 ((0+1) (0+1)(0+1))*

정규 집합(regular set) I: a finite set of symbols I*: 정규 집합(regular set) 정규식으로 나타내지는 모든 문자열을 정규 집합이라고 한다. 예: I={a, b, c}, 그러면 I*=? 다음의 정규식으로 만들어지는 정규집합: a* I* ={, a, aa, aaa, aaaa, …} a(b+c) I* = {ab, ac} ab(bc)* I* = {ab, abbcbc, …}

다음과 같이 BNF로 표시된 생성 규칙은 정규식 a(bb)*c와 동일하다. <v0> ::= a<w> <w> ::= bb<w> | c 다음과 같은 문법 다이어그램으로 표시된 생성 규칙은 정규식 a∪b∪c*와 동일하다.

주요 내용 형식 언어와 문법 정규식과 정규 집합 유한 상태 기계 정규 문법과 유한 상태 기계와 정규집합

유한 상태 기계의 예 T: flip-flop 1 1 1 input 0 1 0 0 1 1 1 0 현재 상태

유한 상태 기계 (finite state machine) 유한 상태 기계 (S, I, f) S: 상태의 집합(a set of states) I: 입력값의 집합(a set of inputs) f: 상태 추이 함수(state transition function) 예: Flip-flop에서 S = {0, 1} I = {0, 1} f(현재상태, 입력값)=결과 상태 f(0,0) = 0, f(1,0)=1, f(0,1)=1, f(1,1)=0

출력이 있는 유한상태 기계 자동 판매기를 모델링한다고 하자. 입력은 100원, 500원 동전을 입력하고 700원이 되었을 때 C와 S 버튼을 입력하면 콜라와 사이다가 나온다. 초과되는 금액은 반납한다.

자동 판매기의 모델링(1) 입력: (100, 500, C, S) 상태: (S0, S1, S2, S3, S4, S5, S6, S7) 출력: (n, 100, 200, 300, 400, 500, 콜라, 사이다)

자동 판매기의 모델링(2) 다음 상태 출력 입력 상태 100 500 C S S0 S1 S5 n S2 S6 S3 S7 S4 200 300 400

정의: 출력이 있는 유한 상태 기계 출력이 있는 유한 상태 기계 (S, I, O, f, g, s0) S: 상태의 집합(a set of states) I: 유한의 입력 알파벳의 집합(a set of inputs) O: 유한의 출력 알파벳 f: 상태 추이 함수(state transition function) g; 출력 함수 s0: 초기 상태

출력이 있는 유한 상태 기계: 예1 S={s0, s1, s2, s3}, I={0,1}, O={0,1} 추이 함수 f와 출력 함수 g 상태 테이블 상태 도표 0,1 s1 1,0 상태 f g input Input 1 s0 s1 s3 s2 1,0 1,1 0,1 s0 s3 start 0,0 0,0 s2 1,1

출력이 있는 유한 상태 기계: 예2 S={s0, s1, s2, s3, s4}, I={0,1}, O={0,1} 추이 함수 f와 출력 함수 g 상태 f g input Input 1 s0 s1 s3 s2 s4

예2: 유한 상태 기계의 상태도표는?

출력이 없는 유한 상태 기계 유한 상태 오토마타(finite state automata)라고도 한다. 유한 상태 기계의 또 다른 형태로서 이 유형의 기계는 출력은 없고 최종 상태의 집합이 존재한다. 따라서 시작 상태에서 최종 상태에 도달하게 하는 입력값들만 이 기계는 인식하게 된다. 이러한 유형의 기계는 언어를 인식하는 기계를 모델링할 때 사용된다.

정의: 유한 상태 오토마타 유한 상태 오토마타 M=(S, I, f, s0, F) S: 유한한 상태 집합 s0:초기 상태(starting states) F: 최종 상태(acceptance states)의 집합

예1 M={S, I, f, s0, F},S={s0, s1, s2}, I={0,1}, F= {s2} f input 상태 0 1 s0 s0 s1 s1 s2 s2 s2 s1 s0 1 s0 s1 s2 1 0,1

예2 M={S, I, f, s0, F} S={s0, s1, s2, s3}, I={0,1}, F= {s0, s2} f input 상태 0 1 s0 s0 s1 s1 s0 s2 s2 s0 s0 s3 s2 s1 상태 도표는?

유한 상태 오토마타 M과 언어 L(M) I* 에 속하는 문자열 W 이 연속적으로 입력될 때 시작 상태 S0 에서 최종상 F로 이동하면, 문자열 W 는 기계 M=(S, I ,f, s0, F) 이 인식 또는 승인한다고 말한다. 기계 M 에 의해서 인식 (또는 승인) 되는 문자열의 집합을 M 에 의해서 인식되는 언어 L(M) 라고 한다. 

아래와 같은 유한 상태 오토마타 M에서 문자열 W=x1x2x3…xn  I* fw: 유한 상태 오토마타에 “x1x2x3…xn”을 입력했을 때 갖는 상태 1 s0 s1 s2 1 0,1 W=01011 fw(S0)=S1 : 문자열 W는 M이 인식하지 못한다. W’=010110 fw’(S0)=S2 : 문자열 W는 M이 인식한다.

예1: 다음의 유한 상태 오토마타 M1에 의해 인식되는 언어 L(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}

예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로 된 임의의 문자열}

L(M)과 L(G) 유한상태 오토마타 M 에 의해서 인식(또는 승인)되는 언어 L(M) 은 언어 L(M) 은 이에 대응하는 정규 문법(regular grammar) 을 만들 수 있다. 따라서 M에 대응하는 정규 문법(regular grammar) 을 G라고 하면 정규 문법 G에 의해서 생성되는 언어와 M에서 인식되는 문자열의 집합은 동일하다. L(M)  L(G) 

M에서 G 만들기 유한상태 오토마타 M이 주어졌을 때 이에 대응하는 정규 문법 G를 만드는 방법은 다음과 같다. M=(S, I, f, s0, F) G=(V, T, S, P) S N(nonterminal symbol) I T(terminal symbol) V = N  T P: 생성 규칙 Si, Sj ∈ S, x ∈ I일 때    만약 f(Si, w) = Sj 이면, Si  wSj    만약 f(Si, w) ∈ F이면, Si  w

상태 전이 함수 예1: M: finite state automata I={a,b}, S={S0, S1, S2} fa(S0)=S0, fb(S0)=S1, fa(S1)=S1 fb(S1)=S2 fa(S2)=S2 fb(S2)=S2 a, b a a s0 s1 s2 b b L(M) L(G) 생성 규칙 S0 aS0 S0 bS1 S1 aS1 S1 bS2 S2 aS2 S2 bS2 S1 b S2 a S2 b G: regular grammar T={a,b}, N={S0, S1, S2}

예1의 L(M)과 L(G)를 regular expression으로 표현하면, a*ba*b(a+b)*

상태 전이 함수 예2: M: finite state automata I={0,1}, S={S0, S1} f0(S0)=S0, f1(S0)=S1, f0(S1)=S1 f1(S1)=S0 1 s0 s1 1 L(M) L(G) 생성 규칙 S0 0S0 S0 1S1 S1 0S1 S1 1S0 S0 1 S1 0 G: regular grammar T={0,1}, N={S0, S1}

예2의 L(M)과 L(G)를 regular expression으로 표현하면, 0은 영향을 주지않는다. 1은 홀수번 나와야 한다. 따라서 0*10*(10*10*)*

주어진 문제를 해결하는 유한상태 오토마타 만들기 주어진 문제를 해결하는 유한상태 오토마타 만들기 a Task Moor machine 일반 언어로 기술 혹은 정규식으로 기술 BNF로 기술

예1: 0과 1로 이루어진 입력 문자열 001을 인식하는 유한상태 오토마타를 설계하라. 즉, I={0,1}, L(M)={001} 1 S0 S1 S2 S3 1 1 0,1 1 S4 0,1

01 혹은 10을 포함하는 문자열만을 인식하는 유한상태 오토마타를 설계하라. 예2: 0과 1로 이루어진 입력 문자열로 문자열 안에 01 혹은 10을 포함하는 문자열만을 인식하는 유한상태 오토마타를 설계하라. 0,1 1 S1 S2 S0 1 S3 S4 1 0,1

예3: x와 y로 이루어진 입력 문자열로 yy로 끝나는 문자열만을 인식하는 유한 상태 오토마타를 설계하라. 문자열만을 인식하는 유한 상태 오토마타를 설계하라. y x y y S0 S1 S2 x x

예4: x와 y로 이루어진 입력 문자열로 x를 포함하지 않는 문자열만을 인식하는 유한 상태 오토마타를 설계하라.

예5: x와 y로 이루어진 입력 문자열로 홀수개의 x를 포함하는 문자열만을 인식하는 유한 상태 오토마타를 설계하라.

문제: 다음의 언어는 정규 언어인가? L = {xnyn | n = 1,2,3,…} 정규식으로 L을 표현할 수 있을까? No. 따라서 위의 언어를 인식하는 유한상태 오토마타를 만들 수 없다. 위의 언어를 인식하기 위해서 튜링 기계(Turing machine)라고 하는 보다 강력한 기계를 사용할 수 있다.

유한상태 오토마타의 최적화 이와 같이 특정 과제를 수행하는 유한상태 오토마타를 설계할 수 있다. 하지만 이와 같이 설계된 유한상태 오토마타는 최적의 기계는 아니다. 즉, 더 적은 상태의 수를 갖는 유한상태 오토마타를 설계할 수 있다. 따라서 다음 단계에서 필요한 것은 최적화된 유한상태 오토마타의 설계이다.

주요 내용 형식 언어와 문법 유한 상태 기계 정규식과 정규 집합 정규 문법과 유한 상태 기계와 정규집합

L(G)와 L(M)과 정규식 G: 정규 문법 L(G)는 정규식으로 표현할 수 있다. M: 유한상태 오토마타

결론 G={V, I, S0, P}: 정규 문법 L(G): 정규 집합 M={S, I, f, S0, F}: 유한 상태 오토마타 L(M): 정규 집합