Formal Language는 특정 Alphabet 위의 String을 원소로 가지는 집합이다. 자연어에서는 문장의 의미가 중요하지만, Formal Language에서는 문자열이 정해진 규칙을 만족하여 집합에 속하는지가 핵심이다.

Alphabet 로 만들 수 있는 모든 유한 String의 집합을 라고 한다.

이므로 에는 항상 Empty String이 포함된다.

Empty String을 제외한 모든 String의 집합은 이다.

이면 는 다음과 같이 시작한다.

Language

Alphabet 위의 Language 의 부분집합이다.

예를 들어 1로 끝나는 Binary String의 Language는

로 나타낼 수 있다.

Language는 유한할 수도 있고 무한할 수도 있다. 은 유한 Language이고, 은 무한 Language이다.

집합 연산

Language는 Set이므로 일반적인 Set Operation을 적용할 수 있다.

Complement를 정의할 때에는 기준 Universe가 필요하다. Alphabet 가 고정되어 있다면

이다.

Language Concatenation

두 Language의 Concatenation은 각 Language에서 하나씩 String을 골라 이어 붙인 결과의 집합이다.

예를 들어

이면

이다. Language Concatenation도 일반적으로 교환법칙을 만족하지 않는다.

Language Power

로 정의한다. 이면

이다.

Kleene Star와 Positive Closure

Language를 0번 이상 반복하여 Concatenate한 모든 결과를 Kleene Star라고 한다.

0번 반복한 결과 때문에 가 항상 성립한다.

한 번 이상 반복한 결과는 Positive Closure이다.

예를 들어 이면

이다.

Reversal

String 의 Reversal은

이다. Language의 Reversal은 각 String을 뒤집은 집합이다.

Empty Language와 Empty String Language

다음 두 Language는 결과가 크게 다르다.

첫 식에서는 선택할 String 자체가 없고, 두 번째 식에서는 을 골라 이어 붙일 수 있기 때문이다.

정리

  • Formal Language는 의 부분집합이다.
  • 는 Empty String을 포함하고 는 포함하지 않는다.
  • Language는 Set Operation과 Concatenation을 가진다.
  • Kleene Star는 0번 이상의 반복이므로 항상 Empty String을 포함한다.

연습 문제

1번

, 일 때 , 을 구한다.

2번

일 때 , , 를 구하고 에 속하는지 판단한다.

풀이

1번

두 결과가 다르므로 Language Concatenation이 교환법칙을 만족하지 않는 예이기도 하다.

2번

로 분해할 수 있으므로 이다.