logo

NFA에서 DFA로 변환

이 섹션에서는 NFA를 동등한 DFA로 변환하는 방법에 대해 설명합니다. NFA에서는 현재 상태에 특정 입력이 제공되면 기계가 여러 상태로 전환됩니다. 주어진 입력 기호에 대해 0개, 1개 또는 2개 이상의 움직임이 있을 수 있습니다. 반면, DFA에서는 현재 상태에 특정 입력이 주어지면 기계는 한 가지 상태로만 이동합니다. DFA는 주어진 입력 기호에 대해 한 번만 이동합니다.

M = (Q, ∑, δ, q0, F)는 언어 L(M)을 허용하는 NFA입니다. L(M) = L(M')이 되도록 M' = (Q', ∑', q0', δ', F')로 표시되는 동등한 DFA가 있어야 합니다.

NFA를 DFA로 변환하는 단계:

1 단계: 초기에 Q' = ψ

2 단계: Q'에 NFA의 q0을 추가합니다. 그런 다음 이 시작 상태에서 전환을 찾습니다.

스캐너 다음

3단계: Q'에서 각 입력 기호에 대해 가능한 상태 집합을 찾습니다. 이 상태 세트가 Q'에 없으면 이를 Q'에 추가합니다.

4단계: DFA에서 최종 상태는 F(NFA의 최종 상태)를 포함하는 모든 상태가 됩니다.

예시 1:

지정된 NFA를 DFA로 변환합니다.

NFA에서 DFA로 변환

해결책: 주어진 전이 다이어그램에 대해 먼저 전이 테이블을 구성합니다.

상태 0 1
→q0 q0 q1
q1 {q1, q2} q1
*q2 q2 {q1, q2}

이제 우리는 상태 q0에 대한 δ' 전이를 얻을 것입니다.

 δ'([q0], 0) = [q0] δ'([q0], 1) = [q1] 

상태 q1에 대한 δ' 전이는 다음과 같이 얻어집니다.

 δ'([q1], 0) = [q1, q2] (new state generated) δ'([q1], 1) = [q1] 

상태 q2에 대한 δ' 전이는 다음과 같이 얻어집니다.

 δ'([q2], 0) = [q2] δ'([q2], 1) = [q1, q2] 

이제 [q1, q2]에서 δ' 전이를 얻을 것입니다.

 δ'([q1, q2], 0) = δ(q1, 0) ∪ δ(q2, 0) = {q1, q2} ∪ {q2} = [q1, q2] δ'([q1, q2], 1) = δ(q1, 1) ∪ δ(q2, 1) = {q1} ∪ {q1, q2} = {q1, q2} = [q1, q2] 

상태 [q1, q2]는 최종 상태 q2를 포함하므로 최종 상태이기도 합니다. 구성된 DFA의 전환 테이블은 다음과 같습니다.

상태 0 1
→[q0] [q0] [q1]
[q1] [q1, q2] [q1]
*[q2] [q2] [q1, q2]
*[q1, q2] [q1, q2] [q1, q2]

전환 다이어그램은 다음과 같습니다.

NFA에서 DFA로 변환

q2는 도달할 수 없는 상태이기 때문에 상태 q2는 제거될 수 있습니다.

int를 문자열로 변환하는 방법

예시 2:

지정된 NFA를 DFA로 변환합니다.

NFA에서 DFA로 변환

해결책: 주어진 전이 다이어그램에 대해 먼저 전이 테이블을 구성합니다.

상태 0 1
→q0 {q0, q1} {q1}
*q1 ф {q0, q1}

이제 우리는 상태 q0에 대한 δ' 전이를 얻을 것입니다.

 δ'([q0], 0) = {q0, q1} = [q0, q1] (new state generated) δ'([q0], 1) = {q1} = [q1] 

상태 q1에 대한 δ' 전이는 다음과 같이 얻어집니다.

 δ'([q1], 0) = ϕ δ'([q1], 1) = [q0, q1] 

이제 우리는 [q0, q1]에서 δ' 전이를 얻을 것입니다.

 δ'([q0, q1], 0) = δ(q0, 0) ∪ δ(q1, 0) = {q0, q1} ∪ ϕ = {q0, q1} = [q0, q1] 

비슷하게,

 δ'([q0, q1], 1) = δ(q0, 1) ∪ δ(q1, 1) = {q1} ∪ {q0, q1} = {q0, q1} = [q0, q1] 

주어진 NFA에서와 같이 q1은 최종 상태이고 DFA에서는 q1이 존재하는 모든 위치가 최종 상태가 됩니다. 따라서 DFA에서 최종 상태는 [q1] 및 [q0, q1]입니다. 따라서 최종 상태 집합 F = {[q1], [q0, q1]}.

구성된 DFA의 전환 테이블은 다음과 같습니다.

자바 업그레이드 어떻게 해?
상태 0 1
→[q0] [q0, q1] [q1]
*[q1] ф [q0, q1]
*[q0, q1] [q0, q1] [q0, q1]

전환 다이어그램은 다음과 같습니다.

NFA에서 DFA로 변환

DFA 상태의 이름도 변경할 수 있습니다.

가정하다

 A = [q0] B = [q1] C = [q0, q1] 

이러한 새로운 이름으로 DFA는 다음과 같습니다.

NFA에서 DFA로 변환