공집합 언어 ∅
와 {ε}
언어는 완전히 다릅니다. 개념상 헷갈릴 수 있지만, 엄연히 다른 정규언어입니다.
개념 | 설명 | 포함하는 문자열 |
---|---|---|
∅ |
아무 문자열도 포함하지 않는 언어 | 없음 |
{ε} |
단 하나의 문자열 ε (빈 문자열)만 포함하는 언어 | ε |
구분 | ∅ |
{ε} |
---|---|---|
문자열 포함 여부 | 아무것도 없음 | ε 포함 |
크기 | 0 (empty set) | 1 (singleton set) |
DFA로 인식 가능? | 가능 (초기 상태가 non-accepting) | 가능 (초기 상태가 accepting) |
정규표현식 | ∅ , () |
ε |
언어 크기 (cardinality) | 0 | 1 |
Star-Closure (∅* ) |
{ε} (주의!) |
{ε} |
∅* = {ε}는 자주 틀리는 포인트야.
공집합에 대해 클리니 스타를 적용하면 **"0번 반복"**에 해당하는
ε
은 항상 포함됨.따라서
∅* = {ε}
, 하지만∅+ = ∅
L1 = ∅
: 어떤 입력 문자열도 받아들이지 않음L2 = {ε}
: 입력이 아무것도 없을 때만 받아들임aε
와 a∅
정규표현식 aε
와 a∅
는 모두 형식적으로 유효한 정규표현식이지만, 이들이 의미하는 언어는 완전히 다릅니다.
aε
는 왜 유효하며 무엇을 의미하는가?정규표현식의 결합 규칙에 따르면, 두 정규표현식 r₁
, r₂
가 있을 때 r₁r₂
도 정규표현식입니다.
a
는 단일 문자 a
를 포함하는 언어 {a}
를 의미하고,ε
는 빈 문자열 하나만 포함하는 언어 {ε}
를 의미합니다.