Generalized NFA

youngwiki
Pinkgo (토론 | 기여)님의 2025년 9월 29일 (월) 01:25 판 (Acceptance by a GNFA)

상위 문서: Finite Automata

개요

Generalized NFA(GNFA)는 전이(transit)을 의미하는 화살표가 단일 문자 대신 정규표현식으로 라벨링된 NFA를 의미한다.

Definition of GNFA

GNFA는 NFA를 확장한 개념이며, 아래와 같은 5-tuple로 정의된다:

  1. Q: 유한한 상태 집합
  2. Σ: 입력 알파벳
  3. δ: 전이함수, 이때 전이는 정규 표현식을 통해 라벨링된다.
  4. qstart: 시작 상태
  5. qend: 종료 상태

이때, 아래와 같은 제약이 존재한다고 가정하자:

  • qstartqaccept
  • qstart is a "source".[1]
  • qend is a "sink".[2]
  • qstart,qend 외의 모든 상태 쌍 (q,r)에 대해 전이는 하나의 정규표현식으로 라벨링된다.
  • 예외적으로, 어떤 GNFA에 대해 Q={qstart,qend}라면, qstartqaccept 사이의 전이에 대한 라벨이 정규표현식 R이며, 이에 대한 언어는 L(R)이다.

Acceptance by a GNFA

GNFA가 wΣ*를 인식한다는 것은 아래의 조건을 만족하는 경우이다:

  • 문자열 ww1w2wk와 같이 분해할 수 있다.
  • 경로 q0,q1,,qk가 존재하여
    1. q0=qstart
    2. qk=qaccept
    3. wiL(Ri)s.t.Ri=δ(qi1,qi)

즉, 이는 전이가 단순 문자 대신 정규표현식 Ri로 라벨링되어 있기 때문에, 해당 전이를 통과할 때는 입력 문자열 조각 wi가 반드시 그 정규표현식이 표현하는 언어 안에 있어야 한다.

NFA to GNFA

GNFA는 기본적으로 전이가 정규표현식으로 라벨링된 NFA일 뿐이므로, NFA가 주어지면 그와 동치인 GNFA로 치환할 수 있다. 이때 치환을 하는 절차는 아래와 같다.

  1. GNFA는 반드시 하나의 source와 하나의 sink를 가져야 하므로, qstartqaccept를 추가한다.
  2. qstart와 원래의 시작 상태에 대해 ε-transition을 한다.
    • 이는 δ(qstart,q0)와 같이 표현되며, 다른 상태로는 전이되지 않는다.
  3. qaccept와 원래의 accept 상태 qjF에 대해 ε-transition을 한다.
    • 이는 qjF.δ(qstart,qj)와 같이 표현되며, 다른 상태로는 전이되지 않는다.
  4. 중복 전이 제거: 같은 두 상태 사이에 전이가 여러개 있으면 합집합()으로 묶어서 하나로 만든다.
  5. 존재하지 않는 전이는 와 같이 표현한다.

각주

  1. 해당 상태에 대해 들어오는 간선이 없다는 것을 의미한다.
  2. 해당 상태에서 출발하는 간선이 없다는 것을 의미한다.