1. 이번 장에서 다루는 내용
- Deterministic Finite Accepter (DFA)
- Non-deterministic Finite Accepter (NFA)
- DFA와 NFA의 공통점
2. Deterministic Finite Accepter (DFA)
2.1 Deterministic Accepters and Transition Graphs
DFA란?
- 컴퓨터란 무엇인가에 대한 가장 간단한 모델
- 많은 장치들은 DFA로 프로그래밍 되었다.(ATM, 자판기, 엘리베이터, 컴파일러 등등...)
- 관측 가능한 세상은 모두 Finite하다.
모든 오토마타와 마찬기지로, Deterministic Accepter는 내부 States, 한 State에서 다른 State로 전환하기 위한 규칙, 입력, 그리고 결정을 내릴 방법들을 가진다.
DFA의 구성요소는 다음과 같이 정리 할 수 있다.
Q는 내부 State들이다.
Σ는 Input Alphabet으로, Symbol들의 유한한 집합이다.
δ : Q x Σ -> Q 은 transition function으로, total function이다..
는 initial state다.
는 final state다.
DFA는 다음과 같은 순서로 작동한다.
처음에는 오토마타를 initial state q0상태라고 하고, 입력 스트링의 가장 왼쪽 심볼부터 처리한다(입력 메커니즘을 가장 왼쪽 심볼에 둔다.).
오토마톤(오토마타의 단수형)의 각 이동마다, 입력 메커니즘은 오른쪽으로 한 포지션씩 이동한다. 여기서 한 번의 이동에 하나의 입력 심볼을 소비한다.
스트링의 끝에 도달했을 때 오토마톤이 Final State들 중 하나에 있다면 String은 Accept 된다.
스트링의 끝에 도달했는 때 오토마톤이 Final State에 있지 않다면 String은 Reject 된다.
예를 들어,
이라고 할 때, DFA가 q0 상태이고 현재 입력 Symbol이 a이면 dfa는 q1 상태로 전환 될 것이다.
2.2 Transition Graph
오토마타는 깔끔하고 직관적으로 보여주는 것이 중요하다. Finite Automata를 시각화 하기 위해서 Transition Graph라는 것을 사용 할 수 있다.
DFA의 요소들은 Transition Graph에서 다음과 같이 표현된다.
Vertex - DFA의 State를 나타냄.
Edge - DFA의 Transition을 나타냄.
2중원 Vertex - DFA의 Final Stat을 나타냄.
Initial State는 특정 Vertex에서 출발하지 않은, 이름이 붙여지지 않은 화살표가 가르키는 Vertex로 표현된다.
DFA 을 나타내는 그래프 은 정확하게 |Q|개의 Vertex를 가지며 각각의 Vertex는 라고 이름 붙인다. q0에 매칭되는 Vertex가 Initial Vertex이고, 인 qf들은 모두 Final Vertex다.
예제)
순서대로 (States, Input Alphabet, Transition Function, Initial State, Final States)
위의 DFA는 다음과 같이 표현 할 수 있다.
출처 Formal Languages and Automata - Peter Linz
이 DFA가 01이라는 String을 입력받으면 다음의 순서로 진행된다.
q0 State에서 시작
Symbol 0를 먼저 읽게되고, 오토마톤은 q0->q0으로 이동하게 됨.
Symbol 1을 읽으면 오토마톤은 q0->q1로 이동하게 됨.
q1은 Final State이므로 01 String은 accept 된다.
같은 방식으로 00이라는 String을 입력하면 Reject된다.
2.3 Extended Transition Function
Extended Transition Function 라는 것이 있다.
의 2번째 Argument는 하나의 Symbol이 아닌 String이고, 의 값은 이 String을 읽고 난 후의 Automaton의 State를 나타낸다.
예시)
이면
이다.
을 재귀적으로 정의하기
Extended Transition Function()은 다음과 같이 정의 할 수도 있다.
예제)
다음의 Transition Graph를 보고 String w=abba 에 대해 를 계산하고 String w가 accept 되는지 판단해라.
출처 - 강의자료
풀이
q2는 Final State이므로 abba는 Accept 된다.
2.4 Language와 DFA
2.4.1 Language란?
Language는 오토마톤에 의해 Accept되는 모든 String들의 집합이다.
DFA
의 Language L은 Σ에 속하는 String들 중 M에 의해 Accept 될 수 있는 모든 String들의 집합이다.
L은 다음과 같이 표현한다.
DFA는 의모든 String을 처리 할 수 있고, 그 각각의 String들을 Accept하거나 하지 않을 수 있다.
여기서 Accept되지 않는다는 것은 DFA가 FInal State가 아닌 State에서 끝났다는 것을 의미한다.
Accept되지 않는 Language는 다음과 같이 표현한다.
한번 들어가면 빠져 나올 수 없는 State를 Trap State라고 한다.
예시)
출처 Formal Languages and Automata - Peter Linz
이 Transition Graph에서 오토마톤이 q2 State로 들어가면 빠져 나올 수 없다. 여기선 q2가 Trap State다.(Non-final Trap State)
2.5 Regular Language
모든 유한 오토마톤은 어떤 Language를 Accept한다.
어떤 유한 오토마타와 관련된 Language들을 묶어서 Family로 만들 수 있다.
DFA에 의해 Accept되는 Language들의 Fmaily는 굉장히 제한된다. DFA에 의해 Accept되는 Family의 구조와 특성에 대해서는 계속 공부해나가다 보면 알게 될 것이다.
2.5.1 Regular Language란?
어떤 Language L에 대하여 L=L(M)을 만족하는 DFA M이 존재한다면 L이 Regular하다고 한다.
그래서 Language L이 Regular 하다는 것을 증명하기 위해서는 L에 맞는 DFA를 찾아야한다.
3. Non-deterministic Finite Accepter(NFA)
Non-determinism이란 것은 오토마톤의 이동에서 하나의 선택을 의미한다. Non-deterministic하면 각 상황에서 한가지 이동을 제공하지 않고, 가능한 이동 방법 여러개를 제공한다. 이는 Transition Function가 하나의 State를 값으로 가지는 것이 아닌, 가능한 State들의 범위를 가지는 것으로 구현해낸다.
3.1 Non-deterministic Finite Accepter(NFA)란
Non-deterministic Finite Accepter(NFA)은 다음과 같이 Quintuple로 정의된다.
Q는 내부 State들이다.
Σ는 Input Alphabet으로, Symbol들의 유한한 집합이다.
은 transition function으로, total function이다.(* 2^Q는 Q의 Powerset.)
는 initial state다.
는 final state다.
Q,Σ,q0,F는 DFA와 동일하고, δ(transition function)은 다르다.
DFA와의 비교
이 정의는 DFA와 주요한 3가지 차이점이 있다.
첫째로, Non-deterministic Accepter에서, δ의 범위는 2^Q(Q의 Powerset)에 포함되기 떄문에 δ의 값은 Q의 하나의 요소가 아니라 Q의 Subset이다. 이 Subset은 Transition에 의해 만들 수 있는 모든 State들의 집합을 정의한다.
예를 들어, 현재 State가 q1이고 Symbol a를 읽어 냈을 때, δ(q1,a) = {q0,q2}라고 정의하면 q0, q2 둘 다 NFA의 다음 State가 될 수 있다.
둘째로, λ를 δ의 두번째 아규먼트로 쓸 수 있다.
이 말은 NFA는 Input Symbol을 소모하지 않고도 Transition을 일으킬 수 있다는 뜻이다. 지금까지 입력 메커니즘이 오른쪽으로만 이동 할 수 있는 줄 알았지만, 오토마톤이 이동해도 입력메커니즘은 움직이지 않는 경우도 있다.
마지막으로, NFA에서 δ(qi,a)의 집합이 비어있을 수도 있다. 그런 경우에는 Transition이 하나도 정의되지 않은 경우다.
DFA와 마찬가지로, Non-deterministic Accepter는 Transition Graph로 표현 할 수 있다. Vertex들은 Q에 의해 결정되고, a라는 이름의 Edge(qi,qj)는 δ(qi,a)가 qj를 포함할 때 Edge로 그래프에 포함된다.
그리고 a는 빈 스트링일 수도 있으니까 λ라는 이름의 Edge도 존재 할 수 있다.
NFA에서 스트링이 Accept되는 조건
NFA에서 어떤 스트링을 따라 머신을 이동하는 여러 경우의 수들 중 스트링의 끝에 머신을 Final State에 가게 만드는 경우의 수가 있다면 그 스트링으 Accept되고, 그런 경우가 없다면 Reject된다.
Transition Function 확장
NFA에서도 Transition Function은 확장 될 수 있다. 그래서 확장된 Transtion Function의 두번째 아규먼트는 String이다.
확장된 Transition Function인 에 대하여 를 수행한 결과로 오토마톤이 될 수 있는 모든 State들의 집합을 Qj라고 하고, 가 qi부터 시작되고 w 스트링을 읽는다고 하면 다음과 같이 표현한다.
예제)
다음의 Transition Graph를 보고 NFA의 Transition Function들을 정의해라.
출처 Formal Languages and Automata - Peter Linz
정답)
풀이)
을 살펴보자면, q2->q0로의 λ 라는 이름의 Transition이 존재한다. 그러므로 는 q0를 포함한다.
그리고 어떤 State든지 자기자신에서 움직이지 않고 머무를 수 있는데, 그 때는 Input Symbol을 소모하지 않는다. 그러므로 는 q2도 포함한다고 할 수 있다.
따라서
을 살펴보자면,
λ-λ-a-λ-λ 순으로 q1->q2->q0->q1->q2->q0 로 갈 수 있으니 q0를 포함한다.
λ-λ-a 순으로 q1->q2->q0->q1 로 갈 수 있으므로 q1를 포함한다.
λ-λ-a -λ 순으로 q1->q2->q0->q1->q2 로 갈 수 있으니 q2를 포함한다.
따라서
Languages Accepted By NFA
NFA 에 의해 Accept되는 Language L은 다음과 같이 정의 할 수 있다.
4. DFA와 NFA의 동일함(Equivalence of DFA and NFA)
DFA와 NFA는 어떤 점에서 다른가?
물론 둘은 정의에서 부터 차이가 있다. 하지만 그 사실이 그 둘의 근본적인 차이가 있다는 의미는 아니다. 이 질문에 답하기 위해 오토마타 사이의 Equivalence라는 컨셉을 소개한다.
정의
두 유한 Accepter M1과 M2가 둘 다 같은 Language를 Accept하면 Equivalent하다고 한다.
즉, 다음을 만족하면 M1과 M2는 동일하다.
Powerful
어떤 종류의 오토마톤이 다른 어떤 오토마톤으로도 달성 할 수 없는 것을 할 수 있는 오토마톤을 Powerful하다고 한다.
DFA와 NFA를 비교해보면, 둘은 동등하게 Powerful하다.
DFA는 NFA에 규칙을 더한 것이 때문에, DFA에 의해 Accept되는 String을 Accept 하는 NFA가 반드시 존재한다. 그 반대로 NFA에 의해 Accept되는 String을 Accept하는 DFA도 반드시 존재한다.
그러니 모든 DFA, NFA에 대해 DFA->NFA, NFA->DFA로의 변경이 가능하다.
NFA->DFA 전환
NFA를 DFA로 전환하려면 NFA의 Transition Graph로 다음의 과정을 따라가면 된다.
심볼을 따라 그래프를 따라간다.
Non-deterministic Transition에 대한 새로운 State를 추가한다.
부족한 Edge들을 추가한다.
Final State를 포함하는 State들은 Final State로 한다.
5. Finite Automata에서 State의 수 줄이기
State의 수를 줄이려면 다음의 과정을 따라가면 된다.
State를 Final State와 Non-final State로 나눈다.
Transition들을 계산하고 식별불가능한 State들은 나눈다.
더이상 나눌 필요가 없어질때까지 2번 과정을 반복한다.
레퍼런스
Formal Languages and Automata - Peter Linz
강의자료
'수학 > 오토마타' 카테고리의 다른 글
1장 Introduction to the Theroy of Computation (0) | 2019.04.08 |
---|