강의/Theory of Computation

Construction of Minimal DFA Examples

studylida 2025. 2. 2. 03:22

1. 문제의 개요

이 문제는 짝수 개의 1을 포함하는 문자열을 인식하는 DFA(Deterministic Finite Automaton, 결정적 유한 자동자)를 구성하는 과정에 대한 설명이다. 주어진 언어를 분석하여 규칙을 찾고, 이를 수학적으로 모델링한 후, DFA를 통해 인식 가능한 형태로 변환하는 것이 목표이다.


2. 언어의 패턴 분석

주어진 언어는 짝수 개의 1을 포함하는 모든 문자열을 포함한다.
이를 분석하기 위해 몇 가지 예제 문자열을 살펴보면 다음과 같다.

문자열 길이 포함 여부
ε (빈 문자열) 0 ✔ (짝수 개)
1 1 ✘ (홀수 개)
11 2 ✔ (짝수 개)
111 3 ✘ (홀수 개)
1111 4 ✔ (짝수 개)
101 3 ✘ (홀수 개)
1100 4 ✔ (짝수 개)

이 패턴을 통해 1의 개수가 짝수일 때만 수락하는 DFA를 설계할 수 있음을 알 수 있다.


3. DFA의 구성

DFA는 5개의 요소(Q, Σ, δ, q₀, F)로 정의된다.

  1. Q (상태 집합): DFA가 가질 수 있는 모든 상태
    • q₀: 짝수 개의 1을 포함한 상태 (수락 상태)
    • q₁: 홀수 개의 1을 포함한 상태
  2. Σ (입력 알파벳): 허용되는 입력 기호 집합
    • {0, 1} (이진 문자열)
  3. δ (전이 함수): 현재 상태와 입력 기호에 따라 다음 상태를 결정
    현재 상태 입력 다음 상태
    q₀ 0 q₀ (0은 상태 변화 없음)
    q₀ 1 q₁ (1을 추가하면 홀수 개)
    q₁ 0 q₁ (0은 상태 변화 없음)
    q₁ 1 q₀ (1을 추가하면 다시 짝수 개)
  4. q₀ (초기 상태): DFA가 시작하는 상태 (짝수 개의 1을 포함한 상태)
  5. F (수락 상태 집합): 입력을 수락하는 상태
    • F = {q₀} (짝수 개의 1이 있는 상태만 수락)

4. DFA의 동작 원리

DFA는 입력 문자열을 왼쪽에서 오른쪽으로 한 문자씩 처리하며 상태를 전이한다.

  • 처음 q₀에서 시작한다.
  • 1을 읽으면 q₁으로 이동 (홀수 개).
  • 다시 1을 읽으면 q₀으로 이동 (짝수 개).
  • 0은 상태를 유지한다.

예제 입력을 통해 DFA의 동작을 확인할 수 있다.

입력 문자열 상태 변화 최종 상태 수락 여부
ε q₀ q₀
1 q₀ → q₁ q₁
11 q₀ → q₁ → q₀ q₀
101 q₀ → q₀ → q₁ q₁
1100 q₀ → q₁ → q₀ → q₀ q₀

5. DFA 상태 전이 다이어그램

DFA의 상태 전이를 시각적으로 표현하면 다음과 같다.

    +---+     1      +---+
    | q₀ | ----------> | q₁ |
    +---+             +---+
      | 0               | 0
      v                 v
    +---+     1      +---+
    | q₀ | <---------- | q₁ |
    +---+             +---+
  • q₀는 짝수 개의 1이 포함된 상태이며, 수락 상태이다.
  • q₁는 홀수 개의 1이 포함된 상태이며, 비수락 상태이다.
  • 0을 입력하면 상태는 유지된다.
  • 1을 입력하면 상태가 전이된다.

6. DFA의 특징

  • DFA는 결정적(Deterministic)이므로, 모든 입력에 대해 하나의 유일한 경로를 가진다.
  • 짝수 개의 1을 포함하는 모든 문자열을 정확하게 판별할 수 있다.
  • 0은 상태를 변화시키지 않으므로 1의 개수만 신경 쓰면 된다.

1. 문제 개요

