메뉴 여닫기
환경 설정 메뉴 여닫기
개인 메뉴 여닫기
로그인하지 않음
지금 편집한다면 당신의 IP 주소가 공개될 수 있습니다.

Nondeterministic Finite Automata: 두 판 사이의 차이

noriwiki
Pinkgo (토론 | 기여)
Pinkgo (토론 | 기여)
9번째 줄: 9번째 줄:
==NFA Vs. DFA==
==NFA Vs. DFA==
DFA(Deterministic Finite Automata)에서는 각 상태와 입력 심볼 쌍 (q, a)에 대해 오직 하나의 전이만 정의된다. 하지만 NFA에서는 하나의 (q,a)에 대해 여러 개의 전이가 있을 수도 있고, 전이가 전혀 없을 수도 있으며, 입력을 소모하지 않고 이동하는 ε-transition도 허용된다. 이때 수용(accept) 조건은 어떤 행운의 선택(lucky choice)"의 전이 경로라도 최종 상태에 도달하면 문자열을 accept하는 것이다.  
DFA(Deterministic Finite Automata)에서는 각 상태와 입력 심볼 쌍 (q, a)에 대해 오직 하나의 전이만 정의된다. 하지만 NFA에서는 하나의 (q,a)에 대해 여러 개의 전이가 있을 수도 있고, 전이가 전혀 없을 수도 있으며, 입력을 소모하지 않고 이동하는 ε-transition도 허용된다. 이때 수용(accept) 조건은 어떤 행운의 선택(lucky choice)"의 전이 경로라도 최종 상태에 도달하면 문자열을 accept하는 것이다.  
 
[[파일:Figure 1. NFA example .png|가운데|섬네일|500x500픽셀|Figure 1. NFA example ]]
이는 figure 1을 통해 설명할 수 있다. 주어진 NFA는 {0,1} 위의 문자열을 입력받아, 끝에서 세 번째 문자가 1인 문자열을 accept한다. 이러한 NFA는 아래와 같은 방식으로 작동한다:
이는 figure 1을 통해 설명할 수 있다. 주어진 NFA는 {0,1} 위의 문자열을 입력받아, 끝에서 세 번째 문자가 1인 문자열을 accept한다. 이러한 NFA는 아래와 같은 방식으로 작동한다:
# 계속해서 Q1에서 입력을 소비하다가,
# 계속해서 Q1에서 입력을 소비하다가,

2025년 9월 16일 (화) 07:52 판


상위 문서: Finite Automata

개요

해당 문서는 finite automata의 한 종류인 NFA(Nondeterministic Finite Automata)에 대해 설명하고, 이를 이용한 정규 언어의 정의 방식을 설명한다.

NFA Vs. DFA

DFA(Deterministic Finite Automata)에서는 각 상태와 입력 심볼 쌍 (q, a)에 대해 오직 하나의 전이만 정의된다. 하지만 NFA에서는 하나의 (q,a)에 대해 여러 개의 전이가 있을 수도 있고, 전이가 전혀 없을 수도 있으며, 입력을 소모하지 않고 이동하는 ε-transition도 허용된다. 이때 수용(accept) 조건은 어떤 행운의 선택(lucky choice)"의 전이 경로라도 최종 상태에 도달하면 문자열을 accept하는 것이다.

파일:Figure 1. NFA example .png
Figure 1. NFA example

이는 figure 1을 통해 설명할 수 있다. 주어진 NFA는 {0,1} 위의 문자열을 입력받아, 끝에서 세 번째 문자가 1인 문자열을 accept한다. 이러한 NFA는 아래와 같은 방식으로 작동한다:

  1. 계속해서 Q1에서 입력을 소비하다가,
  2. 어느 순간 "여기가 끝에서 세 번째 자리일 것"이라고 추측(guess)하고 Q2로 이동.
  3. 그 뒤 정확히 두 개 문자를 더 읽고 Q4에 도착하면 accept.
  4. 만약 모든 "선택과 추측"이 실패하면, 해당 문자열을 수용되지 않음

Formal Definition of NFA

NFA는 DFA 처럼 아래와 같은 5-튜플로 정의된다:

  • [math]\displaystyle{ Q }[/math]: 유한 상태 집합
  • [math]\displaystyle{ \Sigma }[/math]: 유한 입력 기호 집합(입력 알파벳)
  • [math]\displaystyle{ \delta }[/math]: [math]\displaystyle{ Q\times (\Sigma \cup \{\epsilon\} \rightarrow \mathcal{P}(Q)) }[/math]: 전이 함수(transition function)
    • 이는 DFA의 그것과는 다르게 “다음 상태 하나”가 아니라 “가능한 다음 상태들의 집합”을 반환한다.
    • ε-transition이 발행하여 입력 문자를 읽지 않고도 상태가 바뀔 수 있다.
  • [math]\displaystyle{ q_0 \in Q }[/math]: 시작 상태(start state)
  • [math]\displaystyle{ F \subseteq Q }[/math]: 수용 상태 집합(a set of accept states)

Formal Definition of the Language Recognized by NFA

문자열 [math]\displaystyle{ w \in \Sigma* }[/math]를 NFA [math]\displaystyle{ M }[/math]이 accept한다는 것은 아래와 같이 정의된다:

  • [math]\displaystyle{ w }[/math][math]\displaystyle{ w=y_1y_2\cdots y_n }[/math](각 [math]\displaystyle{ y_i\in \Sigma \cup \{\epsilon\} }[/math])로 분해가능하고,
  • 상태열 [math]\displaystyle{ r_0,r_1,\cdots,r_n }[/math]이 존재하여:
    • [math]\displaystyle{ r_0=q_0 }[/math] (시작 상태)
    • [math]\displaystyle{ r_{i+1} \in \delta(r_i, y_{i+1}) }[/math] (전이 규칙을 따름)
    • [math]\displaystyle{ r_n \in F }[/math] (accept 상태 도달)

이를 만족하는 모든 문자열들의 집합이 [math]\displaystyle{ L(M) }[/math]이다.

각주