nfa dfa 변환 예제

NFA에서 DFA 변환으로의 최악의 경우 복잡성은 상태 집합의 O(2N)입니다. DFA는 드문 경우에 NFA보다 기하급수적으로 더 많은 상태를 가질 수 있습니다. 목표는 입력 문자열을 인식하는 속도가 훨씬 빠른 주어진 비결정적 유한 자동 자동화 (DFA) 컴퓨터에서 결정적 유한 자동 타오토마타 (DFA)를 구축하는 것입니다. 각 상태가 NFA 상태 집합에 해당하는 DFA 컴퓨터를 구성하는 이 변환의 주요 아이디어입니다. 유한 오토마타는 결정적 유한 자동 (DFA)와 비 결정적 유한 오토마타 (NFA)를 두 개의 서로 다른 클래스를 포함한다. 이러한 자동화는 비결정적 유한 오토마타에서 결정론적 유한 오토마타(NFA toDFA) 변환 및 결정론적 유한 오토마타를 비결정적 유한 오토마타(DFA에서 NFA)로 변환합니다. NFA 머신의 좀 더 향상된 것은 Θ 이동이 있는 NFA(θ-NFA)가 DFA로 변환될 수 있고 그 반대의 경우도 마찬가지이다. DFA는 정규식으로 직접 변환됩니다. 아래 다이어그램은 유한 자동 변환의 모든 변환에 대해 설명합니다.

δ`(DFA의 전환 기능) 생성된 새 상태가 없기 때문에 변환이 수행됩니다. DFA의 최종 상태는 q2를 그 성분으로 가지고 있는 상태일 것이다. 즉, {q0, q2 } 도면 (1) : (NFA→ DFA) 및 (DFA→ NFA) 변환 블록 다이어그램은 아래 그림에 도시된 NDFA를 고려하자. . 2 단계 – 동등한 DFA에 대한 가능한 입력 알파벳 아래에 빈 상태 테이블을 만듭니다. 다음 알고리즘은 θ -Closure 함수의 계산을 보여줍니다. T의 모든 상태를 스택에 밀어 넣습니다. 스택이 비어 있지 않은 동안 스택이 비어 있지 않은 동안 스택이 비어 있지 않은 동안 θ-closure(T)에 없는 경우 U θ 클로저(T)를 추가하여 U+클로저(T)를 NFA에서 DFA로 푸시u 를 밀어낸다면 NFA N 언어 L. 그런 다음 DFA D 언어 L에 대해 1단계: 처음 Q` = 2단계: Q0을 Q에 추가합니다.

3단계: Q`의 각 상태에 대해 NFA의 전환 함수를 사용하여 각 입력 기호에 대해 가능한 상태 집합을 찾습니다. 이 상태 집합이 Q`에 없는 경우 Q`에 추가합니다. 4 단계: DFA의 최종 상태는 F (NFA의 최종 상태) 이동 (T, a) 포함 된 모든 상태 될 것입니다: 심볼에 T의 상태에서 NFA 전환이 있는 상태의 집합 a. 전환 테이블 TransactionD를 생성. 각 DFA 상태는 NFA 상태의 집합입니다. TRANSACTIOND는 N이 지정된 문자열에서 할 수 있는 모든 가능한 이동을 병렬로 시뮬레이션합니다. 하자, M = (Q, θ, δ, q0, F)는 언어 L(M)을 받아들이는 NFA이다. M`= (Q`, θ, q0`, δ`, F`)로 표시된 동등한 DFA가 있어야 합니다.

4 단계 – 각 가능한 입력 알파벳에 대한 상태 {Q0, Q1,… , Qn}의 조합을 알아보십시오. 4 단계: DFA에서 최종 상태는 F(NFA의 최종 상태)를 포함하는 모든 상태가 될 것이며 NFA는 주어진 입력 심볼에 대해 주어진 상태에서 0, 하나 또는 하나 이상의 이동을 가질 수 있습니다. NFA에는 NULL 이동(입력 기호 없이 이동)도 있을 수 있습니다. 반면에 DFA는 주어진 입력 심볼에서 지정된 상태에서 하나만 이동합니다. 솔루션: 지정된 전환 다이어그램의 경우 먼저 전환 테이블을 구성합니다. 3 단계 – q0 (NDFA와 동일)에 의해 DFA의 시작 상태를 표시합니다. . 2 단계 : Q`에 NFA의 q0을 추가합니다.

그런 다음 이 시작 상태에서 전환을 찾습니다. 다음은 DFA에 대한 다양한 매개 변수입니다. Q` = { q0, { q0, q1 }, { q0, q2 } } = ( a, b) F = { { q2} 및 전환 함수 δ`. 위의 NFA에 대한 최종 DFA는 그림 2에 나타내졌습니다. 참고 : 때로는 정규식을 DFA로 변환하기가 쉽지 않을 수 있습니다. 먼저 정규식을 NFA로 변환한 다음 NFA를 DFA로 변환할 수 있습니다. 3 단계 : Q`에서 각 입력 기호에 대한 가능한 상태 집합을 찾습니다. 이 상태 집합이 Q`에 없는 경우 Q`에 추가합니다. X = (Qx, δx, q0, Fx)는 언어 L (X)를 허용하는 NDFA가 될 수 있습니다.