Почему регулярные выражения определяются с помощью операций объединения, конкатенации и звездочек?


11

Регулярная expresssion определяется рекурсивно

  1. a для некоторых - это регулярное выражение,aΣ
  2. ε - это регулярное выражение,
  3. - это регулярное выражение,
  4. (R1R2) где и - регулярные выражения, регулярное выражение,R1R2
  5. (R1R2) где и - регулярные выражения, регулярное выражение,R1R2
  6. (R1) где - это регулярное выражение.R1

Это определение взято со страницы 64

Сипсер, Майкл. Введение в теорию вычислений, 3-е издание. Cengage Learning, 2012.

Теперь у меня есть следующие вопросы.

  • Почему не определение содержит intersection, complementили reverseоперации?
  • Если мы изменим 4-й элемент на , получим ли мы эквивалентное определение, то есть для каждого регулярного языка есть измененное регулярное выражение и наоборот?R1R2
  • Я знаю, что это определение является полным и четко определенным, но почему оно предпочтительнее других эквивалентных, четко определенных и полных определений?

2
Пожалуйста, ограничьте себя одним вопросом на пост.
Рафаэль

Ответы:


16

1) Если мы также позволяют пересечение и дополнение, то полученные выражения иногда называют расширенные регулярные выражения; поскольку обычные языки закрыты под логическими операциями, они ничего не получают. Это просто синтаксический сахар. Аналогичное заключение справедливо и для обратной операции. Частично причина, по которой в первом случае все другие операции не упоминаются, заключается в том, чтобы сделать определение как можно более простым, чтобы (индуктивные) доказательства не приходилось заботиться о многих случаях. Другая причина может заключаться в том, что если мы разрешаем определенные операции, а другие нет, то в некоторых случаях получаются очень разные (субрегулярные) языковые классы, например, если мы рассмотрим расширенное регулярное выражение без оператора звезды, то мы получим надлежащий подкласс регулярных , так называемые звездообразными бесплатно или апериодические языки см википедии: звезда свободного языка .

2) Если мы сохраним пункты 1. - 6., но просто изменим пункт 4. при использовании пересечения вместо объединения, мы получим надлежащий подкласс обычных языков. Например , мы уже не могли описать язык , поскольку это повлечет за собой объединение и (доказательство см ниже). Если мы допускаем комплементации, все меняется , как мы накидной обратно по законам де Моргана.{ a } { b }L={a,b}{a}{b}

