1. DFA: DFA는 결정론적 유한 오토마톤(Deterministic Finite Automaton)을 의미합니다. 유한 오토마타(FA)는 입력 기호에 해당하는 경우 결정론적이라고 하며 단일 결과 상태, 즉 전환이 하나만 있는 경우입니다. 결정론적 유한 오토마타는 다음과 같이 표현되는 5개의 튜플 세트입니다.

어디,
Q: 유한 제어(qo, q1, q2, …)의 비어 있지 않은 유한 상태 집합입니다.
Σ: 입력 기호의 비어 있지 않은 유한 집합입니다.
δ: 두 개의 인수인 상태와 입력 기호를 사용하는 전이 함수로 단일 상태를 반환합니다.
qo: Q의 상태 중 하나인 시작 상태입니다.
F: Q에 속한 세트의 상태를 수락하는 비어 있지 않은 최종 상태 세트입니다.
2. 원인:
NFA는 비결정적 유한 오토마톤(Nondeterministic Finite Automaton)을 나타냅니다. 유한 오토마타(FA)는 동일한 입력 기호에 대해 한 상태에서 둘 이상의 가능한 전환이 있는 경우 비결정적이라고 합니다.
비결정론적 유한 오토마타도 5개의 튜플 세트이며 다음과 같이 표현됩니다.

어디,
Q: 비어 있지 않은 유한 상태의 집합입니다.
Σ: 비어 있지 않은 유한 입력 기호 세트.
δ: Q에서 상태를 취하고 Q의 하위 집합을 입력 기호로 반환하는 전이 함수입니다.
qo: NFA의 초기 상태이자 Q의 멤버입니다.
F: 비어 있지 않은 최종 상태 세트와 Q의 멤버입니다.
전제 조건 – 자동 완료
DFA와 NFA의 차이점:
| DFA | NFA |
|---|---|
| DFA는 Deterministic Finite Automata의 약자입니다. | NFA는 Nondeterministic Finite Automata의 약자입니다. |
| 알파벳의 각 기호 표현에 대해 DFA에는 상태 전환이 하나만 있습니다. | 일부 기호에 따라 NFA가 어떻게 반응하는지 지정할 필요가 없습니다. |
| DFA는 빈 문자열 전환을 사용할 수 없습니다. | NFA는 빈 문자열 전환을 사용할 수 있습니다. |
| DFA는 하나의 시스템으로 이해될 수 있습니다. | NFA는 동시에 컴퓨팅을 수행하는 여러 개의 작은 기계로 이해될 수 있습니다. |
| DFA에서는 다음으로 가능한 상태가 명확하게 설정됩니다. | NFA에서는 각 상태 및 입력 기호 쌍이 여러 가지 가능한 다음 상태를 가질 수 있습니다. |
| DFA는 구성하기가 더 어렵습니다. | NFA는 구성하기가 더 쉽습니다. |
| DFA는 수락 상태와 다른 상태로 종료되는 경우 문자열을 거부합니다. | NFA는 모든 분기가 종료되거나 문자열을 거부하는 경우 문자열을 거부합니다. |
| 입력 문자열을 실행하는 데 필요한 시간이 더 적습니다. | 입력 문자열을 실행하는 데 필요한 시간이 더 길어집니다. |
| 모든 DFA는 NFA입니다. | 모든 NFA가 DFA인 것은 아닙니다. |
| DFA에는 더 많은 공간이 필요합니다. | NFA는 DFA보다 더 적은 공간을 필요로 합니다. |
| 데드 구성은 허용되지 않습니다. 예: q0 상태에 입력을 0으로 제공하면 자체 루프로 q0에 입력으로 1을 제공해야 합니다. | 데드 구성이 허용됩니다. 예: q0 상태에 0을 입력하면 다음 상태로 이동할 q1에 다음 입력 1을 줄 수 있습니다. |
| δ: QxΣ -> Q 즉, 다음 가능한 상태는 Q에 속합니다. | δ: Qx(Σ U ε) -> 2^Q 즉, 다음 가능한 상태는 Q의 거듭제곱 집합에 속합니다. |
| DFA에서는 역추적이 허용됩니다. | NFA에서는 역추적이 항상 가능한 것은 아닙니다. |
| 정규식을 DFA로 변환하는 것은 어렵습니다. | DFA에 비해 정규식을 NFA로 변환하는 것이 더 간단합니다. |
| DFA에서는 Epsilon 이동이 허용되지 않습니다. | NFA에서는 Epsilon 이동이 허용됩니다. |
| DFA는 단일 입력 알파벳에 대해 한 번의 이동만 허용합니다. | 단일 입력 알파벳에 대해 선택(2개 이상의 이동)이 있을 수 있습니다. |