Tel : 850-7288 Office : 2공학관 408호 E-mail : kim@kiu.ac.kr 오토마타 및 형식언어 김 현 성 Tel : 850-7288 Office : 2공학관 408호 E-mail : kim@kiu.ac.kr.

Slides:



Advertisements
Similar presentations
파이썬 (Python). 1 일 : 파이썬 프로그래밍 기초 2 일 : 객체, 문자열 3 일 : 문자인코딩, 정규표현식, 옛한글 4 일 : 파일 입출력 5 일 : 함수와 모듈 6 일 : 원시 말뭉치 다루기 실습 7 일 : 주석 말뭉치 다루기 실습 8 일 : 웹 데이터로.
Advertisements

13 강 논리회로 2 과목 전자계산기 구조 강사 이 민 욱. 13 강 논리회로  논리회로 1. 부울 대수 (Boolean Algebra) 에서 사용하는 기본 연산자 ① 논리부정 : NOT ( ` ) 논리부정은 F = NOT A 의 표현을 F =A` 로 표현 ② 논리곱.
6 장. printf 와 scanf 함수에 대한 고찰 printf 함수 이야기 printf 는 문자열을 출력하는 함수이다. – 예제 printf1.c 참조 printf 는 특수 문자 출력이 가능하다. 특수 문자의 미 \a 경고음 소리 발생 \b 백스페이스 (backspace)
제 5 장 구문 정의  프로그래밍 언어의 기본 문자 집합  Alphabet 문자 (A-Z) 26 개 + 아라비아 숫자 (0 - 9) 10 개  예 ) Fortran : 기본 문자 집합 + 13 개의 특수문자 (=+ - * / ( ),. $ ‘ : 공백 ) Algol60.
언어와 문법 (languages, grammar)
컴퓨터와 인터넷.
Compiler Lecture Note, Inroduction to FL theory
DS020 오토마타형식언어 Chapter 3. Regular Languages and Regular Grammars
Compiler Lecture Note, Inroduction to FL theory
2장. 프로그램의 기본 구성. 2장. 프로그램의 기본 구성 2-1"Hello, World!" 들여다 보기 /* Hello.c */ #include int main(void) { printf("Hello, World! \n"); return 0;
9장. C 언어의 핵심! 함수. 9장. C 언어의 핵심! 함수 9-1 함수의 정의와 선언 main 함수 다시 보기 : 함수의 기본 형태 { } 그림 9-1.
유한 오토마타 Finite Automata
제  2 장  어휘 분석.
Report #2 - Solution 문제 #1: 다음과 같이 프로그램을 작성하라.
3장 구문과 의미론 순천향대학교 컴퓨터공학과 하상호.
Discrete Math II Howon Kim
2. 형식언어 (Formal Language)
Regular Expression and Context-free Grammar
오토메타 형식언어 2003년도 제 2학기.
형식언어와 유한상태기계.
DS020 오토마타형식언어 Chapter 6. Simplification of Context-Free Grammars and Normal Forms Exercises October 16, 2003.
Tel : Office : 2공학관 408호 오토마타 및 형식언어 김 현 성 Tel : Office : 2공학관 408호
Chapter 7. PUSHDOWN AUTOMATA Exercises
11장. 포인터 01_ 포인터의 기본 02_ 포인터와 Const.
SqlParameter 클래스 선문 비트 18기 발표자 : 박성한.
학습목표 가장 단순한 Finite Automata를 통해 DFA와 NFA를 이해하고 그 둘의 능력이 같음을 확인한다.
Chapter 2. Finite Automata Exercises
Discrete Math II Howon Kim
주요 내용 형식 언어와 문법 정규식과 정규 집합 유한 상태 기계 정규 문법과 유한 상태 기계와 정규집합.
6장. printf와 scanf 함수에 대한 고찰
보고서 #5(제출기한: 10/14) 다음 문제를 해결하시오.
3. 정규 언어(Regular Language)
<소스코딩(Source Coding)> 제4장 가변길이 코드
11장. 1차원 배열.
2. 형식언어 (Formal Language)
제4장 제어 시스템의 성능.
CHAP 10:그래프 (2) 순천향대학교 하상호.
1.4 중첩된 한정기호 (Nested Quantifiers) 이산수학 (Discrete Mathematics)
학습목표 CFL을 accept하는 오토메타인 pda를 이해 npda와 dpda의 차이를 compiler의 측면에서 학습
프로그래밍 개요
어서와 C언어는 처음이지 제14장.
5. Context-free 문법 5-1. 서 론 5-2. 유도와 유도 트리 5-3. CFG표기법.
자료구조: CHAP 7 트리 –review 순천향대학교 컴퓨터공학과 하 상 호.
Term Projects 다음에 주어진 2개중에서 한 개를 선택하여 문제를 해결하시오. 기한: 중간 보고서: 5/30 (5)
Discrete Math II Howon Kim
컴퓨터 프로그래밍 기초 - 10th : 포인터 및 구조체 -
3. 정규 언어(Regular Language)
Choi Seong Yun 컴퓨터 프로그래밍 기초 #06 : 반복문 Choi Seong Yun
합집합과 교집합이란 무엇인가? 01 합집합 두 집합 A, B에 대하여 A에 속하거나 B에 속하는 모든 원소로 이루어진 집합을 A와 B의 합집합이라고 하며, 기호 A∪B로 나타낸다. A∪B ={x | x∈A 또는 x∈B}
Discrete Math II Howon Kim
균형이진탐색트리 이진 탐색(binary search)과 이진 탐색 트리(binary search tree)와의 차이점
알고리즘 알고리즘이란 무엇인가?.
디버깅 관련 옵션 실습해보기 발표 : 2008년 5월 19일 2분반 정 훈 승
Chapter 5. Context-Free Language Exercises
에어 PHP 입문.
4장. 데이터 표현 방식의 이해. 4장. 데이터 표현 방식의 이해 4-1 컴퓨터의 데이터 표현 진법에 대한 이해 n 진수 표현 방식 : n개의 문자를 이용해서 데이터를 표현 그림 4-1.
Flow Diagram IV While.
쉽게 배우는 알고리즘 2장. 점화식과 점근적 복잡도 분석
상관계수.
컴퓨터공학과 손민정 Computer Graphics Lab 이승용 교수님
제 3장. Regular Languages 와 Regular Grammars
8장 선택 논리 II 1. 논리연산자 1.1 논리연산자 : AND (&&) 1.2 논리연산자 : OR (||)
3장 (2) 구문과 의미론 순천향대학교 컴퓨터공학과 하상호.
트리 (Logical) Data Structures Linear list Tree Graph Linear structures
제 4 장 Record.
수치해석 ch3 환경공학과 김지숙.
1장 C 언어의 개요 C 언어의 역사와 기원 C 언어의 특징 프로그램 과정 C 프로그램 구조 C 프로그램 예제.
(Permutations and Combinations)
6 객체.
2019 2학기 9장 배열과 포인터 1. 주소, 주소연산자(&) 2. 포인터, 역참조연산자(*) 3. 배열과 포인터.
Presentation transcript:

