Nondeterministic Finite Automata

youngwiki
Pinkgo (토론 | 기여)님의 2025년 9월 16일 (화) 08:15 판 (Proof for Closure)


상위 문서: 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

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

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

Formal Definition of NFA

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

  • Q: 유한 상태 집합
  • Σ: 유한 입력 기호 집합(입력 알파벳)
  • δ: Q×(Σ{ϵ}𝒫(Q)): 전이 함수(transition function)
    • 이는 DFA의 그것과는 다르게 “다음 상태 하나”가 아니라 “가능한 다음 상태들의 집합”을 반환한다.
    • ε-transition이 발행하여 입력 문자를 읽지 않고도 상태가 바뀔 수 있다.
  • q0Q: 시작 상태(start state)
  • FQ: 수용 상태 집합(a set of accept states)

Formal Definition of the Language Recognized by NFA

문자열 wΣ*를 NFA M이 accept한다는 것은 아래와 같이 정의된다:

  • ww=y1y2yn(각 yiΣ{ϵ})로 분해가능하고,
  • 상태열 r0,r1,,rn이 존재하여:
    • r0=q0 (시작 상태)
    • ri+1δ(ri,yi+1) (전이 규칙을 따름)
    • rnF (accept 상태 도달)

이를 만족하는 모든 문자열들의 집합이 L(M)이다.

Proof for Closure

NFA를 이용하여 정규 언어의 기본 연산 폐쇄성(closure)를 증명할 수 있다.

Closure under Union

증명해야 하는 것은 아래와 같다:

Figure 2. Closure under Union
Figure 2. Closure under Union
A1,A2.(A1regularA2regular)(A1A2regular)
  1. 이를 위해 A1,A2를 인식하는 NFA N1,N2가 있다고 가정하자.
  2. 새로운 NFA N을 하나 만든다.
  3. N은 새로운 시작 상태 q0를 갖고, 여기서 ε-transition으로 N1,N2의 시작 상태로 이동한다.
  4. 그러면 NN1 혹은 N2 중 하나를 실행하여 문자열을 수용한다.
  5. 따라서 N이 인식하는 언어는 정확히 A1A2이다.

Closure under Concatenation

증명해야 하는 것은 아래와 같다:

Figure 3. Closure under Concatenation
A1,A2.(A1regularA2regular)(A1A2regular)
  1. 이를 위해 A1,A2를 인식하는 NFA N1,N2가 있다고 가정하자.
  2. 새로운 NFA N을 하나 만든다.
  3. NN1의 시작 상태에서 시작한다.
  4. 그리고 N1의 accept된 상태들에서 ε-transition을 통해 N2의 시작 상테로 넘어간다.
  5. 이 경우 N은 먼저 A1에 속하는 문자열을 인식하고, 그 다음 A2의 문자열을 인식한다.
  6. 따라서 NA1A2를 인식하게 된다.

Closure under Star

증명해야 하는 것은 아래와 같다:

Figure 4. Closure under Star
A*AA*
  1. 이를 위해 A를 인식하는 NFA N이 있다고 가정하자.
  2. A*를 인식하는 NFA N을 만든다.
  3. N은 새로운 시작 상태와 새로운 accept 상태를 가진다.
  4. 새 시작 상태에서 ε-transition으로 바로 N의 시작 상태나, 또는 새 accept 상태로 갈 수 있다.(→ 빈 문자열도 받아들임)
  5. N의 accept 상태들은 다시 ε-transition을 통해 N의 시작 상태나 최종 accept 상태로 갈 수 있다. (→ 여러 번 반복 가능)

각주