이 문제에서는 주어진 언어(𝐿)에 대한 DFA(Determinisitic Finite Automaton, 결정적 유한 자동자)를 설계하는 과정이 설명된다.
언어 𝐿의 구성 원리를 분석한 후, 해당 문자열을 인식하는 DFA를 정의하는 것이 목표이다.


2. 주어진 언어(𝐿)의 분석

주어진 언어의 규칙을 분석하면 다음과 같은 패턴이 보인다.

  • 언어의 문자열 패턴: 1 0이 반복되는 형태
  • 가능한 문자열 예제:
    • ε (빈 문자열)
    • 10
    • 10 10
    • 10 10 10
    • 10 10 10 10
    • ...

즉, "10" 패턴이 반복되는 모든 문자열을 포함하는 언어이다.
이 언어는 무한한 길이의 문자열을 포함하며, DFA가 이를 인식해야 한다.


3. DFA 구성

DFA는 5개의 요소(Q, Σ, δ, q₀, F)로 정의된다.

  1. Q (상태 집합)
    • q₀: 초기 상태 (ε 포함)
    • q₁: 1을 입력한 상태
    • q₂: 10을 완성한 상태 (수락 상태)
    • q_d: 잘못된 입력이 들어온 경우의 죽음(Dead) 상태
  2. Σ (입력 알파벳)
    • {0, 1} (이진 문자열)
  3. δ (전이 함수, 상태 전이 규칙)
    현재 상태 입력 다음 상태
    q₀ 1 q₁
    q₀ 0 q_d (잘못된 입력)
    q₁ 0 q₂
    q₁ 1 q_d
    q₂ 1 q₁
    q₂ 0 q_d
    q_d 0,1 q_d (모든 추가 입력은 거부)
  4. q₀ (초기 상태)
    • q₀에서 시작.
  5. F (수락 상태 집합)
    • F = {q₂} (완전한 "10" 패턴이 형성된 상태)

4. DFA 동작 원리

DFA는 입력을 한 글자씩 읽으며 상태를 변경한다.

  • 1을 입력하면 q₀ → q₁ 이동
  • 0을 입력하면 q₁ → q₂ 이동 (이제 "10"이 완성됨 → 수락 상태)
  • 또다시 1을 입력하면 다시 q₁으로 이동하며 반복됨.
  • 잘못된 입력이 들어오면 q_d로 이동하여 거부됨.
예제 테스트
입력 문자열 상태 변화 최종 상태 수락 여부
ε q₀ q₀ ✘ (빈 문자열)
1 q₀ → q₁ q₁
10 q₀ → q₁ → q₂ q₂
1010 q₀ → q₁ → q₂ → q₁ → q₂ q₂
100 q₀ → q₁ → q₂ → q_d q_d
110 q₀ → q₁ → q_d q_d

5. DFA 상태 전이 다이어그램

    (q₀) --1--> (q₁) --0--> (q₂) --1--> (q₁)
      |                         |
      0                         0
      ↓                         ↓
    (q_d) <--1,0--> (q_d) <--1,0--> (q_d)
  • q₀: 시작 상태, 1이 입력되면 q₁으로 이동.
  • q₁: 0이 입력되면 q₂로 이동하여 "10" 패턴이 완성됨.
  • q₂: 1이 입력되면 다시 q₁으로 이동하여 "10" 패턴을 반복.
  • q_d: 잘못된 입력이 들어왔을 때 도달하는 죽음 상태.

1. 문제 개요

이 문제에서는 짝수 개의 1을 포함하고, 최소한 하나 이상의 0을 포함하는 문자열을 인식하는 DFA(Determinisitic Finite Automaton, 결정적 유한 자동자)를 설계하는 과정이 설명된다.
즉, 언어 ( L )은 다음과 같은 특징을 가진다.

  • 문자열 내 1의 개수는 짝수여야 한다.
  • 반드시 최소 하나 이상의 0을 포함해야 한다.
  • 1과 0의 개수에는 제한이 없으며, 0의 개수는 자유롭게 증가할 수 있다.

2. 주어진 언어(𝐿)의 분석

