✖

Затваряне на регулярен език

Имаме регулярен език L. Ще докажем, че затварянето на езика L е отново регулярен език.

Какво е затваряне на език

Затварянето на езика L означаваме с L∗. Затварянето съдържа всички думи, които могат да се получат чрез конкатенация на краен брой думи от езика L. Затварянето можем да определим като:

L∗={a1∘a2∘⋯∘an|ai∈L,n∈N0},

където ∘ означава операцията конкатенация. Затварянето съдържа и празната дума, т.е. ϵ.

Формален метод

Ще действаме много подобно на случая с конкатенацията на езици. Само че вместо да свързваме два различни автомата, свързваме един автомат — от крайните състояния на автомата водим ε-преходи към началното състояние на автомата. Затварянето обаче трябва да съдържа и празната дума. Как да го уредим? Можем да направим началното състояние крайно. Тогава такъв автомат би приел празната дума, но би могъл да приеме и някоя друга дума. Затова вместо това създаваме ново начално състояние и от това ново начално състояние водим ε-преход към първоначалното начално състояние.

Имаме регулярен език L1 и автомат, който приема този език:

A1=⟨Q1,Σ1,δ1,q0,F1⟩

Построяваме недетерминиран автомат A = ⟨Q, Σ, δ, qs, F⟩, за който е в сила:

  • Q = Q1 ∪ {qs}
  • Σ= Σ1
  • F = F1 ∪ {qs}

Преходната функция δ определяме така:

δ(q,a)={δ1(q,a)акоq∈Q1∧q∉F1δ1(q,a)акоq∈F1∧a≠ϵδ1(q,a)∪{q0}акоq∈F1∧a=ϵ{q0}акоq=qs∧a=ϵ∅акоq=qs∧a≠ϵ

Пример

Нека имаме този автомат A1, който приема думите 00 или 11:

Затварянето на езика L(A1) е следователно езикът на всички думи, които се състоят от двойки 00 и 11, например 0000, 110011, 11110000 и т.н. Автомата, който би приемал това затваряне, бихме построили така, че да създадем ново начално състояние qs с ε-преход към бившето начално състояние q0 и да добавим ε-преходи от състоянията q3 и q4 към състоянието q0:

Можем да проверим, че този автомат наистина приема думите 0000, 110011, 11110000, но не приема например думата 1010.

Източници

Глави: Затвореност на регулярните езици, Обединение на регулярни езици, Сечение на регулярни езици, Разлика на регулярни езици, Допълнение на регулярен език, Конкатенация на регулярни езици, Затваряне на регулярен език