Tel : 850-7288 Office : 2공학관 408호 E-mail : kim@kiu.ac.kr 오토마타 및 형식언어 김 현 성 Tel : 850-7288 Office : 2공학관 408호 E-mail : kim@kiu.ac.kr

사람의 언어 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 Input file Storage Control unit Output

Automata(2/2) 1 q1 q0 q2 1 1

Three Basic Concepts(2/2) Languages Grammars Automata

Grammar, Languages, Recognizer Grammar Language Recognizer Type 0 recursively enumerable sets Turing machine Type 1 context-sensitive language Linear bounded automata Type 2 context-free language Pushdown automata Type 3 regular language Finite automata

Chomsky’s Language Hierarchy Regular Languages Context-free Languages Context-sensitive Languages Unrestricted Languages

Applied Area Compiler Digital Design Finite Automata lexical analysis (parser) Digital Design binary adder

계산이론개요

목적 컴퓨터 공학 분야에는 몇 가지 공통적인 기본 원리가 존재 기본 원리를 이해하기 위해서는 추상적 모델을 설정해야 한다 추상적 모델 => 하드웨어 및 소프트웨어에서 공통적으로 나타나는 특징들을 표현하기 위한 모델

목적 추상적 모델 => 오토마타 오토마타는 입력, 출력, 기억장소로 구성 형식언어는 프로그래밍언어들의 일반적인 특성들을 추상화한 개념 형식언어는 심볼들과 심볼들의 조합인 문장을 구성하는 형식규칙들의 집합 형식언어는 이 형성규칙들에 의해 생성되는 모든 문자열들의 집합