주어진 언어의 규칙을 분석하면 다음과 같은 패턴이 보인다.

  1. 문자열에서 1의 개수는 반드시 짝수여야 한다.
    • 예: 11, 1100, 1010, 111100
    • 짝수 개의 1을 포함하지 않는 문자열(1, 101, 1001)은 거부됨.
  2. 최소한 하나의 0이 포함되어야 한다.
    • 예: 110, 100, 1010 (0이 포함됨)
    • 0이 포함되지 않은 문자열(11, 1111)은 거부됨.
  3. 가능한 문자열 예제
    • ✔ 허용되는 문자열: 110, 100, 1010, 111100
    • ❌ 거부되는 문자열: 1, 11, 101, 1111 (0 없음), 1001 (1의 개수 홀수)

3. DFA 구성

DFA는 5개의 요소(Q, Σ, δ, q₀, F)로 정의된다.

  1. Q (상태 집합)
    • q₀: 초기 상태 (0을 만나기 전)
    • q₁: 홀수 개의 1을 포함한 상태
    • q₂: 짝수 개의 1을 포함하고 최소한 하나의 0을 포함한 상태 (수락 상태)
    • q_d: 잘못된 입력이 들어온 경우의 죽음(Dead) 상태
  2. Σ (입력 알파벳)
    • {0, 1} (이진 문자열)
  3. δ (전이 함수, 상태 전이 규칙)
    현재 상태 입력 다음 상태
    q₀ 1 q₁
    q₀ 0 q_d (잘못된 입력)
    q₁ 1 q₂
    q₁ 0 q_d
    q₂ 1 q₁
    q₂ 0 q₂
    q_d 0,1 q_d (모든 추가 입력은 거부)
  4. q₀ (초기 상태)
    • q₀에서 시작.
  5. F (수락 상태 집합)
    • F = {q₂} (짝수 개의 1을 포함하고 최소한 하나의 0이 포함된 상태)

4. DFA 동작 원리

DFA는 입력을 한 글자씩 읽으며 상태를 변경한다.

  1. 처음 q₀에서 시작한다.
  2. 1을 입력하면 q₀ → q₁ 이동 (현재 1의 개수 홀수)
  3. 다시 1을 입력하면 q₁ → q₂ 이동 (현재 1의 개수 짝수, 수락 상태)
  4. 0을 입력하면 q₂ → q₂ 유지 (0은 추가 가능)
  5. 잘못된 입력이 들어오면 q_d로 이동하여 거부됨.
예제 테스트
입력 문자열 상태 변화 최종 상태 수락 여부
ε q₀ q₀ ✘ (빈 문자열)
1 q₀ → q₁ q₁
11 q₀ → q₁ → q₂ q₂ ✘ (0 없음)
110 q₀ → q₁ → q₂ → q₂ q₂
1010 q₀ → q₁ → q₂ → q₁ → q₂ q₂
100 q₀ → q₁ → q_d q_d
1111 q₀ → q₁ → q₂ → q₁ → q₂ q₂ ✘ (0 없음)

5. DFA 상태 전이 다이어그램

    (q₀) --1--> (q₁) --1--> (q₂) --0--> (q₂)
      |                         |
      0                         0
      ↓                         ↓
    (q_d) <--1,0--> (q_d) <--1,0--> (q_d)
  • q₀: 시작 상태, 1이 입력되면 q₁으로 이동.
  • q₁: 1이 입력되면 q₂로 이동하여 짝수 개의 1이 완성됨.
  • q₂: 0이 입력되면 q₂에 머무름(0의 개수는 자유롭게 증가 가능).
  • q_d: 잘못된 입력이 들어왔을 때 도달하는 죽음 상태.

1. 문제 개요

이 문제에서는 짝수 개의 0을 포함하고, 1의 개수가 3의 배수인 문자열을 인식하는 DFA(Determinisitic Finite Automaton, 결정적 유한 자동자)를 설계하는 과정이 설명된다.
즉, 언어 ( L )은 다음과 같은 특징을 가진다.

  • 문자열 내 0의 개수는 짝수여야 한다.
  • 문자열 내 1의 개수는 반드시 3의 배수여야 한다.
  • 0과 1의 개수에는 제한이 없지만, 위 조건을 반드시 만족해야 한다.

