기타/암호학

[암호학] 9. Non-Deterministic Finite Automata (NFA)

riroan 2022. 12. 27. 00:00

NFA (Non-Deterministic Finite Automata)

이번엔 "비결정적 유한 오토마타"이다.

역시 상태는 유한하지만 입력이 들어오면 이동할 상태가 비결정적이라는 뜻이다.

NFA는 다음으로 이루어져있다.

M=(Q,Σ,q,F,s)

  • Q : NFA상태들의 집합
  • Σ : 입력받은 String
  • q : 초기상태 (qQ)
  • F : AC를 받는 상태들의 집합(FQ, 여러개 가능)
  • s : Transition Relation

DFA와 대부분 같은데 s의 의미만 다르다.

DFA는 이동할 상태가 결정적이기 때문에 경로가 유일하지만 NFA는 모든 경로로 이동을 할 수 있기 때문에 Relation이라는 용어를 쓰는 것 같다.

 

Problem X3 를 DFA로 그리면 다음과 같았었다.

X3 DFA

이것을 NFA로 나타내면 다음과 같다.

X3 NFA

뭔가 굉장히 단순해졌다.

여기에 X3을 AC하는 1010을 넣어보자.

1. 12344

2. 11111

3. 11123

같이 여러 경로가 가능할 것이다.

그 중에서 AC를 받을 수 있는 경로는 1번 경로만 가능하다.

 

위에서 봤듯이 NFA는 여러개의 경로를 시뮬레이션 하면서 한 가지 경로라도 AC를 받으면 NFA가 문제를 해결했다고 볼 수 있다.

 

당연히 DFA보다 많은 시간이 필요할 것 같은데 왜 사용할까?

우선 DFA보다 간략하기 때문에 생각하기 쉽다.

그리고 NFA로 나타낼 수 있다면 DFA로 나타낼 수 있다.

 

그래서 어떤 문제를 보면 NFA로 나타내보고 DFA로 바꾸는게 쉽다.