한국어 우리는 경일대인이다. 경일대인은 나다.

목적 개념탐구 방법 직관적인 방법 수학적인 방법 집합론 함수 관계 트리 그래프

함수(1/2) 함수란 한 집합의 원소들 각각에 대해 다른 집합의 유일한 원소로 배정하는 규칙 F : S1 S2 domain range S1 S2

함수(2/2) 함수의 표현 {(x1,y1),(x2,y2),…} xi : 해당함수의 정의역의 원소 domain range 함수(2/2) 함수의 표현 {(x1,y1),(x2,y2),…} xi : 해당함수의 정의역의 원소 yi : 해당함수의 치역의 대응값 각 xi가 이 집합 내에서 순서쌍의 첫 번째 위치에 최대 한번만 나타나야 한다. X Y

오토마타 1 q1 q0 q2 1 1

그래프 (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 Level 0 Height = 3 Leaf Level 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 양성폐포positive-closure L* = L0 U L1 U L2 …

문법(1/3) 영어 문법 “문장은 명사절(noun phrase)과 술부(predicate)로 구성”

문법(2/3) A boy runs Pascal identifier <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 전체 함수이며, 전이 함수라 불림 q0Q : 초기 상태 F  Q : 종료 상태의 집합

결정적 유한 인식기 동작방식 오토마타의 초기 상태 : q0 입력 방법 : aabbaa 오토마타의 종료 : 입력의 맨 끝에 도달한 경우 승인여부 확인 : 오토마타의 종료 시점에 오토마타의 상태 체크 상태전이 : 전이 함수  에 따라 결정

전이그래프 유한 오토마타를 가시적으로 표현하기 위한 그래프 정점 : 오토마타의 상태 간선 : 오토마타에서 상태의 전이 정점의 라벨 : 상태의 이름 간선의 라벨 : 입력 심볼의 현재 값 종료상태 : 이중원으로 표시 q0 1 qf

전이그래프 (q0,a) = q1 q0 q1 a 초기상태표시

그림 2.1 1 q1 q0 q2 1 1

확장 전이함수 *: Q  *  Q : 함수의 두 번째 인수가 단일 심볼이 아닌 문자열임 *(q, ) = q, 함수가 (q0,a) = q1 이고 (q1,b) = q2 이면 *(q0,ab) = q2 *(q, ) = q, *(q, wa) = (*(q,w),a)

언어와 Dfa 정의 2.2 인식(Acceptance) 비인식(Nonacceptance) 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, qjQ와 w +에 대해, *(q0, w) = qj 이고 오직 그럴때에만 그래프 GM에는 라벨 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 b a q0 q2 q3 a b q1 , b

Example 사람 늑대 양 양배추 사람 늑대 양 양배추 M W G C

Diagram g m MWGC- WC-MG MWC-G g m w c 사람 늑대 양 양배추 M c w C-MWG W-MGC W MG-WC g m

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

비결정성 ? 컴퓨터 => 결정성

비결정적 인식기 각 상황에서 유일한 이동만을 규정하기 보다는 가능한 여러 가지 이동들의 집합을 허용하는 것. 오토마타의 전이 함수가 상태들의 집합을 치역으로 갖게 함으로써 가능해진다.

비결정적 인식기 F : S1 S2 domain range a a a S1 S2

정의 2.4 비결정적 유한 인식기 또는 NFA는 다음과 같이 5 원소 쌍으로 정의 된다. M = (Q, , , q0, F), 여기서 Q, , , q0, F 는 결정적 유한 인식기에서와 같이 정의되나, 함수 : Q  (  {})  2Q

DFA와 NFA의 차이점 치역 NFA에서 전이함수의 인수로 허용 NFA에서는 집합 (qi, a)가 공집합을 허용 NFA에서 의 치역이 멱집합 2Q 내에 있고, 그 값이 Q의 단일 원소가 아닌 Q의 부분집합 NFA에서 전이함수의 인수로 허용 입력 심볼을 읽지 않고도 전이가 가능함 NFA에서는 집합 (qi, a)가 공집합을 허용 특정 상황에 대하여 정의된 전이가 없을 수 있음

그림 2.8 a a q1 q2 q3 a q0 a a q5 q4 a

NFA의  함수 input 1 state q0 {q0, q3} {q0, q1} {q2} q1  {q2} q2 {q2}  1 state q0 {q0, q3} {q0, q1} {q2} q1  {q2} q2 {q2}  q3 {q4} q4 {q4} {q4}

그림 2.9 q0 0,1 1 q1 q2 

정의 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)

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는 동치라 한다.