2. 주어진 언어(𝐿)의 분석

주어진 언어의 규칙을 분석하면 다음과 같은 패턴이 보인다.

  1. 문자열에서 0의 개수는 반드시 짝수여야 한다.
    • 예: 00, 001, 1100, 100110
    • 홀수 개의 0을 포함한 문자열(0, 0010, 10100)은 거부됨.
  2. 문자열에서 1의 개수는 반드시 3의 배수여야 한다.
    • 예: 000111, 110111, 000111111
    • 1의 개수가 3의 배수가 아닌 문자열(00011, 0011, 1111)은 거부됨.
  3. 가능한 문자열 예제
    • ✔ 허용되는 문자열: 00111, 110000111, 000111111, 110011110
    • ❌ 거부되는 문자열: 0, 01, 111, 0001 (짝수 개의 0이 아니거나, 1의 개수가 3의 배수가 아님)

3. DFA 구성

DFA는 5개의 요소(Q, Σ, δ, q₀, F)로 정의된다.

  1. Q (상태 집합)
    • q₀: 초기 상태 (0의 개수가 짝수이고, 1의 개수가 3의 배수)
    • q₁: 0의 개수가 홀수이고, 1의 개수가 3의 배수
    • q₂: 0의 개수가 짝수이고, 1의 개수가 3의 배수가 아님 (즉, 1의 개수가 1 mod 3)
    • q₃: 0의 개수가 홀수이고, 1의 개수가 3의 배수가 아님
    • q₄: 0의 개수가 짝수이고, 1의 개수가 3의 배수가 아님 (즉, 1의 개수가 2 mod 3)
    • q_d: 잘못된 입력이 들어온 경우의 죽음(Dead) 상태
  2. Σ (입력 알파벳)
    • {0, 1} (이진 문자열)
  3. δ (전이 함수, 상태 전이 규칙)
    현재 상태 입력 다음 상태
    q₀ 0 q₁
    q₀ 1 q₂
    q₁ 0 q₀
    q₁ 1 q₃
    q₂ 0 q₄
    q₂ 1 q_d
    q₃ 0 q_d
    q₃ 1 q₀
    q₄ 0 q₂
    q₄ 1 q_d
    q_d 0,1 q_d (모든 추가 입력은 거부)
  4. q₀ (초기 상태)
    • q₀에서 시작.
  5. F (수락 상태 집합)
    • F = {q₀} (짝수 개의 0을 포함하고, 1의 개수가 3의 배수인 상태)

4. DFA 동작 원리

DFA는 입력을 한 글자씩 읽으며 상태를 변경한다.

  1. 처음 q₀에서 시작한다.
  2. 0을 입력하면 q₀ → q₁ 이동 (현재 0의 개수 홀수)
  3. 1을 입력하면 q₁ → q₃ 이동 (현재 1의 개수 1 mod 3)
  4. 0을 입력하면 q₃ → q_d 이동 (잘못된 문자열)
  5. 1을 입력하면 q₃ → q₀ 이동 (현재 1의 개수가 3의 배수)
예제 테스트
입력 문자열 상태 변화 최종 상태 수락 여부
ε q₀ q₀ ✔ (빈 문자열)
0 q₀ → q₁ q₁
00 q₀ → q₁ → q₀ q₀
00111 q₀ → q₁ → q₀ → q₂ → q₄ → q₀ q₀
111 q₀ → q₂ → q_d q_d
000111 q₀ → q₁ → q₀ → q₁ → q₀ → q₂ → q_d q_d

5. DFA 상태 전이 다이어그램

    (q₀) --0--> (q₁) --0--> (q₀)
      |                         |
      1                         1
      v                         v
    (q₂) --0--> (q₄) --0--> (q₂)
      |                         |
      1                         1
      v                         v
    (q_d) <--1,0--> (q_d) <--1,0--> (q_d)
  • q₀: 시작 상태, 짝수 개의 0과 1의 개수가 3의 배수.
  • q₁: 홀수 개의 0과 1의 개수가 3의 배수.
  • q₂: 짝수 개의 0과 1의 개수가 1 mod 3.
  • q₃: 홀수 개의 0과 1의 개수가 1 mod 3.
  • q₄: 짝수 개의 0과 1의 개수가 2 mod 3.
  • q_d: 거부 상태.

