FSM: Finite State Machine
•
유한 상태 기계란 객체의 상태 제어를 위해 유한한 개수의 상태(State)를 가지며, 그것들을 관리하는 추상 기계이다.
•
시스템이 유한한 개수의 상태 중 하나에 존재하며, 입력에 따라 상태가 전이되는 방식
•
흔히 게임에서는 간단한 AI를 구현하는데 사용된다.
구성 요소
•
State : 사물이나 생물이 가질 수 있는 어떤 추상적 상태를 의미. ex(사람의 경우 밥먹는 중, 걷는 중, 신호등의 경우 노란불 빨간불 등)
•
Transition : 하나의 State에서 다른 State로 전이하기 위한 연결선이자 조건. 즉, State와 State간의 연결을 의미한다.
•
StateMachine : State와 Transition을 종합적으로 관리하는 추상 기계
기본 개념
•
상태(State): 시스템이 존재할 수 있는 유한한 상태들의 집합.
•
입력(Input): 외부로부터 시스템에 주어지는 신호나 이벤트.
•
전이(Transition): 현재 상태에서 특정 입력에 의해 다른 상태로 이동하는 규칙.
•
초기 상태(Initial State): FSM이 시작할 때의 상태.
•
종료 상태(Final/Accepting State): 특정 조건을 만족할 때의 상태 (필수는 아님).
유형
•
결정적 유한 상태 기계(DFA, Deterministic Finite Automaton): 각 상태에서 특정 입력에 대해 하나의 전이만 존재.
•
비결정적 유한 상태 기계(NFA, Nondeterministic Finite Automaton): 각 상태에서 특정 입력에 대해 여러 개의 전이가 가능하거나, ε-전이(입력 없이 상태 전이)를 허용.
활용 사례
게임 AI
•
먼저 간단하게 게임 AI에서 활용되는 사례를 알아 보자.
•
게임 내 NPC(Non-Player Character)의 행동을 제어하기 위해 FSM이 사용되는데,
•
예를 들어, NPC가 순찰, 추적, 공격, 도망 등의 상태를 가질 수 있으며, 플레이어의 행동에 따라 상태가 전이된다.
•
각 전이 과정은 다음과 같이 이루어진다.
◦
상태: 순찰 → 입력: 플레이어 발견 → 상태: 추적
◦
상태: 추적 → 입력: 플레이어 도망 → 상태: 순찰
◦
상태: 추적 → 입력: 공격 범위 진입 → 상태: 공격
◦
상태: 공격 → 입력: 체력 저하 → 상태: 도망
자연어 처리(NLP)
•
문장의 구문 구조를 분석하는 데 FSM 사용
•
특히, 간단한 문법 규칙을 가진 언어의 파싱에 유용하다.
•
각 전이 과정은 다음과 같이 이루어진다.
◦
상태: 시작 → 입력: 명사 → 상태: 명사 상태
◦
상태: 명사 상태 → 입력: 동사 → 상태: 동사 상태
◦
상태: 동사 상태 → 입력: 명사 → 상태: 완성 상태
음성 인식
•
사용자의 음성 명령을 인식하고 처리하기 위해 FSM 활용
•
예를 들어, 스마트 홈 디바이스가 "불 켜줘"라는 명령을 인식할 때 FSM을 사용하여 명령을 해석
•
각 전이 과정은 다음과 같이 이루어진다.
◦
상태: 대기 → 입력: "불" → 상태: 불 관련 입력 대기
◦
상태: 불 관련 입력 대기 → 입력: "켜줘" → 상태: 불 켜기