{(10)n : n >= 0} 0,1 q0 q1 q2 1  0,1 1 q0 q1 q2 1

인식 DFA는 NFA의 한 제한된 종류이다. DFA에 의해 인식되는 언어는 어떤 NFA에 의해서도 인식될 수 있다. ???

동치인 DFA는 같은 문자열을 읽어들인 후 명확히 한 상태에 놓이게 된다. 인식 DFA NFA NFA가 문자열 w를 읽은후 그 NFA가 정확히 어느 상태에 있는지 알수 없다 그러나 NFA가 놓여질 수 있는 가능한 상태들의 집합은 Non-terminal임을 알 수 있다. 동치인 DFA는 같은 문자열을 읽어들인 후 명확히 한 상태에 놓이게 된다. 존재

예제 2.12 다음 NFA와 동치인 DFA를 구성 => DFA의 각 상태의 라벨이 NFA의 상태들의 집합이 되도록 각 상태에 라벨을 부여 b q1 q0 q2 a  a

DFA의 전이 ({q0},a)={q1,q2} ({q0},b)= ({q1,q2},a)={q1,q2}  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)

정점 {q0}를 갖는 그래프 GD를 생성. 이 정점을 초기 정점으로 한다. 2. 모든 간선이 생성될 때까지 반복 의 어떤 원소 a  에 대해서 진출 간선을 갖지 않는 GD의 정점 {qi,qj,…,qk}를 선택 *(qi,a), *(qj,a),…, *(qk,a)들을 계산 계산된 *들의 합집합을 구하여 이를 {ql,qm,…,qn}라 함 GD에 라벨이 {ql,qm,…,qn}인 정점이 존재 않는다면 이를 추가함 GD에 정점 {qi,qj,…,qk}로부터 정점{ql,qm,…,qn}으로 향하는 간선을 추가하고 이에 라벨 a를 부여

3. GD의 상태들 중 라벨이 qf  FN을 포함하는 모든 상태들을 종료 상태로 지정 4. 인식기 MN이 를 인식하는 경우, GD의 정점 {q0}를 종료 정점으로 지정

예제 2.13 1 q1 q0 q2 0,1 0,1

*({q0},0)U*({q1},0)를 구함=>{q0,q1,q2} 1 q1 q0 q2 0,1 0,1 {q0} 추가 *({q0},0)를 구함 => {q0,q1} {q0,q1}추가 {q0}에서 {q0,q1}로 향하는 라벨 0을 갖는 간선 추가 *({q0},1)를 구함 => {q1} {q1}추가 {q0}에서 {q1}로 향하는 라벨 1을 갖는 간선 추가 *({q0},0)U*({q1},0)를 구함=>{q0,q1,q2} {q0,q1,q2}추가 {q0,q1}에서 {q0,q1,q2} 로 향하는 라벨 0을 갖는 간선 추가