3) Я частично ответил на это в 1), но что вы имеете в виду, когда говорите, что это определение предпочтительнее? Я знаю определения, где 2. опущено (как мы имеем 6., что ), или 3. опущено (как у нас есть )), или оба опущены; так что это не минимально возможное определение (оно также дает нам некоторый синтаксический сахар, поскольку у нас есть дополнительные символы для описания и ).= L ( ¯ X { ε } L()={ε}=L(X¯{ε}

EDIT : Мой первый вышеупомянутый комментарий в 2) был неправ, языками в индуктивном закрытии под , и делать провайдер блокирует не являются подмножествами для некоторых , например , рассмотрим . Тем не менее , мы имеем , что не может быть описано с помощью такого выражения. Я дам доказательство, а именно I доказательство , что если , для некоторого выражения с модифицированным 4 - й пунктом, а затем , если (и , следовательно ) доказательство идет по индукции по выражению*х * х Х L ( б ) = { Ь } L = { , Ь } L = L ( R ) X = { , Ь } Ь { , Ь } L б L . R L ( R 1 )Икс*ИксИксL(aб)знак равно{aб}Lзнак равно{a,б}Lзнак равноL(р)Иксзнак равно{a,б}aб

{a,б}LaбL,
р . Для базового случая он держит бессодержательно, теперь предположим , что имеет место для . Если и , то , следовательно , по предположению индукции мы имеем . Если , то , как мы должны иметь и или наоборот. Предположим, первый случай. Если , а затем путем индукции, следовательно ,L = L ( R 1R 2 ) = L ( R 1 ) L ( R 2 ) { a , b } L { a , b } L ( R i ) , i = 1 , 2 a b L ( R 1 ) L(р1),L(р2)Lзнак равноL(р1р2)знак равноL(р1)L(р2){a,b}L{a,b}L(Ri),i=1,2{ , Ь } L ( R 1R 2 ) = L ( R 1 ) L ( R 2 ) = ⋅ & epsi ; = & epsi ; L ( R 1 ) & epsi ; L ( R 2 ) b L ( R 1 ) aabL(R1)L(R2){a,b}L(R1R2)=L(R1)L(R2)a=aε=εaaL(R1)εL(R2)bL(R1)б = б ⋅ & epsi ; L ( R 1 ) L ( R 2 ) б L ( R 2 ) б L ( R 2 ) L ( R 2 ) L ( R 1 ) L ( R 2 ) a , b LabL(R1)ab=abεL(R1)L(R2) . Теперь предположим , что , то мы имеем по определению . И, наконец , если , то и для некоторого . Если мы находим , по предположению индукции, поэтому предположим , но это дает , аналогичный либо или дает и предположение индукции даетbL(R2)abL(R2)L(R2)L(R1)L(R2)a L ( R 1 ) n b L ( R 2 ) m n , m > 0 n = m = 1 a b L ( R 1 ) n > 1 a L ( R 1 ) m = 1 m > 1 b L ( R 1a,bL(R1)aL(R1)nbL(R2)mn,m>0n=m=1abL(R1)n>1aL(R1)m=1m>1a b L ( R 1 ) L ( R 1 ) bL(R1)abL(R1)L(R1),

Замечание: один из наиболее часто используемых выводов: если , то или . Это следует какследовательно, и или и . В первом случае мы имеем и, следовательно, .u = a w = a 1 = | а | = | ты ж | = | ты | + | ш | | ты | = 0 | ш | = 1 | ты | = 1 | ш | = 0 u = ε a = wa=uwu=aw=a1=|a|=|uw|=|u|+|w||u|=0|w|=1|u|=1|w|=0u=εa=w


2
На самом деле не входит в набор «нерегулярных» языков, но потому что . {a,b}{a,b}{a,b}=(ab)
Ричи

Да, иногда бывает немного сложно увидеть, что можно выразить, а что нет, как при умной комбинации звезды и других, вы можете получить довольно далеко.
StefanH

10

Технический отчет, в котором представлены регулярные языки, регулярные выражения и конечные автоматы, задает ваш вопрос на странице 70:

Читателю может возникнуть вопрос: почему мы выбрали три конкретные операции , E F и E F ?EFEFEF

(Вскоре после этого было отмечено, что E является более удобным оператором, чем EF и эквивалентен по мощности. Поэтому в наши дни мы используем вместо него E .)

Ответ занимает несколько страниц. Во-первых, отмечается, что нужно искать ответ в том, образуют ли полученные языки интересный класс и как они сравниваются с языками, описанными другими способами. На странице 72 отмечается, что отрицание и соединение избыточны: они не добавляют никакой выразительной силы. На странице 80 и далее доказано, что обычные языки - это в точности языки, распознаваемые конечными автоматами.

Другими словами: ответ Стефана можно смело считать окончательным, поскольку он уже был приведен в докладе, в котором впервые были представлены эти концепции.


Спасибо за ссылку. Я всегда объясняю своим студентам, что операции - это естественные абстракции из последовательности выбора (например, if-then-else) (инструкции следуют друг за другом) и итерации (например, while-do). Но, видимо, это не упоминается Клини?
Хендрик янв

Я просто парень, который посмотрел статью Клин и был удивлен, что все в моем ответе уже было там. Я не знаю ничего другого. Поэтому я полагаю, что ответом будет прочитать статью и, возможно, поискать что-нибудь, что Клин уже писал по этому поводу.
reinierpost

4

Из этого отбора операторов (объединения, конкатенации и звезды) можно построить НКА с размером линейной к размеру выражения. С другой стороны, если вы добавите пересечение и комплементацию, размер эквивалентного автомата может привести к взрыву, не элементарно, который, как правило, не желательно.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.