정규 표현식, 정규 문법 및 유한 오토마타는 같은 것에 대해 단순히 세 가지 다른 형식입니다. 이들 중 하나를 다른 것으로 변환하는 알고리즘이 있습니다.
우리가 세 가지를 모두 가지고있는 기본적인 이유는 Kleene (이 결과 또는 그 일부를 Kleene의 정리라고 함)에서 입증 한 등가의 첫 번째 세트 (여러 가지 다른 형식주의도 있음)와 함께 독립적으로 만들어 졌기 때문입니다.
따라서 이러한 맥락에서 모델을 실행하려는 방법에 따라 모두 일반 언어의 문자열을 인식하거나 생성하며 수학적으로 차이가 없습니다.
물론 형식의 세부 사항으로 인해 특정 작업에 한 모델이 다른 모델보다 사용하기가 더 쉬운 경우가 있습니다. 또한 인간의 머리에서 작동하는 방식은 컴퓨터와 같은 약간 다른 유한 오토마타 "느낌", 더 작은 하위 문자열로 문자열을 구성하는 것과 같은 정규식 "느낌"및보다 전통적인 문법과 같은 규칙적인 문법 "느낌" 언어로 된 문장의 파생 또는 분류 (당연히 역사를 볼 때).
두 가지를 비교하기 위해 두 가지를 정의 해 보겠습니다.
정규식
따라서 정규식은 다음과 같이 재귀 적으로 정의됩니다.
- 는 정규식입니다∅
- 은 정규식입니다ε
- 모든위한 정규 표현식입니다 ∈ Σㅏ∈ Σ
- 경우 와 B는 정규 표현식은있다
ㅏ비
- 는 정규식입니다 (연결).A ⋅ B
- 는 정규식입니다 (교대)| B
- 정규 표현식입니다 (149) 클린의 별 (Kleene star)ㅏ※
일부 의미론 (예 : 연산자가 문자열을 얻기 위해 해석하는 방법)과 함께 일반 언어에서 문자열을 생성하는 방법을 얻습니다.
정규 문법
( N, Σ , P, S∈ N)엔Σ에스피Σ※피
올바른 선형 문법
BCaε
- B→a
- B→aC
- B→ε
왼쪽 선형 문법
B→Ca
숙고 할 것
따라서 이러한 정의를보고 함께 사용하면 정규식이 규칙과 일치하거나 문자열을 한 번에 조금씩 처리하는 방법처럼 보일 수 있습니다.
S
그러나 이것들은 실제로 동일한 근본적인 일을하고 있으며, 함수의 은유를 보는 방법은 실제로 당신에게 달려 있습니다.