알파벳 (형식 언어)
1. 개요
알파벳은 형식 언어 내의 문자열에 나타날 수 있는 모든 기호의 집합이다. 알파벳 Σ가 주어졌을 때, 알파벳 Σ에 대한 길이 n의 모든 문자열 집합은 Σn으로 표시되며, 모든 유한 문자열의 집합은 클레이니 스타 연산자를 사용하여 Σ*로 표시된다. 알파벳은 형식 언어, 오토마타 및 반자동기계의 사용에 중요하며, 오토마톤의 입력 문자열을 구성하는 데 필요하다. 오토마타, 정규 표현식 또는 형식 문법을 문자열 처리 알고리즘의 일부로 사용할 때, 알파벳은 처리될 텍스트의 문자 집합 또는 허용되는 문자의 하위 집합으로 간주될 수 있다.
2. 표기법
L이 형식 언어, 즉 유한 길이 문자열의 집합(무한일 수도 있음)이라면, L의 알파벳은 L 내의 어떤 문자열에도 나타날 수 있는 모든 기호의 집합이다.
예를 들어, L이 C 프로그래밍 언어의 모든 변수 식별자 집합이라면, L의 알파벳은 { a, b, c, ..., x, y, z, A, B, C, ..., X, Y, Z, 0, 1, 2, ..., 7, 8, 9, _ }이다.
알파벳 가 주어졌을 때, 알파벳 에 대한 길이 의 모든 문자열 집합은 으로 표시된다. 모든 유한 문자열(길이에 상관없이)의 집합 는 클레이니 스타 연산자를 사용하여 로 표시되며, 의 클레이니 클로저라고도 불린다. 표기법 는 알파벳 에 대한 모든 무한 시퀀스 집합을 나타내며, 는 모든 유한 또는 무한 시퀀스의 집합 를 나타낸다.
예를 들어, 이진 알파벳 {0,1}을 사용하면, 문자열 ε, 0, 1, 00, 01, 10, 11, 000 등은 모두 알파벳의 클레이니 클로저에 속한다(여기서 ε는 빈 문자열을 나타낸다).
3. 응용
알파벳은 형식 언어, 오토마타 및 반자동기계의 사용에 중요하다. 대부분의 경우, 결정적 유한 오토마톤(DFAs)과 같은 오토마타의 인스턴스를 정의하려면 오토마톤의 입력 문자열을 구성할 알파벳을 지정해야 한다. 이러한 응용 프로그램에서 알파벳은 일반적으로 유한 집합이어야 하지만, 그 외에는 제한이 없다.
오토마타, 정규 표현식 또는 형식 문법을 문자열 처리 알고리즘의 일부로 사용할 때, 알파벳은 이러한 알고리즘으로 처리될 텍스트의 문자 집합 또는 문자 집합에서 허용되는 문자의 하위 집합으로 간주될 수 있다.
4. 참고 문헌
* 존 E. 홉크로프트와 제프리 D. 울먼, 오토마타 이론, 언어 및 계산 입문(Introduction to Automata Theory, Languages, and Computation), 애디슨-웨슬리 출판, 리딩 매사추세츠, 1979.