본문 바로가기

CSE/Automata Theory

(6)
[Automata Theory] DFA = NFA DFA = NFA 우선, DFA가 만들 수 있는 언어는 모두 NFA로도 만들 수 있다. 이는 정의에 의해 자명하다. 그렇다면 여기서 당연히 NFA가 만들 수 있는 언어는 모두 DFA로도 만들 수 있는지에 대한 궁금증이 생긴다. 결론부터 말하면 맞다. 이를 증명하기 전에, 앞서 보았던 NFA 하나를 DFA로 바꿔보자. 위 NFA를 $M$이라고 하면 $M=(\{q_0, q_1, q_2\}, \{0, 1\}, \Delta, q_0, \{q_2\})$이다. $\Delta$의 함숫값을 구하면 $\Delta^*(q_0, 0) = \{q_0\}$ $\Delta^*(q_0, 1) = E(\Delta(q_0, 1)) = \{q_0, q_1, q_2\}$ $\Delta^*(q_1, 0) = \Delta^*(q_1, 1) ..
[Automata Theory] Nondeterministic Finite Automata What is Nondeterministic Finite Automata? 비결정 유한 오토마타(Nondeterministic Finite Automata, 일명 NFA)는 DFA의 확장 버전이다. 결정과 비결정이 말하는 것은 상태인데, DFA는 특정 상태에서 특정 알파벳을 읽었을 때 다음 상태가 '결정'되는 반면, NFA는 다음 상태가 하나 이상일 수도 있고, 알파벳을 읽지 않고도 상태가 전이될 수 있다 ($\epsilon$에 의한 전이). 이제 NFA 역시 엄밀하게 정의해보자. Definition NFA $M$은 5가지의 구성 요소가 있어 $\boldsymbol{M=(Q, \Sigma, \Delta, q_0, F)}$이다. 이때 각 요소들은 $Q$ : 상태 집합 (유한집합) $\Sigma$ : 알파벳..
[Automata Theory] Deterministic Finite Automata What is Deterministic Finite Automata? 결정 유한 오토마타(Deterministic Finite Automata, 일명 DFA)는 가장 간단한 버전의 컴퓨터라고 할 수 있다. 비록 메모리가 없어 값들을 기억하진 못하지만 기계 내부에 상태가 있고, 값을 읽을 수 있으며, 상태 또한 전이가 가능하다. 실제 이런 기계는 존재하지는 않지만 존재한다면 아래의 그림과 비슷할 것이다. 기계는 테이프에 적혀있는 알파벳을 읽게 되는데, 가장 왼쪽부터 읽어가며 한칸씩 오른쪽으로 움직인다. 동시에 기계의 상태는 계속 바뀐다. 실제 컴퓨터도 instruction을 차례로 읽으면서 수행하고, 내부의 상태(register, memory, etc.)를 바꿔간다는 것을 생각해볼 때, 정말 컴퓨터와 비슷..
[Automata Theory] Regular Expression What is Regular Expression? 정규식(Regular Expression, 일명 Regex)은 웹개발을 해보았거나 코딩을 어느정도 해보았다면 익숙한 개념일 것이다. 이번에는 가장 기초적인 정규식을 정의해보고, 이로 인해 만들어지는 정규언어에 대해 알아보자. 엄밀히, 정규식은 언어를 식으로 표현하는 방법이다. $\Sigma$상의 정규식 $r$이 표현하는 언어를 $L(r)$이라고 하면 정규식은 다음과 같이 귀납적(inductive)하게 정의할 수 있다. $\boldsymbol{\phi}$는 정규식이고 $L(\boldsymbol{\phi})=\phi$이다. $\boldsymbol{\epsilon}$은 정규식이고, $L(\boldsymbol{\epsilon})=\{\epsilon\}$이다. 모..
[Automata Theory] Language 언어(Language)라는 개념은 우리에게도 굉장히 친숙한 개념이다. 늘 사용하는 것이 언어이고 이 글도 언어의 한 종류인 한국어와 영어로 쓰여진 무언가 이다. 그렇다면 언어의 정의는 무엇일까? 우선, 언어를 정의하기 위해서는 '알파벳'과 '스트링'이라는 것이 필요하기에 이들을 먼저 알아보자. 1. 알파벳 $\Sigma$는 문자들의 Finite Set이다. 예를 들어, 영어의 경우 $\Sigma=\{a, b,\cdots,z\}$이고, 이진수의 경우 $\Sigma=\{0,1\}$이다. 2. 스트링은 알파벳 $\Sigma$에 속해있는 문자들의 유한한 나열이다. 예를 들어, "abcd"는 $\Sigma=\{a, b,\cdots,z\}$상의 스트링이다. 3. $\Sigma$상의 모든 스트링의 집합은 $\Sigm..
[Automata Theory] Introduction What is Automata? 오토마타는 그리스어 'αὐτόματα'에서 유래한 말로 한국어로 번역하면 "자동 기계"라는 뜻을 가지고 있다. 정확히는 오토마타는 복수형이고, 단수형은 오토마톤(Automaton)이다. 이 자동 기계는 상태를 가지고 있고, 입력을 받을 수 있고, 특정 규칙에 따라 작동하며 메모리를 가질 수도 있다. 무언가 현재의 컴퓨터와 유사한 부분이 많다는 생각이 들지 않는가? 정확하다. 오토마타는 이론적으로 추상화된 컴퓨터라고 할 수 있다. (사실 컴퓨터가 오토마타 이론에서부터 출발한 것이므로 오토마타를 구현한 것이 컴퓨터라고 해야 맞다.) Why Automata Theory? 오토마타 이론(Automata Theory)은 말 그대로 오토마타와 그로부터 유도되는 문제 등을 연구하는 학..