*({q0},1)U*({q1},1)를 구함=>{q1,q2} 1 q1 q0 q2 0,1 0,1 *({q0},1)U*({q1},1)를 구함=>{q1,q2} {q1,q2}추가 {q0,q1}에서 {q1,q2} 로 향하는 라벨 1을 갖는 간선 추가 *({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을 갖는 간선 추가

10. *({q1},0)U*({q2},0)를 구함=>{q2} 1 q1 q0 q2 0,1 0,1 *({q1},0)를 구함=>{q2} {q2}추가 {q1}에서 {q2} 로 향하는 라벨 0을 갖는 간선 추가 *({q1},1)를 구함=>{q2} {q2}존재 {q1}에서 {q2} 로 향하는 라벨 1을 갖는 간선 추가 10. *({q1},0)U*({q2},0)를 구함=>{q2} {q1,q2}에서 {q2}로 향하는 라벨 0을 갖는 간선 추가

11. *({q1},1)U*({q2},1)를 구함=>{q2} 12. *({q2},0)를 구함=>{} 1 q1 q0 q2 0,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} 로 향하는 라벨 1을 갖는 간선 추가

1 q1 q0 q2 0,1 0,1 q1을 포함한 모든 상태들을 종료 상태로 지정 정점 {q0}를 종료 정점으로 지정할지 판단

그림 2.16  {q0} 1 {q0,q1} {q1} 0,1 1 {q0,q1,q2} {q1,q2} 1 0,1 {q2} 1 1 {q0,q1} {q1} 0,1 1 {q0,q1,q2} {q1,q2} 1 0,1 {q2} 1  0,1

정규언어와 정규문법 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),

정규표현과 정규언어의 관계 정리 3.1 r 을 정규 표현이라 하자. 언어 L(r) 을 인식하는 nfa가 존재하며, 결과적으로 L(r)은 정규언어이다.

그림 3.1 q1 q0 . nfa accepts   q1 q0 . nfa accepts {} a q1 q0

그림 3.2 . L(r)을 인식하는 nfa의 도식적인 표현 M(r)

그림 3.3 Automaton for L(r1 + r2). M(r1)   M(r2)  

그림 3.4 . Automaton for L(r1r2). M(r1) M(r2)   

그림 3.5 Automaton for L(r1*).  M(r)   

그림 3.6 Find an nfa which accepts L(r), where r = (a + bb)*(ba* + ). . M1 accepts L(a+bb) . M2 accepts L(ba* + ) M1 M2 a a b b b  

그림 3.7 Automaton accepts L((a + bb)*(ba* + ))  M1 M2  a    b b 

정규언어와 정규문법

NFA에 대한 정규 표현 찾는 방법 NFA의 모든 보행에 대한 라벨 생성 어렵다 전이그래프에 사이클 존재 -> 몇번 반복할 지 모름 기록 문제로 해결

정규언어에 대한 정규표현 일반전이 그래프Generalized transition graph 간선의 라벨에 정규 표현을 부여하는 전이 그래프 라벨은 여러 정규표현들의 접합 <= 그 자체도 정규 표현이 된다. a -> a a, b -> a + b

예제 3.8 L(a* + a*(a + b)c*) a c* a + b

그림 3.9 e d c qj qi q b a ce*b ae*d ce*d qj qi ae*b

그림 3.12 a EE OE a b b b b a OO EO a

그림 3.12 aa bb a ba OO EE OE EE a ab b b b b b a a b a OO EO EO a

그림 3.12 aa bb ba a(bb)*a OO EE aa+ab(bb)*ba ab b+a(bb*)ba EO b EE a 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 우선형 문법에 대한 정규언어 우선형 문법 => 정규언어 정규언어 => 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 a1 a2 . . . am Vi Vj Represents Vi ->a1a2 … am Vj => *(Vi,a1a2…am) = Vj a1 a2 . . . am Vi Vf Represents Vi -> a1a2 … am => *(Vi,a1a2…am) = Vf

연습문제 1 다음 문법에 의해 생성되는 언어를 인식하는 유한 오토마타를 구성해 보자. S -> aS | aA A -> bA| b L = {anbm | n, m  1}

정규언어 => dfa dfa => 우선형 문법 정규언어에 대한 우선형 문법 정규언어 => 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 w  L(G)를 보임 M에 존재하는 각 전이에 대해 (qi,aj)=qk 문법 G의 P에 다음과 같은 생성규칙 추가 qi -> ajqk qk  F인 경우에는 P에 다음 생성규칙 추가 qk ->  w  L(G)를 보임

오토마타 M이 dfa가 아니어도 가능함

정리 3.5 언어 L이 정규언어이고 그럴때만 L = L(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 Theorem 3.2 Theorem 3.1 dfa or nfa Regular grammars