본문으로 건너뛰기
22 / DISCRETE LAB
먼저 알아두면 좋아요 · 연결된 선수 단원의 집합·함수·정수 계산
단원 목록 (103) · 오토마타·형식언어
이해하는 속도로 읽으세요.개념도이론실험확인 문제
BUILD YOUR INTUITION

먼저 그림으로 이해하기

한 번에 한 단계씩 살펴보세요.

전체 입력을 기억하는 대신 앞으로의 판단에 필요한 유한 상태만 남깁니다.

0101q0q1
화살표 숫자: 소비한 기호 · 이중 원: 수용 상태 · 주황 원: 최종 상태 노드 위치와 선 길이는 수치 크기를 나타내지 않습니다.
consumedsymbolstate
0ε0
111
201
310

final state = 0

고정 기준 예제의 그림과 수치입니다. 각 단계에서 같은 그림의 의미를 차례로 살펴보세요. 고정된 기준 예제이며 아래 실험의 설정과 독립적입니다.
1 / 4

상태의 의미

기준 언어는 지금까지 읽은 1의 홀짝만 기억합니다.

q₀=even, q₁=odd

실험에서 확인하기 →
이 단원 목차

문자열과 언어

알파벳 Σ는 기호의 집합이고 Σ는 모든 유한 문자열의 집합입니다. 언어 L은 Σ의 부분집합입니다. 빈 문자열 ε는 길이 0이고, 문자 “0”은 길이 1입니다. 입력이 없다는 것과 숫자 0이라는 기호를 읽는 것은 다릅니다.

이 단원은 Σ={0,1}인 결정적 유한 오토마타 DFA를 사용합니다. DFA는 유한 상태 집합 Q, 알파벳 Σ, 전이 함수 δ:Q×Σ→Q, 초기 상태 q₀, 수용 상태 집합 F로 지정합니다. 각 상태·기호 쌍에 다음 상태가 정확히 하나 있어야 합니다.

상태는 필요한 기억만 남긴다

첫 언어는 1의 개수가 짝수인 모든 문자열입니다. 전체 문자열을 저장할 필요 없이 지금까지의 개수가 짝수인지 홀수인지만 기억하면 됩니다. q₀는 짝수, q₁은 홀수입니다. 기호 0은 상태를 유지하고 1은 두 상태를 바꿉니다. 초기 상태와 수용 상태는 모두 q₀입니다.

입력 101을 읽으면 q₀→q₁→q₁→q₀입니다. 마지막 상태가 수용 상태이므로 수용합니다. 중간에 수용 상태를 방문했다는 것만으로 전체 문자열이 수용되는 것은 아닙니다. 입력을 모두 읽은 뒤 판정합니다.

문자열 전체에 대한 전이

한 기호 전이를 문자열로 확장합니다.

δ∗(q,ε)=q,δ∗(q,wa)=δ(δ∗(q,w),a).\delta^*(q,\varepsilon)=q,\qquad \delta^*(q,wa)=\delta(\delta^*(q,w),a).

수용 조건은 δ*(q₀,w)∈F입니다. 입력 길이에 대한 귀납법으로 짝수 오토마타의 상태가 읽은 접두사의 1 개수 홀짝과 일치함을 증명할 수 있습니다. 초기 ε는 짝수이고, 0은 홀짝을 유지하며 1은 바꿉니다. 이 불변식이 임의 길이에 대한 정확성 근거입니다. 화면의 길이 8 이하 실험만이 근거는 아닙니다.

01로 끝나는 언어

두 번째 오토마타는 접미사 01의 일치 정보를 기억합니다. q₀는 유용한 접미사가 없음, q₁은 마지막 기호가 0, q₂는 마지막 두 기호가 01인 상태입니다. q₂만 수용 상태입니다.

어느 상태에서든 0을 읽으면 q₁로 갑니다. q₁에서 1을 읽으면 q₂, 다른 상태에서 1을 읽으면 q₀입니다. q₂에서 0은 q₁, 1은 q₀입니다. 예를 들어 010은 q₁에서 끝나 거부되고 0101은 q₂에서 끝나 수용됩니다. 이전에 한 번 01이 나왔다는 조건이 아니라 끝이 01이라는 조건입니다.

실습의 정수 입력을 문자열로 읽기

입력 정수 w의 하위 N비트를 길이 N에 맞게 앞에 0을 채워 표시합니다. w=5,N=3이면 101, w=1,N=3이면 001입니다. N=0이면 w 값과 관계없이 ε입니다. 높은 비트는 이 실습의 문자열에 포함되지 않습니다. 실제 소비한 기호는 표와 식에 명시됩니다.

이중 원은 수용 상태, 주황 테두리는 마지막 상태입니다. 화살표의 0과 1은 확률이나 비용이 아니라 소비하는 기호입니다. 아래 표는 시작 상태와 각 기호 뒤의 상태를 나열합니다.

단어 개수와 확률을 구분하기

짝수 언어의 길이 N≥1인 단어 수는 2^(N−1)입니다. 마지막 비트를 뒤집으면 짝수와 홀수 단어가 일대일 대응하므로 절반입니다. N=0에는 ε 하나가 수용됩니다.

01 언어에서는 N≥2일 때 마지막 두 기호가 고정되고 앞 N−2개는 자유이므로 2^(N−2)개입니다. N<2이면 0개입니다. 이 수를 확률로 바꾸려면 입력 단어의 분포가 필요합니다.

DFA가 인식하는 언어를 정규언어라 합니다. 무제한 중첩 괄호처럼 입력 길이와 함께 기억이 계속 필요한 언어에는 DFA만으로 충분하지 않을 수 있습니다. 유한 예시에서 잘 동작하는 기계를 모든 형식언어의 인식기로 일반화하지 마세요.

AI 연결과 확인 문제

구조화 출력의 일부 형식 제약, 토큰 필터, 프로토콜 상태 검사는 유한 상태로 다룰 수 있습니다. 그러나 토큰화와 문자화는 다른 알파벳이며, DFA가 문법적 형식을 보장해도 사실성이나 의미 정확성을 보장하지는 않습니다.

  1. ε는 짝수 언어에서 수용되나요? 그렇습니다. 1의 수가 0입니다.
  2. 길이 4의 01 언어 단어 수는? 4개입니다.
  3. 입력 011은 01 언어에서 수용되나요? 아니요. 최종 q₀입니다.

추가 읽기: MIT Theory of Computation. 두 작은 기계와 불변식은 직접 구성한 예제입니다.

CHECK YOUR UNDERSTANDING

설명할 수 있나요?

실험 설정과 무관한 기준 예제를 묻습니다. 답을 고르고 설명을 확인해보세요.

1. 빈 문자열의 길이는?
2. 짝수 개의 1 언어에서 101의 최종 상태는?

선택한 답과 학습 표시는 이 브라우저에 저장됩니다. 다시 풀거나 표시를 해제할 수 있습니다.