검색 여닫기
검색
메뉴 여닫기
555
262
4
6.2천
noriwiki
둘러보기
대문
최근 바뀜
임의의 문서로
미디어위키 도움말
특수 문서 목록
파일 올리기
환경 설정 메뉴 여닫기
notifications
개인 메뉴 여닫기
로그인하지 않음
지금 편집한다면 당신의 IP 주소가 공개될 수 있습니다.
user-interface-preferences
한국어
개인 도구
로그인
Finite Automata 문서 원본 보기
noriwiki
문서 공유하기
다른 명령
←
Finite Automata
문서 편집 권한이 없습니다. 다음 이유를 확인해주세요:
요청한 명령은 다음 권한을 가진 사용자에게 제한됩니다:
사용자
.
문서의 원본을 보거나 복사할 수 있습니다.
[[분류:계산 이론 개론]] [[분류:컴퓨터 공학]] 상위 문서: [[계산 이론 개론#Finite Automata|계산 이론 개론]] ==개요== Finite Automaton<ref>단수형이 automaton, 복수형이 automata이다.</ref>은 유한한 메모리를 가진 단순한 계산 장치를 수학적으로 모델링한 것이며, FSM(Finite State Machine)의 가장 기본적인 형태이다. 이는 단순한 계산 장치이며, "유한 메모리"이기 때문에 무한한 기억이나 복잡한 연산이 불가능하고, 오직 현재 상태와 입력에 따라 동작만 결정된다는 특징이 있지만, 다양한 활용 분야를 가지고 있다. 예를 들어 자판기, 엘리베이터, 가전제품과 같은 단순 동작 장치들은 모두 finite automata로 모델링될 수 있다. 이들은 현재 상태(예: 금액 투입 상태, 층 수, 전원 상태)에 따라 행동을 정한다. 또한 텍스트 에디터, 스팸 필터, 검색 엔진, 컴파일러 등은 문자열 패턴 매칭 문제를 해결하기 위해 해당 원리를 사용한다. 중요한 것은 모든 실제 컴퓨터도 유한한 메모리를 가지므로, 이론적으로는 finite automaton이라고 볼 수 있다. ==Finite Automata as Language Recognizers== Finite automata는 문자열(언어)을 인식하는 기계로 이해할 수 있으며, 이는 아래와 같은 구성 요소로 이뤄 진다: * Finite Control: 현재 내부 상태를 저장하는 장치. * Input Tape: 기계에 주어지는 입력 문자열이 있는 테이프. * Read Head: 입력 테이프에서 현재 어떤 위치(문자)를 읽고 있는지 가리키는 지시자. 이러한 finite automata는 아래와 같은 단계를 거쳐 작동한다: # 문자열을 왼쪽에서 오른쪽으로 차례대로 한 글자씩 읽음. # 각 단계에서 finite control이 현재 상태와 입력 문자에 따라 "다음 상태"를 결정. # 입력 문자열 끝까지 다 읽으면, current state에 따라 문자열을 수용(accepted) 또는 거부(rejected). 이때 어떤 finite automaton이 수용하는 모든 문자열 집합을 그 automaton이 인식(recognize)하는 언어라고 부른다. ===State Diagrams=== [[파일:Figure 1. State Diagram.png|섬네일|Figure 1. State Diagram]] Finite automata는 상태 다이어그램(state diagram) 으로 시각적으로 표현할 수 있다. 이는 figure 1과 같이 표현된다. Figure 1에 나타난 예시 상태 다이어 그램을 해석하면 아래와 같다. * Q1: 시작 상태, 입력 0이 들어오면 Q1에 머무름, 1이 들어오면 Q2로 이동. * Q2: 수용 상태, 입력 1이면 Q2에 머무르고, 0이면 Q3으로 이동. * Q3: 수용 상태 아님, 입력(0,1) 모두 다시 Q2로 돌아감. 즉, 해당 finite automata는 마지막 입력이 1, 혹은 0이 문자열 끝에 짝수개 만큼 있으면 해당 문자열을 수용한다. ===Formal Definition of Finite Automaton=== DFA(Deterministic Finite Automaton)은 아래와 같은 5-튜플(<math>Q, \Sigma, \delta, q_0, F</math>)로 정의할 수 있다: * <math>Q</math>: 유한 상태 집합 * <math>\Sigma</math>: 유한 입력 기호 집합 * <math>\delta</math>: <math>Q\times \Sigma \rightarrow Q</math>: 전이 함수(transition function), 현재 상태와 입력 기호를 다음 상태로 매핑 ** <math>Q\times \Sigma</math>는 상탱 집합과 알파벳 집합의 모든 가능한 쌍이며, 전이 함수 <math>\delta</math>는 이 쌍을 받아서 새로운 상태로 매핑하는 역할을 한다. 이때 전이 함수는 모든 (state, input) 쌍에 대해 하나의 출력만 존재해야 한다. 따라서 결정적(deterministic)이라고 한다. * <math>q_0 \in Q</math>: 시작 상태(start state) * <math>F \subseteq Q</math>: 수용 상태 집합(accept states) 이를 통해서 DFA M이 수용하는 어떤 문자열 집합 <math>w = w_1w_2\cdots w_n</math>일 때, <math>M = (Q, \Sigma, \delta, q_0, F)</math>이 <math>w</math>를 "수용"한다는 것은 아래와 같이 정의된다. 어떤 순열 <math>r_0r_1r_2\cdots r_n</math>이 존재하여 아래의 조건을 만족한다. 1. 시작 상태: <math>r_0 = q_0</math> 2. 각 단계에서 <math>\delta(r_i, w_{i+1}) = r_{i+1}, i = 0,1,\cdots,n-1</math> 3. <math>r_n \in F</math>: 문자열을 다 읽은 뒤 마지막 상태 <math>r_n</math>이 수용 상태 집합에 포함 이를 바탕으로 위 조건을 만족하는 문자열 <math>w</math>들의 집합은 M이 인식하는 언어(language recognized by M)이며, 아래와 같다: <math>L(M) = \{w\in \Sigma^*|M\,\, accepts\,\, w\}</math> 이러한 언어는 [[Regular Languages|정규 언어(regular language)]]라고 정의된다. 정규 언어에 대한 자세한 내용은 [[Regular Languages]] 문서를 참조해 주십시오. ==[[Nondeterministic Finite Automata]]== 자세한 내용은 [[Nondeterministic Finite Automata]] 문서를 참조하십시오. ==Other Ways to Model Computing Devices== 유한 오토마타를 언어 인식기(language recognizer)로만 인식할 수 있는 것은 아니며, 아래와 같이 간주할 수 있다: # Language generators: 입력을 소비(consuming)하는 대신 기호를 생성(emitting)하는 모델. # Transducers: 기호를 읽으면서 동시에 다른 기호를 출력. # Interactive: 환경과 상호작용(interaction)하면서 동작하는 오토마타. ==각주==
Finite Automata
문서로 돌아갑니다.