콘텐츠로 이동

NFA to DFA 변환: 0(0|1)*1

변환 계약

  • 알파벳은 {0, 1}이며 시작 상태, 수용 상태와 모든 NFA 전이를 아래 표와 그림으로 고정합니다.
  • DFA의 한 상태는 NFA 상태의 집합입니다. ε-전이가 있으면 각 이동 전후에 ε-closure를 계산합니다.
  • 아직 나타나지 않은 전이 결과도 공집합 상태를 포함해 기록해야 완전한 DFA가 됩니다.
  • 완료 기준은 시작 부분집합에서 도달 가능한 모든 부분집합을 처리하고, 원본 NFA와 결과 DFA가 같은 수용·거부 표본을 통과하는 것입니다.

NFA to DFA

1. 정규표현식 및 언어 설명

항목 내용
알파벳(Σ) {0, 1}
정규표현식 0(0|1)*1
L(0(0|1)*1) {w ∈ {0,1}* | w는 0으로 시작하고 1로 끝나며 길이 ≥ 2}

2. NFA 상태도

flowchart LR
    subgraph "NFA for 0(0|1)*1"
        direction LR
        I([Start]) --> A
        A -- "0" --> B
        B -- "0,1" --> B
        B -- "1" --> C((C))
    end

NFA 설명

  • **A**에서 0을 받으면 **B**로 갑니다. (0으로 시작)
  • **B**에서는 0이나 1을 받으면 계속 **B**에 머무릅니다. ((0|1)* 부분)
  • B**에서 1을 받으면 **C(최종 상태)로 갈 수도 있습니다. (1로 끝남)
  • 즉, B**에서 1을 받으면 **B**와 **C 두 곳으로 갈 수 있으므로 NFA입니다.

3. Subset Construction (NFA → DFA)

단계별 DFA 상태 도출

1) S₀ =

입력 다음 상태
0 {B} (S₁)
1 오류(∅, Trap)

2) S₁ =

입력 다음 상태
0 {B} (자기 자신)
1 {B, C} (S₂)

3) S₂ = {B, C} (수락 상태)

입력 다음 상태
0 {B} (S₁)
1 {B, C} (자기 자신)

4. DFA 상태 변환 표

DFA 상태 NFA 집합 수락 상태? 0 입력 → 1 입력 →
A {A} B Trap(∅)
B {B} B BC
BC {B, C} B BC

5. DFA 상태도

flowchart LR
    subgraph "Final DFA"
        direction LR
        I([Start]) --> A
        A -- "0" --> B
        B -- "0" --> B
        B -- "1" --> BC((BC))
        BC -- "0" --> B
        BC -- "1" --> BC
    end

6. 예제 문자열 판단

입력 문자열 DFA 진행 경로 Accept?
0110 A → Trap(∅)
1101 A → Trap(∅)
01011010101 A→B→B→BC→B→B→BC→B→B→BC