1. 문제 개요

이 문제에서는 0으로 시작하고, 1이 등장한 이후에는 다시 0이 포함될 수 없는 문자열을 인식하는 DFA(Deterministic Finite Automaton, 결정적 유한 자동자)를 설계하는 과정이 설명된다.
즉, 언어 ( L )은 다음과 같은 특징을 가진다.

  • 문자열은 0으로 시작해야 한다.
  • 0이 등장한 후에는 1이 등장할 수 있다.
  • 1이 등장한 이후에는 다시 0이 나올 수 없다.
  • 빈 문자열(ε)도 유효한 문자열이다.

2. 주어진 언어(𝐿)의 분석

주어진 언어의 규칙을 분석하면 다음과 같은 패턴이 보인다.

  1. 문자열이 0으로 시작해야 한다.
    • 예: 0, 00, 0011
    • 1로 시작하는 문자열(1, 10, 11)은 거부됨.
  2. 1이 나온 이후에는 0이 포함될 수 없다.
    • 예: 0001, 011, 001111
    • 100, 1100과 같은 문자열은 거부됨.
  3. 가능한 문자열 예제
    • ✔ 허용되는 문자열: ε (빈 문자열), 0, 00, 01, 0001, 0111
    • ❌ 거부되는 문자열: 1, 10, 100, 1100

3. DFA 구성

DFA는 5개의 요소(Q, Σ, δ, q₀, F)로 정의된다.

  1. Q (상태 집합)
    • q₀: 초기 상태 (수락 상태), 0을 만나기 전의 상태
    • q₁: 0을 하나 이상 포함한 상태 (수락 상태)
    • q₂: 1을 포함한 상태 (수락 상태)
    • q_d: 1이 나온 후에 다시 0이 나오는 경우의 죽음(Dead) 상태
  2. Σ (입력 알파벳)
    • {0, 1} (이진 문자열)
  3. δ (전이 함수, 상태 전이 규칙)
    현재 상태 입력 다음 상태
    q₀ 0 q₁
    q₀ 1 q_d (잘못된 입력)
    q₁ 0 q₁
    q₁ 1 q₂
    q₂ 0 q_d
    q₂ 1 q₂
    q_d 0,1 q_d (모든 추가 입력은 거부)
  4. q₀ (초기 상태)
    • q₀에서 시작.
  5. F (수락 상태 집합)
    • F = {q₀, q₁, q₂} (조건을 만족하는 문자열이 도달하는 상태)

4. DFA 동작 원리

DFA는 입력을 한 글자씩 읽으며 상태를 변경한다.

  1. 처음 q₀에서 시작한다.
  2. 0을 입력하면 q₀ → q₁ 이동 (0을 포함한 상태)
  3. 1을 입력하면 q₁ → q₂ 이동 (1을 포함한 상태)
  4. 다시 0을 입력하면 q₂ → q_d 이동 (잘못된 문자열)
  5. 1을 계속 입력하면 q₂에 머무름.
예제 테스트
입력 문자열 상태 변화 최종 상태 수락 여부
ε q₀ q₀ ✔ (빈 문자열)
0 q₀ → q₁ q₁
00 q₀ → q₁ → q₁ q₁
01 q₀ → q₁ → q₂ q₂
0001 q₀ → q₁ → q₁ → q₁ → q₂ q₂
10 q₀ → q_d q_d
100 q₀ → q_d → q_d q_d
1100 q₀ → q_d → q_d → q_d q_d

5. DFA 상태 전이 다이어그램

    (q₀) --0--> (q₁) --0--> (q₁)
      |                         |
      1                         1
      v                         v
    (q_d) --0,1--> (q_d) <--0--> (q₂)
                             |
                             v
                            (q_d)
  • q₀: 시작 상태, 빈 문자열 또는 0을 포함한 문자열을 처리.
  • q₁: 0을 포함한 상태.
  • q₂: 1을 포함한 상태 (1 이후에는 0이 나올 수 없음).
  • q_d: 거부 상태.

1. 문제 개요

