Затваряне на регулярен език
Имаме регулярен език L. Ще докажем, че затварянето на езика L е отново регулярен език.
Какво е затваряне на език
Затварянето на езика L означаваме с L∗. Затварянето съдържа всички думи, които могат да се получат чрез конкатенация на краен брой думи от езика L. Затварянето можем да определим като:
където ∘ означава операцията конкатенация. Затварянето съдържа и празната дума, т.е. ϵ.
Формален метод
Ще действаме много подобно на случая с конкатенацията на езици. Само че вместо да свързваме два различни автомата, свързваме един автомат — от крайните състояния на автомата водим ε-преходи към началното състояние на автомата. Затварянето обаче трябва да съдържа и празната дума. Как да го уредим? Можем да направим началното състояние крайно. Тогава такъв автомат би приел празната дума, но би могъл да приеме и някоя друга дума. Затова вместо това създаваме ново начално състояние и от това ново начално състояние водим ε-преход към първоначалното начално състояние.
Имаме регулярен език L1 и автомат, който приема този език:
Построяваме недетерминиран автомат A = ⟨Q, Σ, δ, qs, F⟩, за който е в сила:
- Q = Q1 ∪ {qs}
- Σ= Σ1
- F = F1 ∪ {qs}
Преходната функция δ определяме така:
Пример
Нека имаме този автомат A1, който приема думите 00 или 11:
Затварянето на езика L(A1) е следователно езикът на всички думи, които се състоят от двойки 00 и 11, например 0000, 110011, 11110000 и т.н. Автомата, който би приемал това затваряне, бихме построили така, че да създадем ново начално състояние qs с ε-преход към бившето начално състояние q0 и да добавим ε-преходи от състоянията q3 и q4 към състоянието q0:
Можем да проверим, че този автомат наистина приема думите 0000, 110011, 11110000, но не приема например думата 1010.
Източници
Глави: Затвореност на регулярните езици, Обединение на регулярни езици, Сечение на регулярни езици, Разлика на регулярни езици, Допълнение на регулярен език, Конкатенация на регулярни езици, Затваряне на регулярен език