- •Лекция 1 Введение
- •1. Предварительные сведения
- •1.1. Множества
- •1.2. Операции и отношения
- •1.2.1. Операции на множествах
- •1.2.2. Отношения на множествах
- •1.3. Множества цепочек
- •1.3.1. Цепочки
- •1.3.2. Операции над цепочками
- •1.4. Языки
- •1.4.1. Определения
- •1.4.2. Операции над языком
- •2. Теория языков программирования
- •2.1. Способы определения языков
- •2.2. Грамматики
- •2.3. Грамматики с ограничениями
- •2.4. Регулярные множества
- •2.4.1. Определения
- •2.4.2. Уравнения с регулярными коэффициентами
2.4.2. Уравнения с регулярными коэффициентами
При работе с языками часто удобно пользоваться уравнениями, коэффициентами и неизвестными которых служат множества. Такие уравнения будем называть уравнениями с регулярными коэффициентами
X = aX + b,
где aиb– регулярные выражения. Можно проверить прямой подстановкой, что решением этого уравнения будетa*b:
aa*b + b = (aa* + e)b = a*b,
т.е. получаем одно и то же множество. Таким же образом можно установить и решение системы уравнений.
Регулярные множества – множества, определенные регулярными выражениями. Регулярные множества являются языками, порождаемыми праволинейнымиграмматиками.
Определение. Систему уравнений с регулярными коэффициентами назовемстандартной системойс множеством неизвестныхΔ = {X1, X2, …, Xn}, если она имеет вид:
X1 = α10 + α11X1 + α12X2 + … + α1nXn
X2 = α20 + α21X1 + α22X2 + … + α2nXn
………………………………………
Xn = αn0 + αn1X1 + αn2X2 + … + αnnXn
где αij– регулярные выражения в алфавите, не пересекающемся сΔ. Коэффициентами уравнения являются выраженияαij.
Если αij = , то в уравнении дляXiнет члена, содержащегоXj. Аналогично, еслиαij = e, то в уравнении дляXiчлен, содержащийXj– это простоXj. Иными словами,играет роль коэффициента 0, аe– роль коэффициента 1 в обычных системах линейных уравнений.
Алгоритм решения:
Вход. Стандартная системаQуравнений с регулярными коэффициентами в алфавитеΣи множеством неизвестныхΔ = {X1, X2, …, Xn}.
Выход. Решение системыQ.
Метод: Аналог метода решения системы линейных уравнений методом исключения Гаусса.
Шаг 1. Положить i = 1.
Шаг 2. Если i = n, перейти к шагу 4. В противном случае с помощью тождеств леммы записать уравнения дляXiв виде
Xi = αXi + β,
где α– регулярное выражение в алфавитеΣ, аβ– регулярное выражение вида
β0 + βi+1Xi+1 + … + βnXn,
причем все βi– регулярные выражения в алфавитеΣ. Затем в правых частях для уравненийXi+1, …, Xnзаменим Xiрегулярным выражениемα*β.
Шаг 3. Увеличить iна 1 и вернуться к шагу 2.
Шаг 4. Записать уравнение для Xnв видеXn = αXn + β, гдеαиβ– регулярные выражения в алфавитеΣ. Перейти к шагу 5 (при этомi = n).
Шаг 5. Уравнение для Xiимеет видXi = αXi + β, гдеαиβ– регулярные выражения в алфавитеΣ. Записать на выходеXi = α*β, в уравнениях дляXi–1, …, X1подставляяα*βвместоXi.
Шаг 6. Если i = 1, остановиться, в противном случае уменьшитьiна 1 и вернуться к шагу 5.
Однако следует отметить, что не все уравнения с регулярными коэффициентами обладают единственным решением. Например, если
X = αX + β
является уравнением с регулярными коэффициентами и αозначает множество, содержащее пустую цепочку, тоX = α*(β + γ)будет решением этого уравнения для любого γ. Таким образом, уравнение имеет бесконечно много решений. В ситуациях такого рода мы будем брать наименьшее решение, которое назовемнаименьшей неподвижной точкой. В нашем случае наименьшая неподвижная точка –α*β.