이 문제에서는 최소한 하나의 0을 포함하고, 0 이후에는 임의의 개수의 1이 올 수 있는 문자열을 인식하는 DFA(Deterministic Finite Automaton, 결정적 유한 자동자)를 설계하는 과정이 설명된다.
즉, 언어 ( L )은 다음과 같은 특징을 가진다.

  • 최소한 하나의 0을 포함해야 한다.
  • 0 이후에는 1이 올 수 있으며, 1의 개수는 제한이 없다.
  • 1로만 이루어진 문자열은 허용되지 않는다.
  • 0이 하나 이상 포함된 문자열은 유효하다.

2. 주어진 언어(𝐿)의 분석

주어진 언어의 규칙을 분석하면 다음과 같은 패턴이 보인다.

  1. 문자열에 최소 하나 이상의 0이 포함되어야 한다.
    • 예: 0, 01, 0011
    • 1로만 이루어진 문자열(1, 11, 111)은 거부됨.
  2. 0이 포함된 이후에는 임의의 개수의 1이 포함될 수 있다.
    • 예: 0, 01, 0111, 001, 000111
    • 0 이후에는 1이 여러 개 추가될 수 있음.
  3. 가능한 문자열 예제
    • ✔ 허용되는 문자열: 0, 00, 01, 0001, 0111
    • ❌ 거부되는 문자열: 1, 11, 111 (최소한 하나의 0이 없음)

3. DFA 구성

DFA는 5개의 요소(Q, Σ, δ, q₀, F)로 정의된다.

  1. Q (상태 집합)
    • q₀: 초기 상태 (0을 만나기 전의 상태)
    • q₁: 최소한 하나의 0을 포함한 상태 (수락 상태)
    • q_d: 1로 시작하는 문자열을 처리하는 죽음(Dead) 상태
  2. Σ (입력 알파벳)
    • {0, 1} (이진 문자열)
  3. δ (전이 함수, 상태 전이 규칙)
    현재 상태 입력 다음 상태
    q₀ 0 q₁
    q₀ 1 q_d (잘못된 입력)
    q₁ 0 q₁
    q₁ 1 q₁
    q_d 0,1 q_d (모든 추가 입력은 거부)
  4. q₀ (초기 상태)
    • q₀에서 시작.
  5. F (수락 상태 집합)
    • F = {q₁} (최소한 하나의 0을 포함한 상태)

4. DFA 동작 원리

DFA는 입력을 한 글자씩 읽으며 상태를 변경한다.

  1. 처음 q₀에서 시작한다.
  2. 0을 입력하면 q₀ → q₁ 이동 (최소 하나의 0을 포함한 상태)
  3. 1을 입력하면 q₁ → q₁ 유지 (0 이후에는 1을 자유롭게 추가 가능)
  4. 1으로 시작하면 q₀ → q_d 이동 (잘못된 문자열)
  5. q_d에 도달하면 이후의 모든 입력을 거부한다.
예제 테스트
입력 문자열 상태 변화 최종 상태 수락 여부
ε q₀ q₀ ✘ (빈 문자열)
0 q₀ → q₁ q₁
00 q₀ → q₁ → q₁ q₁
01 q₀ → q₁ → q₁ q₁
0001 q₀ → q₁ → q₁ → q₁ → q₁ q₁
1 q₀ → q_d q_d
111 q₀ → q_d → q_d → q_d q_d
101 q₀ → q_d → q_d → q_d q_d

5. DFA 상태 전이 다이어그램

    (q₀) --0--> (q₁) --0--> (q₁)
      |                         |
      1                         1
      v                         v
    (q_d) --0,1--> (q_d) <--1--> (q₁)
  • q₀: 시작 상태, 최소한 하나의 0이 필요한 상태.
  • q₁: 최소한 하나의 0이 포함된 상태 (수락 상태).
  • q_d: 잘못된 입력이 들어온 경우의 거부 상태.

1. 문제 개요

