[오토마타] 2. 유한 비결정적 오토마타(NFA, Non-deterministic Finite Automata)

2025. 10. 9. 16:00·개인 공부

NFA

DFA의 전이함수 δ는 가능한 모든 상태와 알파벳에 대하여, 하나의 다음 상태를 반환한다고 했다. 이 특징은 DFA의 이름에 들어간 "Deterministic(결정적인)" 이라는 수식어에서도 알 수 있다. 반면 "Non"-deterministic한 유한 오토마타인 NFA(Nondeterministic Finite Automata)의 전이함수 δ는 반환값이 하나가 아닌 여러개이거나, 0개일수도 있다.

Figure 1. NFA diagram, 출처 [1]

위 diagram의, $q_0$에서 뻗어나오는 화살표를 보자. 0이라는 입력에 대해 두 개의 화살표로 뻗어나오고 있다. 반면 $q_1$의 경우, 0이라는 입력에 대해 어떤 뻗어나오는 화살표도 찾아볼 수 없다. 위 오토마타에 "00101"이라는 입력이 들어왔을 때를 생각해보자. 이제는 상태변화가 한 줄기가 아니라, 여러 가지로 갈라지는 트리의 모습으로 나타난다. 더 이상 뻗어나갈 수 없는 stuck 상태도 확인하자. 그리고, "00101"로부터 도달한 상태들 중 하나가 최종 상태(final state)인 $q_2$이므로, 이 오토마타는 "00101"을 수용한다.

Figure 2. computation history of NFA is tree


NFA는 때로는 ε를 입력으로 허용하기도 한다. Figure 3의 오토마타는 $q_1$에서 $q_3$로 전이할 때, ε을 허용한다. 입력이 'b'라면, $q_1 \to q_2$도 당연히 가능하지만, $q_1 \to q_3 \to \text{(stuck)}$의 computation history도 가능하다.

 

나중을 위해, ε-closure의 개념을 소개한다. 어떤 상태 q로부터 ε 전이만을 이용해서 도달가능한 상태들의 집합을 의미한다. 예를 들어, Figure 3에서 $q_1$의 ε-closure는 $\{q_1, q_3\}$이다. 반면, $q_2$는 가능한 ε 전이가 없어, $q_2$의 ε-closure는 자기 자신 뿐인 $\{q_2\}$다. 이것을 $ext(q_2)=\{q_2\}$ 로 표기하기로 한다.

 

※ [2]에서는 NFA에서 ε의 입력을 허용하지만, [1]에서는 ε의 입력을 허용하고, nondeterministic한 유한 오토마타를 ε-NFA라는 이름으로 구분하고 있다. 달리 말하면, [1]은 NFA의 ε를 허용하지 않으며, NFA를 ε-NFA의 부분집합으로 여긴다. 필자는 [2]의 흐름대로 ε-NFA와 NFA를 구분하지 않고 동일하게 다룬다.

Figure 3. NFA diagram, 출처 [2]


 

엄격한 정의

DFA와는 다른 것은 δ의 정의뿐이다. NFA의 전이함수 δ에는 알파벳 뿐만 아니라, ε 또한 입력이 가능하다. 그리고 출력은 Q의 부분집합들의 집합, 즉, 멱집합(power set)이다. 예를 들자면, Figure 3의 $q_2$에서 'a'에 대응하는 화살표는 두 개이므로, $\delta(q_2, a) = \{q_2, q_3\}$ 라고 표현할 수 있다. 반면 $q_1$에서는 $delta(q_1, a) = \phi%다. 그리고, 어떤 NFA N이 인식하는 언어는 아래와 같이 정의된다. Figure 2에서 $\delta(q_0, 00101)=\{q_0, q_2\}$이었고, F의 원소인 $q_2$를 포함했으니, 00101은 '수용'임을 떠올리면, 아래의 정의를 이해할 수 있다.

저작자표시 (새창열림)

'개인 공부' 카테고리의 다른 글

[오토마타] 0. 목차  (0) 2025.11.27
[오토마타] 4. 정규표현식(Regular Expression)  (0) 2025.10.09
[오토마타] 1. 유한 결정적 오토마타(DFA, Deterministic Finite Automata)  (0) 2025.09.29
[전산기조직] 메모리 계층 구조(Memory Hierarchy)  (1) 2025.06.16
[전산기조직] 프로세서(The Processor)  (0) 2025.06.16
'개인 공부' 카테고리의 다른 글
  • [오토마타] 0. 목차
  • [오토마타] 4. 정규표현식(Regular Expression)
  • [오토마타] 1. 유한 결정적 오토마타(DFA, Deterministic Finite Automata)
  • [전산기조직] 메모리 계층 구조(Memory Hierarchy)
준별
준별
  • 준별
    준별개발
    준별
  • 전체
    오늘
    어제
    • 분류 전체보기 (58)
      • 개발이야기 (25)
        • 토막글 (11)
      • 일상이야기 (6)
      • 개인 공부 (23)
      • 생각과 기록 (2)
  • 블로그 메뉴

    • 홈
    • 방명록
    • Github
    • Linkedin
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    zsh-autosuggestion
    맥북
    persistent connection
    nodejs
    데이터베이스
    http1.0
    터미널꾸미기
    정보보호개론
    artillery
    전산기조직
    nestjs
    http3.0
    http1.1
    맥북터미널세팅
    조합형
    맥북초기세팅
    powerlevel10k
    클램쉘
    k9s
    Zsh
    http2.0
    zsh세팅
    바이브코딩
    터미널세팅
    이산구조
    데스크셋업
    http pipelining
    필수툴
    실전압축
    맥북세팅
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.5
준별
[오토마타] 2. 유한 비결정적 오토마타(NFA, Non-deterministic Finite Automata)
상단으로

티스토리툴바