정규 표현식
정규 언어를 표현하는 방법은 크게 세 가지(Grammar, Automata, RE)가 있으며, 그중 RE는 가장 선언적(Declarative)이고 직관적인 방법으로, 복잡한 언어의 패턴을 간결하게 묘사할 수 있다
정규 표현식의 재귀적 정의 알파벳 에 대해 다음 규칙을 만족하는 문자열을 정규 표현식이라 한다
- 기본 정규 표현 (Primitive RE):
- : 공집합
- : 공 문자열
- : 각 알파벳 심볼
- 재귀적 규칙 (Recursive Rules):
- 합집합 (Union):
- 결합 (Concatenation): (또는 )
- 클레이니 스타 (Kleene Star):
- 괄호 (Parentheses):
- 특정 문자열이 RE가 되려면 반드시 위 기본 표현에서 시작해 유한 번의 규칙 적용을 거쳐 유도되어야 한다
RE의 성질 및 연산 우선 순위
수학의 사칙연산처럼 RE에도 연산 순서와 대수적 성질이 존재한다
연산 우선순위
- 클레이니 스타 (): 가장 높음
- 결합 (): 중간
- 합집합 (): 가장 낮음
- 예시: 에서 가 먼저 계산된 후 연산이 이루어진다
주요 성질 및 항등원
- 항등원 (Identity): *
- 공집합과의 결합: (어떤 문자열도 유도할 수 없게 됨)
- 분배 법칙 (Distributive Law):
RE에서 NFA로의 변환
정규 표현식은 박스(Box) 형태의 NFA 조각들을 조립하여 시각화할 수 있다

기본 변환 규칙
- 합집합 (): 새로운 시작 상태에서 두 박스()로 전이를 갈라지게 하여 병렬로 연결한다

- 결합 (): 박스의 출구를 박스의 입구와 전이로 직렬 연결한다

- 클레이니 스타 (): * 박스의 끝에서 입구로 돌아가는 전이 추가 (반복)
- 시작에서 끝으로 바로 가는 전이 추가 (0회 반복 허용)

NFA를 정규 표현식으로 변환
GTG (Generalized Transition Graph)
NFA에서 정규 표현식을 유도하기 위해 사용하는 확장된 형태의 그래프이다
특징: 일반적인 NFA는 전이 레이블로 심볼()이나 를 사용하지만, GTG는 전이 레이블로 정규 표현식(RE) 자체를 가질 수 있다
상태 간 전이: 만약 두 상태 사이에 직접적인 길이 없다면 을 추가하여 모든 상태가 연결된 것으로 간주한다
의의: 모든 NFA는 GTG로 변환 가능하며, 이를 통해 최종적으로 RE를 추출할 수 있습니다. 이는 NFA, DFA, RE의 표현 능력이 동일함을 증명하는 근거가 된다
상태 제거법
복잡한 오토마타를 단순화하여 정규 표현식을 찾아내는 핵심 알고리즘이다
기본 원리 (2-State GTG 공식) 상태가 두 개()만 남았을 때, 시작 상태에서 최종 상태로 가는 전체 정규 표현식 은 다음과 같이 정의된다
- : 시작 상태에서의 자기 루프(Self-loop)
- : 시작 상태에서 최종 상태로 가는 전이
- : 최종 상태에서 시작 상태로 돌아오는 전이
- : 최종 상태에서의 자기 루프
단계별 제거 과정(3개 이상의 상태)
- 중간 상태 선택: 시작 상태()와 최종 상태()가 아닌 중간 상태 를 선택한다
- 경로 업데이트: 를 거쳐가는 모든 경로를 RE 결합 연산으로 대체하여 남은 상태들 사이의 전이를 업데이트한다
- 예를 들어, 경로가 있다면 새로운 전이는 가 된다
- 반복: 상태가 2개 남을 때까지 위 과정을 반복한다
유용한 공식
예제: 는 짝수, 는 홀수