이 문제에서는 문자열의 전체 길이가 짝수이며, 0이 먼저 등장한 후 1이 나오는 문자열을 인식하는 DFA(Deterministic Finite Automaton, 결정적 유한 자동자)를 설계하는 과정이 설명된다.
즉, 언어 ( L )은 다음과 같은 특징을 가진다.

  • 문자열의 전체 길이가 짝수여야 한다.
  • 0이 먼저 등장한 후, 1이 나와야 한다.
  • 0과 1의 개수에 대한 특정한 제한은 없지만, 전체 문자열의 길이는 짝수여야 한다.

2. 주어진 언어(𝐿)의 분석

주어진 언어의 규칙을 분석하면 다음과 같은 패턴이 보인다.

  1. 문자열의 길이는 짝수여야 한다.
    • 예: ε, 00, 01, 1100
    • 길이가 홀수인 문자열(0, 1, 000, 111)은 거부됨.
  2. 0이 먼저 등장한 후, 1이 포함될 수 있다.
    • 예: 00, 01, 0011, 1100
    • 10, 100과 같은 문자열은 거부됨.
  3. 가능한 문자열 예제
    • ✔ 허용되는 문자열: ε (빈 문자열), 00, 01, 0011, 1100
    • ❌ 거부되는 문자열: 0, 1, 000, 111

3. DFA 구성

DFA는 5개의 요소(Q, Σ, δ, q₀, F)로 정의된다.

  1. Q (상태 집합)
    • q₀: 초기 상태 (수락 상태), 짝수 개의 문자를 포함한 상태
    • q₁: 홀수 개의 문자를 포함한 상태
    • q₂: 짝수 개의 문자를 포함하며, 최소한 하나 이상의 1을 포함한 상태 (수락 상태)
    • q_d: 1이 먼저 등장하는 등 규칙을 위반한 문자열을 처리하는 죽음(Dead) 상태
  2. Σ (입력 알파벳)
    • {0, 1} (이진 문자열)
  3. δ (전이 함수, 상태 전이 규칙)
    현재 상태 입력 다음 상태
    q₀ 0 q₁
    q₀ 1 q_d (잘못된 입력)
    q₁ 0 q₀
    q₁ 1 q₂
    q₂ 0 q_d
    q₂ 1 q₁
    q_d 0,1 q_d (모든 추가 입력은 거부)
  4. q₀ (초기 상태)
    • q₀에서 시작.
  5. F (수락 상태 집합)
    • F = {q₀, q₂} (조건을 만족하는 문자열이 도달하는 상태)

4. DFA 동작 원리

DFA는 입력을 한 글자씩 읽으며 상태를 변경한다.

  1. 처음 q₀에서 시작한다.
  2. 0을 입력하면 q₀ → q₁ 이동 (홀수 개의 문자 포함 상태)
  3. 1을 입력하면 q₁ → q₂ 이동 (짝수 개의 문자 포함 상태)
  4. 1을 계속 입력하면 q₂ → q₁ 이동
  5. q_d에 도달하면 이후의 모든 입력을 거부한다.
예제 테스트
입력 문자열 상태 변화 최종 상태 수락 여부
ε q₀ q₀ ✔ (빈 문자열)
0 q₀ → q₁ q₁
00 q₀ → q₁ → q₀ q₀
01 q₀ → q₁ → q₂ q₂
0011 q₀ → q₁ → q₀ → q₁ → q₂ q₂
1 q₀ → q_d q_d
111 q₀ → q_d → q_d → q_d q_d
101 q₀ → q_d → q_d → q_d q_d

5. DFA 상태 전이 다이어그램

    (q₀) --0--> (q₁) --0--> (q₀)
      |                         |
      1                         1
      v                         v
    (q_d) --0,1--> (q_d) <--1--> (q₂)
  • q₀: 시작 상태, 짝수 개의 문자를 포함한 상태.
  • q₁: 홀수 개의 문자를 포함한 상태.
  • q₂: 짝수 개의 문자를 포함하며, 최소한 하나의 1을 포함한 상태 (수락 상태).
  • q_d: 잘못된 입력이 들어온 경우의 거부 상태.

'강의 > Theory of Computation' 카테고리의 다른 글

Non-Deterministic PushDown Automata (NFA)  (0) 2025.02.05
Construct Minimal DFA  (0) 2025.02.01
TOC Fundamentals, Regular Languages  (0) 2025.01.28
Introduction  (0) 2025.01.26