1 / 66

2. 형식언어와 유한 오토마타

2. 형식언어와 유한 오토마타. 형식언어의 기초 형식문법 문법의 표기법 정규 문법 , 문법 도표 , BNF, EBNF 표기법 정규언어와 유한 오토마타 유한 오토마타 , DFA 와 NFA, 동치 , 상태수 최소화 정규 문법 , 정규 표현과 유한 오토마타의 동치. 2.1 형식언어 (Formal Language) 기초. 정의들. 형식언어 - 어떤 알파벳 (alphabet) 에서 얻은 기호 (symbol) 들로 구성되는 문자열 (string) 들의 집합 알파벳 : 기호들의 유한 집합

analu
Télécharger la présentation

2. 형식언어와 유한 오토마타

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 2. 형식언어와 유한 오토마타 • 형식언어의 기초 • 형식문법 • 문법의 표기법 • 정규 문법, 문법 도표, BNF, EBNF 표기법 • 정규언어와 유한 오토마타 • 유한 오토마타, DFA와 NFA, 동치, 상태수 최소화 • 정규 문법, 정규 표현과 유한 오토마타의 동치

  2. 2.1 형식언어(Formal Language) 기초 • 정의들 형식언어 - 어떤 알파벳(alphabet)에서 얻은 기호(symbol)들로 구성되는 문자열(string)들의 집합 알파벳: 기호들의 유한 집합 문자열: 알파벳을 구성하는 기호들의 0 또는 1개 이상 나열(sequence)된 것 알파벳, 문자열의 예 집합 T = {a,b,c}가 주어졌을 때 집합 T는 기호 a,b,c들의 집합이므로 알파벳이다. 그리고 T로부터 만들어지는 문자열들은 “a,b,c,ab,ac,ca,aabc,….”등이다. an이란 a가 n개 나열된 문자열을 나타낸다. T*에서ε를 제외한 모든 문자열 문자열의 길이가 0 언어 (Language) 알파벳 T에 대한 언어 L은 T*(T의 star closure)의 부분집합이다. 즉, 알파벳 T = {a,b,c}가 주어졌을 때 L1 = {ε, a, aa}, L2 = {anbn | n => 1}등은 언어이다. T* = T+ (T dagger) + ε

  3. 2.1 형식언어 기초(Con’t) • 정의들 알파벳: T = { a, b, c } 일 때, 문자열(w) :  , a, ca, abc, ... an = aaaaa ..… a 이며, T* = { , a, b, c, aa, ab, ac, …} 이고, T+ = { a, b, c, aa, ab, ac, …} 알파벳 T에 대한 언어 L은 T*의 부분 집합이다. 형식언어 : L  T* |w|는 문자열의 길이, w는 임의의 문자열 |w|는 w의 cardinality, 임의의 문자열 u, v에 대해 u· = ·u이고, u··v = uv이다.

  4. 2.1 형식언어 기초(Con’t) • 정의들 a* = { , a, aa, aaa, aaaa, … } 이며, (a | b)* 일 때, 부분 집합들은 = { , a, aa, aaa, aaaa, … b, bb,bbb, bbbb, … ab, aab, aabb, abb, …} 이며, 이는 anbm으로 축약(정규방정식)

  5. 2.2 형식 문법(Formal Grammar) • 문법을 살펴볼 수 있는 예 (식별자 : Identifier) • 문법 규칙이 존재한다. • 첫 글자는 영문자 • 영문자 + 숫자 • 8자 이내 ABC := E * 3.14 + ABC / E;

  6. 2.2 형식 문법(Con’t) • 형식언어를 생성하기 위한 규칙 Grammar Symbol : Vocabulary 형식문법 G = (VN, VT , P, S) 단, VN : 논터미널(non-terminal) 기호들의 유한집합 VT : 터미널 기호의 유한집합 P : 생성규칙(production rule)의 집합 S : 시작기호(start symbol)

  7. > 2.2 형식 문법(Con’t) • 형식문법 예 [예] G = ( {S, A}, {0, 1}, P, S ) P : S  0 | 0AS A SS | 10 | S1A Q :문법 G에서 ‘0’이 허용되는 문자열인가 ? S 0 S 0 Directly derive

  8. > 2.2 형식 문법(Con’t) • 형식문법 예 [예] G = ( {S, A}, {0, 1}, P, S ) P : S  0 | 0AS A SS | 10 | S1A Q : 문법 G에서 ‘0000’이 허용되는 문자열인가 ? S 0AS  0SSS  0000 S  0000 S 0000 + 한 번 이상 derive

  9. > 2.2 형식 문법(Con’t) • 형식문법 예 [예] G = ( {S, A}, {0, 1}, P, S ) P : S  0 | 0AS A SS | 10 | S1A Q : 문법 G에서 ‘001100’이 허용되는 문자열인가 ? S 0AS  0S1AS  0S110S  001100 S  001100 S 001100 + 한 번 이상 derive

  10. > > > > 2.2 형식 문법(Con’t) • Derivation 한번 이상의 유도 0번 이상의 유도 직접 유도 α1은 αn을 생성(produce) 또는 유도(derive)한다. αn은 α1으로 reduce된다 + * * α1 αn

  11. 2.2 형식 문법(Con’t) • 문법의 4 종류(Chomsky 계층구조) • 생성 규칙의 형태에 가해지는 제한에 따라 구분 • Type 0 : 생성규칙에 어떠한 제한이 없다 • 다만, α β일 때, α는 ε(Empty) String이 될 수 없다. • Type 1 : αβ일 때, β의 길이가 α의 길이보다 길다 • 즉, |α| <= |β| (Context-Sensitive Grammar : CSG) • Type 2 : Context Free Grammar (CFG, 구문분석) • 모든 생성 규칙은 A  α의 형태를 갖음 • A는 Nonterminal, α는 V*에 속하는 String • 생성규칙 좌측은 Nonterminal, 우측은 Terminal, Nonterminal로 구성 • Type 3 : Regular Grammar(RG, 정규문법, 어휘분석) • A  tB 또는 A  t (A,B ∈ VN, t ∈ VT*) : Right-Linear(우선형 문법) • A  Bt 또는 A  t (A,B ∈ VN, t ∈ VT*) : Left-Linear(좌선형 문법)

  12.      , |||| A , A  VN A tB 2.2 형식 문법(Con’t) • 문법 4종류 포함관계 UnrestrictedGrammar Context-sensitive Grammar Context-Free Grammar Regular Grammar

  13. 2.2 형식 문법(Con’t) • 인식기(Recognizer)와 언어 • 문법이 주어지면, 그 문법에 맞는 언어를 생성할 수 있다. • 즉, 하나의 컴파일러를 만드는 것은 주어진 언어를 인식하는 인식기를 만드는 작업

  14. 2.2 형식 문법(Con’t) • 어떤 종류의 문법? 정규 문법인지? [예] G1 = ( {S, A, C}, {a, b, c}, P, S ) P : S  A A  abC bB  bb A  aABC CB  BC bC  bb 정규문법 미 준수 터미널 기호 하나와 non 터미널 기호 하나로 이루어지지 않음 왼쪽 부분이 하나의 non 터미널 기호로 이루어지지 않음 Type 2 미 준수 But,   , |||| 만족 Type 1 문법 : CSG

  15. 2.2 형식 문법(Con’t) • 어떤 종류의 문법?(Con’t) [예]G2 = ( {S, C}, {a, b}, P, S ) P : S  aCa C  b C  aCa But, A , A  VN 정규문법 미 준수 type 2 (CFG) 문법 [예]G3 = ( {S, B, C}, {a, b}, P, S ) P : S  aS | aB B  bC C  aC | a A  tB type 3 우선형 정규 문법

  16. 2.2 형식 문법(Con’t) • 정규 문법에 따른 정규 표현식 • 유도과정 [예] G3 = ( {S, B, C}, {a, b}, P, S ) P : S  aS | aB B bC C  a | aC S  aB  abC  abaC  abaaC  abam [예]G3 = ( {S, B, C}, {a, b}, P, S ) P : S  aS | aB B bC C a | aC S  aB  abC  aba abam , aba aba [예] G3 = ( {S, B, C}, {a, b}, P, S ) P : S aS | aB B  bC C  a | aC S  aS  aaS  anS [예] G3 = ( {S, B, C}, {a, b}, P, S ) P : S aS | aB B bC C a | aC S  aba S  abam S  anS anS, abam, aba anS, abam, aba anabama

  17. 2. 3 문법의 표기법 • 정규언어 • 정규 표현 • 문법 도표 • BNF 표기법 • EBNF 표기법

  18. 2. 3 문법의 표기법(계속) • 정규언어(Regular Language) • Chomsky 문법구조에서 Type 3에 해당되는 언어 • 정규 문법에 의해 생성되는 언어 • 정규문법, 정규 표현, 유한 오토메타로 표현 가능 • 정규 문법 • Type 3에 해당되는 정규언어의 문법 • 어휘 분석 과정에서 인식되는 토큰의 구조를 표현 • 형태 • 생성 규칙의 오른쪽에 있는 Nonterminal의 위치에 따라 • 우선형 문법(RLG : Right-Linear Grammar) • 좌선형 문법(LLG : Left-Linear Grammar) • 따라서, 모든 RLG는 그와 동등한 LLG를 만들 수 있으며, 그 역도 성립 A  aB B  Cd

  19. 2. 3 문법의 표기법(계속) • 정규문법(계속) • 문법 예 RLG : A  tB, A  t LLG  A  Bt, A  t, 여기서 A,B ∈ VN이고 t ∈ VT* G1 : S  000S | 000  RLG G2 : S  S000 | 000  LLG But, 다음 문법에 해당되는 언어는 정규언어가 아니다. G : S  aR | c R  Sb L(G) = {ancbn | n ≥ 0}  Context-Free 언어(Type 2) RLG, LLG가 Mixed

  20. 2. 3 문법의 표기법(계속) • 정규 문법(계속) • 모든 RLG는 그와 동등한 LLG를 만들 수 있음(역도 성립) • RLG 형태가 언어의 구조를 더 자연스럽게 표현함 • 따라서, 정규 문법을 우선형 문법으로 재정의함. S  S 1) A  aB, A  a, 여기서 a ∈ VT이고 A, B ∈ VN이다. 2) 만약 S  ε이면, S가 다른 생성 규칙의 오른쪽에 나타나지 않아야 한다.( ε-Free 문법) 보충 우선형 형태의 생성규칙 A  tB, t ∈ VT*에서, t  a1a2…an, ai ∈ VT라 하면, 생성규칙 A  a1a2…anB를 다음과 같이 정규 문법 형태로 풀어서 쓸 수 있음 A  a1A1 A1  a2A2 …. An-1  anB S  abcA↔ S  aS1, S1  bS2, S2  cA A  bcA↔ A  bA1, A1  cA A  cd↔ A  cA2, A2  d above Example another Example

  21. 2. 3 문법의 표기법(계속) • 정규 문법(계속) • 선형 문법에서 t = ε인 경우, • 2가지 생성규칙 형태 발생가능 • A  B 형태 (single production) • A  ε형태 (epsilon production) • 구문 분석 과정에서 제거 대상이 됨 • 즉, 정규언어는 다음 방식에 의해 생성 • 모두 동일한 의미를 나타냄 • 언어 L은 우선형 문법에 의해 생성된다. • 언어 L은 좌선형 문법에 의해 생성된다. • 언어 L은 정규 문법에 의해 생성된다.

  22. 2. 3 문법의 표기법(계속) • 정규표현(Regular Expression) • 정규 언어를 표현하기 위한 하나의 방법 • 정규 언어에 속해 있는 스트링의 모양을 직접 기술하는 형태 • 기본 원소와 연산자로 구성 • 기본 원소 : Φ (공집합), ε, terminal symbol • 스트링 구조 연산자 : +(union), *(closure), ·(concatenation) • 연산자 순위 : + < · < * • 문법이 주어졌을 때 주어진 문법이 정규 문법일 경우, 그 문법이 생성하는 언어를 구할 수 있다. • 정규 문법으로부터 일련의 정규 표현식을 유도함으로써 가능 • 따라서, 정규 문법과 정규 표현은 같은 종류의 언어를 나타냄

  23. 2. 3 문법의 표기법(계속) • 정규표현(계속) • 정규 문법을 가장 잘 나타냄 • Φ은 공집합 {Φ}를 나타냄 • ε은 {ε}을 나타냄 • a ∈ VT인 a는 집합 {a}를 나타냄 • 만일 P와 Q가 정규언어 LP, LQ를 표현한다면, • (P + Q)는 LP ∪ LQ를 나타냄 • (P · Q)는 LP· LQ를 나타냄 • (P*)는 {ε} ∪ LP1 ∪ LP2 ∪ LP3 …을 나타냄 • *, · , | (정규표현 구성 연산자) • P+는 P·P*의 단축형 (zero or more) • (P+Q)는 (P|Q)로도 표현(택일) • P·Q는(·)를 생략하고 PQ로 간단히 표현(연결) 정규표현 예) - (a+b)*abb , 00*(0+1)*1

  24. 2. 3 문법의 표기법(계속) [정규문법] : X → αX | β • 정규문법을 정규표현으로…. α*β - 문자열을 유도해 보면 X → β X → αX → αβ → ααX → ααβ → αααX → αααβ → ααααX → ααααβ X = α*β

  25. 2. 3 문법의 표기법(계속) • 문법 도표(Syntax Diagram) • 문법을 도식화하는 방법 • 사각형 : Nonterminal, 타원 : Terminal, 지시선 : 다음 기호를 보기 위한 역할 P : V0  aV1 V1  bV0|a

  26. 2. 3 문법의 표기법(계속) • BNF/EBNF 표기법 • BNF : Backus Normal Form • Backus Naur Form • ALGOL 60의 문법 표기법 • Nonterminal : < , >로 표현 • 대체 : ::= • 양자택일 : | • EBNF : Extended BNF • BNF의 반복 표현되는 부분을 표현 • 메타기호 • {a} : 0번 이상 반복 : a* • [a] : a가 나타나지 않거나 한번 나타남 : a 1 0

  27. 2. 3 문법의 표기법(계속) • BNF/EBNF 표기법(계속) • 식별자(Identifier) • 문법 • 첫 글자는 영문자, 또는 영문자 + 숫자 , 그리고 8자 이내 • 식별자에 대한 BNF ABC := E * 3.14 + ABC / E; <식별자> ::= <영문자> | <식별자><영문자> | <식별자><숫자> <영문자> ::= a | b | c | …. | z <숫자> ::= 0 | 1 | 2 | … | 9 첫 자가 영문자로 시작되며, 두 번째 문자부터 영문자 또는 숫자가 온다.

  28. 2. 3 문법의 표기법(계속) • EBNF를 이용한 식별자(Identifier) 표현 • 식별자의 길이가 제한 7 0 예) abc <식별자> ::=<영문자> {<영숫자>} <영문자> {<영문자>|<숫자>} <영문자> {<영문자>} - 1번 <영문자> <영문자> <영문자> - 2번  abc <식별자> ::= <영문자> {<영숫자>} <영숫자> ::= <영문자> | <숫자> <영문자> ::= a | b | c | … | y | z <숫자> ::= 0 | 1 | 2 | … | 8 | 9 7 0 <식별자> ::= <영문자> {<영숫자>} <영숫자> ::= <영문자> | <숫자> <영문자> ::= a | b | c | … | y | z <숫자> ::= 0 | 1 | 2 | … | 8 | 9 7 0 예) a5c <식별자> ::=<영문자> {<영숫자>} <영문자> {<영문자>|<숫자>} <영문자> <숫자><영문자>  a5c 7 0 7 0

  29. 2. 4 정규 언어와 유한 오토마타 • 유한 오토마타(Finite Automata : FA) • 시스템이 변화할 수 있는 상태가 유한 개 • 정규 언어를 받아들이는 인식기 어휘 분석기 Yes 인식 가능 문자열 w 유한 오토마타 No w ∈ L(T) 인식 불가능

  30. 2.4 정규 언어와 유한 오토마타(계속) • 정규 문법, 정규표현, 유한 오토마타의 관계 정규표현 정규문법 동치관계 유한오토마타 서로 변환될 수 있음

  31. 2.4 정규 언어와 유한 오토마타(계속) • 유한 오토마타(Finite Automata : FA) 표현법 • 정의에 따른 5가지 구성 요소로 사용(형식적인 방법) M = (Q, Σ, δ, q0 , F) 단, Q = 상태들의 유한 집합 Σ = 입력 기호들의 유한 집합 q0 = 시작 상태(Start State, Initial State)로 q0 ∈ Q F = 종결 상태들의 집합으로 F ∈ Q δ(델타) = 상태 전이함수(State Transition Function) 즉, Q  ∑  2Q(Q의 멱집합)

  32. 2.4 정규 언어와 유한 오토마타(계속) • 유한 오토마타(Finite Automata : FA) 표현법 • 상태 전이 함수 • Q(상태) ⅹ ∑(입력기호)  2Q (power set of Q) • 즉, δ(q, a) = {p1, p2, …, pn}는 q상태에서 입력 a를 본 • 다음 상태(next state)는 p1부터 pn중에 하나를 선택할 수 있다는 의미 • 결정적 FA(deterministic FA : DFA) • 비결정적 FA(nondeterministic FA : NFA)가 있음 • 멱집합?집합A에 대하여 A의 모든 부분집합을 원소로 하는 집합, P(A)로 쓰거나 2^A 으로 표현- 예를 들면 A={1,2} 라 하면 A의 모든 부분집합은 φ,{1},{2},{1,2} 4개가 됨. • 멱집합은 이것을 원소로 하는 집합임. 따라서 P(A)={φ,{1},{2},{1,2}}

  33. 2.4 정규 언어와 유한 오토마타(계속) • 유한 오토마타(Finite Automata : FA) 표현법(계속) • 상태 전이도(Transition Diagram)(비 형식적인 방법) • 식별자 규칙을 상태전이도로 표현 • 각 상태를 노드로 표현, 종결 상태는 이중 원으로 표현, 시작은 시작 지시선(유향 그래프) 사용 • 이동함수 δ(q, a) = p표현은 상태 q에서 p로 가는 레이블에 a인 지시선으로 표현 식별자 ABC := E * 3.14 + ABC / E; - 첫 자는 영문자, 다음부터 영자와 숫자의 조합

  34. a b c b q0 q1 q1 q1 7, a, 8 q0 q1 2.4 정규 언어와 유한 오토마타(계속) • 유한 오토마타(Finite Automata) • 상태전이도 예 Q : abc는 식별자인가? abc 는 식별자이다 Q : b7a8는 식별자인가? b7a8 는 식별자이다

  35. a b c … z 0 1 … 9 q0 q1 q1 q1 q1 …q1  …  q1 q1 q1 …q1 q1 q1 …q1 2.4 정규 언어와 유한 오토마타(계속) 유한오토마타(Finite Automata)형식적 표현 M = (Q, Σ, δ, q0 , F) 단, Q = { q0, q1 } Σ = { a, b, c, …, z, 0, 1, …, 9 } q0= q0 F = { q1} δ전이함수 위의 상태전이 함수의 형태는 결정적 유한 오토마타(Deterministic Finite Automata[DFA])와 비결정적(Nondeterministic Finite Automata[NFA])를 구분한다.

  36. 2.4 정규 언어와 유한 오토마타(계속) • 유한오토마타(Finite Automata) • 결정적 유한 오토마타(DFA) • ε에 의한 상태 전이가 없다. • δ(q, a) = ( P1, P2, ….., Pn}에서 n = 1이다. • 즉, 어떤 상태에서 하나의 입력 기호에 대해서 오직 한 개의 다음 상태가 결정된다. • 비 결정적 유한 오토마타(NFA) • ε에 의한 상태 전이가 있거나, • δ(q, a) = (P1, P2, ….., Pn}에서 n ≥ 1이다. • 즉, 어떤 상태에서 하나의 입력 기호에 대해서 다음 상태가 두 개 이상이다.

  37. 1 1 q1 q0 0 0 0 0 q2 0 1 2.4 정규 언어와 유한 오토마타(계속) NFA(Non Deterministic FA) M = (Q, Σ, δ, q0 , F) 단, Q = { q0, q1, q2 } Σ = { 0, 1 } q0= q0 F = { q2} 이해 : q0에서 입력 기호 0을 본 다음 상태는 q0와 q2가 된다. Start 하나의 입력 기호에 여러 개의 다음 상태가 나옴 구현하기도 어렵고, 구현하더라도 인식하는데 시간이 소요됨 DFA로 변환하여 사용함 상태전이도

  38. 1 0 1 q1 q0 0 q3 1 0 q2 1 0 2.4 정규 언어와 유한 오토마타(계속) 전이함수 확장 DFA(Deterministic FA) δ(q0, 1001) = δ(q1, 001) = δ(q3, 01) = δ(q1, 1) = q0∈ F 이므로 인식 M = (Q, Σ, δ, q0 , F) 단, Q = { q0, q1, q2, q3} Σ = { 0, 1 } q0= q0 F = { q0} Start Q : 문장 ‘1001’과 ‘100001’을 인식하는가? 상태전이도 하나의 입력 기호에 하나의 다음 상태가 나옴 0과 1의 개수가 짝수개인 문자열을 인식

  39. 2.4 정규 언어와 유한 오토마타(계속) NFA(Non Deterministic FA) M = (Q, Σ, δ, q0 , F) 단, Q = { q0, q1, q2, q3,q4} Σ = { 0, 1 } q0= q0 F = { q2, q4} 0/1 1 q1 1 Start 0/1 q0 q2 • δ(q1, 0) = Ø, δ(q3, 1) = Ø의 의미 • q1에서 입력 0은 없다. • q3에서 입력기호 1은 없다. 상태전이도 q3 q4 0 0 0/1

  40. 0/1 1 q1 1 NFA(Non Deterministic FA) Start 0/1 q0 q2 입력 ‘01001’ 문자열 에 대한 상태 전이 상태전이도 q3 q4 0 0/1 0 1 0 0 1 q0 q0 q0 q0 q0 q0 1 0 1 0 0 q3 q1 q3 q3 q1 0 q4 ‘01001’을 모두 본 후 나온 상태는 {q0, q1, q4} ∩ F = { q4} 그러므로, ‘01001’은 주어진 NFA에 의해 인식됨 1 q4 여러가지 경우가 있다???  NFA

  41. q2 0 0 0 0, 1 0, 1 0, 1 q0 q1 qf 1 q3 1 1 비결정적 유한 오토메타(NFA) • 다음 규칙을 지키는 언어를 정의하기 위한 전이함수 확장 NFA M = ({q0,q1,q2,q3,qf}, {0, 1}, δ, q0, {qf}) δ(q2,1)은 정의되지 않음을 의미 전이함수 상태전이도 전이함수를 확장하지 않고 상태전이도를 그대로 적용할 수도 있다.

  42. q2 0 0 0 q0 q1 qf 0, 1 0, 1 0, 1 1 q3 1 1 비결정적 유한 오토메타(NFA) • 전이 함수 확장(단계 1 : 입력으로 스트링이 오도록 확장) • δ(q, ε) = { q } • δ(q, xa) = {p∈ δ(q, x)}∪δ(p, a) , 여기서, x ∈ ∑*이고 a ∈ ∑ (입력기호)이다. • 즉, q상태에서 스트링 xa를 본다는 것은 x를 전부 본 상태에서 a를 본 상태들의 합집합과 • 같음을 의미 가능한상태를 전부 확인한 후, 해당되는 상태로 …. Q0에서는 입력 기호에 관계없이 q1, q2, q3로 전이 가능 그러나, 입려기호 1로갈수 있는 곳은 q1, q3 뿐. δ(q0, 1001) = δ(q1,001) ∪ δ(q3, 001) = δ(q1, 01) ∪ δ(q2, 01) ∪ Φ = δ(q1, 1) ∪ δ(q2, 1) ∪ δ(qf, 1) = {q1, q3, df} 둘 다 ‘1’로 도달

  43. q2 0 0 0 q0 q1 qf 0, 1 0, 1 0, 1 1 q3 1 1 비결정적 유한 오토메타(NFA) • 전이 함수 확장(단계 2 : 한 개의 상태를 여러 상태로 확장) k δ( {p1, p2, …., pk}, x) = ∪ δ(pi, x) 즉, 일련의 상태에서 스트링 x를 본다는 것은 각각의 상태에서 x를 본 상태들의 합집합과 같음을 의미 i = 1 단계 1(이전 내용) δ(q0, 1001) = δ( {q1, q3}, 001) = δ( {q1, q2}, 01) = δ( {q1, q2, qf}, 1) = {q1, q3} ∪ ø ∪{qf} = {q1, q3, qf} = δ(q1,001) ∪ δ(q3, 001) = δ(q1, 01) ∪ δ(q2, 01) ∪ Φ = δ(q1, 1) ∪ δ(q2, 1) ∪ δ(qf, 1) = {q1, q3, df}

  44. q2 0 0 0 q0 q1 qf 0, 1 0, 1 0, 1 1 q3 1 1 비결정적 유한 오토메타(NFA) • 유한 오토마타 M에 의해 인식되는 스트링 전체를 모아 놓은 집합을 M에 의해 인식되는 언어라하고, 다음과 같이 표기함 Accept : L(M) = (x | δ(q0, x) ∩ F(종결상태) ≠ Φ } Q : NFA M은 스트링 1011을 인식하는가? δ( {q0}, 1011) = δ( {q1, q3}, 011) = δ( {q1, q2}, 11) = δ( {q1, q3, qf}, 1) = {q1, qf} ∩ F ≠ø A : NFA M은 스트링 1011을 인식한다.

  45. 2.4 정규 언어와 유한 오토마타(계속) • DFA와 NFA 정리 • NFA가 DFA보다 언어의 구조를 쉽게 표현함 • 반면, 구현은 DFA가 용이 • 따라서, 서로 변환이 요구됨 변환 DFA NFA

  46. 2.4 정규 언어와 유한 오토마타(계속) • DFA와 NFA의 동치관계 • DFA와 NFA는 서로가 동등하다. • Equivalent • 정리에 대한 증명 • DFA ⊂ NFA 이므로 NFA ⊂ DFA 임을 증명해 주면 된다. • DFA는 NFA이다. 그렇다면, NFA가 DFA인가? • ε- 전이가 있는 경우, 없는 경우로 구분

  47. NFA를 DFA로의 변환 • ε전이가 없는 경우 • NFA M = (Q, ∑, δ, q0, F)에 인식되는 언어를 L이라 하면, L을 인식하는 DFA M’= (Q’, ∑’, δ’, q0’, F’)은 다음과 같이 구성됨 • Q’ = 2Q(Q의 부분 집합의 집합(Power set)) • 즉, Q’의 한 상태는 [q1,q2,…,qi]형태로 표현 • q0’ = [q0] : NFA의 시작상태와 동일 • F’ = {q ∈ Q’ | q는 F의 상태들 중에 적어도 하나를 포함하는 상태} • 전이함수 • δ( {q1,q2,…,qi}, a ) = { p1,p2,…,pj }이면, • δ’( [q1,q2,…,qi], a ) = [ p1,p2,…,pj ]이다.

  48. NFA를 DFA로의 변환(Con’t) • NFA를 DFA로 변환 (형식적) 전이함수 확장 방식(이전내용) NFA M = ( {q0,q1}, {0,1}, δ, q0, {q1} ) • Q’ 은 공집합을 제외한 2Q {q0}, {q1}, {q0,q1} • 시작상태 q0’ = [q0] • F’ 는 F의 상태들 중에 적어도 하나를 포함하는 상태  {q1}, {q0,q1} 전이 함수 δ’ : δ’([q0],0) = δ({q0},0) = {q0,q1} = [q0,q1] δ’([q0],1) = δ({q0},1) = {q0} = [q0] δ’([q1],0) = δ({q1},0) = Φ δ’([q1],1) = δ({q1},1) = {q0,q1} = [q0,q1] δ’([q0,q1],0) = δ({q0,q1},0) = {q0,q1} = [q0,q1] δ’([q0,q1],1) = δ({q0,q1},1) = {q0,q1} = [q0,q1]

  49. NFA를 DFA로의 변환(Con’t) • 상태 전이도 A B C 필요없는 상태 제거 B 0,1 0,1 1 1 1 start start 0 0 A A C C

  50. a,b Start a b b 3 1 0 2 NFA를 DFA로의 변환(Con’t) • 상태 전이도를 이용하여 변환하기(비형식적) Start [0] 1) NFA의 시작 상태가 ‘0’이므로 DFA의 시작상태는 ‘[0]’ b 1)상태’[0]’에서 ‘a’를 보고 갈 수 있는 상태는 ‘{0,1}’이고, ‘[0,1]’은 새로운 상태이므로 추가하고 지시선 추가 2)상태’[0]’에서 ‘b’를 보고 갈 수 있는 상태는 ‘{0}’이고, ‘[0]’은 기존 상태이므로 지시선만 추가 Start a [0] [0,1] 이 경우, [0,1]에서 ‘0’상태만해당 b a Start b 1)상태’[0,1]’에서 ‘a’를 보고 갈 수 있는 상태는 ‘{0,1}’이고, ‘[0,1]’은 기존 상태이므로 지시선만 추가 2)상태 ‘[0,1]’에서 ‘b’를 보고 갈 수 있는 상태는 ‘{0,2]’이고, ‘[0,2]’는 새로운 상태이므로 추가하고 지시선 추가 a [0,2] [0] [0,1]

More Related